Master/bots:
- Enter each master/bot pair, separated by line. For example:
- ChromiumPerf/Nexus5
- ClankInternal/mako
- ...
-
-
-
-
Tests:
- Enter each test path in full, separated by line. For example:
- memory.top_10_mobile/memory:chrome:all_processes:reported_by_os:system_memory:ashmem:proportional_resident_size_avg
- memory.top_10_mobile/memory:chrome:all_processes:reported_by_os:system_memory:java_heap:proportional_resident_size_avg
- ...
-
-
-
-
-
Test layout:
- Enter a JSON dict to specify the layout. For example:
- {
- "system_health.memory_mobile/foreground/ashmem": ["Foreground", "Ashmem"]
- ...
- }
- The usage is: "test": ["Category", "UserFriendlyName"]
-
-
-
-
- Submit
-
- No data available for {{missing}}. Note that some data is only visible
- when signed in with a chromium.org account, which is linked to a google user.
+ No data available for {{missing}}. Please sign in with a chromium.org account or a google.com account.
Internal DNS client enabled:
-
-
- (No valid configuration found)
+
+ Internal DNS client enabled for insecure queries (Do53):
+
+
+
+ Internal DNS client enabled for secure queries (DoH):
+
+
+
+ Disabled DoH providers:
+
@@ -40,7 +54,7 @@
Current State
Addresses
TTL
Expires
-
Network Isolation Key
+
Network Anonymization Key
Network changes
@@ -50,6 +64,7 @@
Current State
+
-
-
"
- )
- assert isinstance(soup.style.string, Stylesheet)
- assert isinstance(soup.script.string, Script)
-
- soup = self.soup(
- ""
- )
- assert isinstance(soup.style.string, Stylesheet)
- # The contents of the style tag resemble an HTML comment, but
- # it's not treated as a comment.
- self.assertEqual("", soup.style.string)
- assert isinstance(soup.style.string, Stylesheet)
-
- def test_pickle_and_unpickle_identity(self):
- # Pickling a tree, then unpickling it, yields a tree identical
- # to the original.
- tree = self.soup("foo")
- dumped = pickle.dumps(tree, 2)
- loaded = pickle.loads(dumped)
- self.assertEqual(loaded.__class__, BeautifulSoup)
- self.assertEqual(loaded.decode(), tree.decode())
-
- def assertDoctypeHandled(self, doctype_fragment):
- """Assert that a given doctype string is handled correctly."""
- doctype_str, soup = self._document_with_doctype(doctype_fragment)
-
- # Make sure a Doctype object was created.
- doctype = soup.contents[0]
- self.assertEqual(doctype.__class__, Doctype)
- self.assertEqual(doctype, doctype_fragment)
- self.assertEqual(
- soup.encode("utf8")[:len(doctype_str)],
- doctype_str
- )
-
- # Make sure that the doctype was correctly associated with the
- # parse tree and that the rest of the document parsed.
- self.assertEqual(soup.p.contents[0], 'foo')
-
- def _document_with_doctype(self, doctype_fragment, doctype_string="DOCTYPE"):
- """Generate and parse a document with the given doctype."""
- doctype = '' % (doctype_string, doctype_fragment)
- markup = doctype + '\n
foo
'
- soup = self.soup(markup)
- return doctype.encode("utf8"), soup
-
- def test_normal_doctypes(self):
- """Make sure normal, everyday HTML doctypes are handled correctly."""
- self.assertDoctypeHandled("html")
- self.assertDoctypeHandled(
- 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"')
-
- def test_empty_doctype(self):
- soup = self.soup("")
- doctype = soup.contents[0]
- self.assertEqual("", doctype.strip())
-
- def test_mixed_case_doctype(self):
- # A lowercase or mixed-case doctype becomes a Doctype.
- for doctype_fragment in ("doctype", "DocType"):
- doctype_str, soup = self._document_with_doctype(
- "html", doctype_fragment
- )
-
- # Make sure a Doctype object was created and that the DOCTYPE
- # is uppercase.
- doctype = soup.contents[0]
- self.assertEqual(doctype.__class__, Doctype)
- self.assertEqual(doctype, "html")
- self.assertEqual(
- soup.encode("utf8")[:len(doctype_str)],
- b""
- )
-
- # Make sure that the doctype was correctly associated with the
- # parse tree and that the rest of the document parsed.
- self.assertEqual(soup.p.contents[0], 'foo')
-
- def test_public_doctype_with_url(self):
- doctype = 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"'
- self.assertDoctypeHandled(doctype)
-
- def test_system_doctype(self):
- self.assertDoctypeHandled('foo SYSTEM "http://www.example.com/"')
-
- def test_namespaced_system_doctype(self):
- # We can handle a namespaced doctype with a system ID.
- self.assertDoctypeHandled('xsl:stylesheet SYSTEM "htmlent.dtd"')
-
- def test_namespaced_public_doctype(self):
- # Test a namespaced doctype with a public id.
- self.assertDoctypeHandled('xsl:stylesheet PUBLIC "htmlent.dtd"')
-
- def test_real_xhtml_document(self):
- """A real XHTML document should come out more or less the same as it went in."""
- markup = b"""
-
-
-Hello.
-Goodbye.
-"""
- soup = self.soup(markup)
- self.assertEqual(
- soup.encode("utf-8").replace(b"\n", b""),
- markup.replace(b"\n", b""))
-
- def test_namespaced_html(self):
- """When a namespaced XML document is parsed as HTML it should
- be treated as HTML with weird tag names.
- """
- markup = b"""content"""
- soup = self.soup(markup)
- self.assertEqual(2, len(soup.find_all("ns1:foo")))
-
- def test_processing_instruction(self):
- # We test both Unicode and bytestring to verify that
- # process_markup correctly sets processing_instruction_class
- # even when the markup is already Unicode and there is no
- # need to process anything.
- markup = u""""""
- soup = self.soup(markup)
- self.assertEqual(markup, soup.decode())
-
- markup = b""""""
- soup = self.soup(markup)
- self.assertEqual(markup, soup.encode("utf8"))
-
- def test_deepcopy(self):
- """Make sure you can copy the tree builder.
-
- This is important because the builder is part of a
- BeautifulSoup object, and we want to be able to copy that.
- """
- copy.deepcopy(self.default_builder)
-
- def test_p_tag_is_never_empty_element(self):
- """A
tag is never designated as an empty-element tag.
-
- Even if the markup shows it as an empty-element tag, it
- shouldn't be presented that way.
- """
- soup = self.soup("
")
- self.assertFalse(soup.p.is_empty_element)
- self.assertEqual(str(soup.p), "")
-
- def test_unclosed_tags_get_closed(self):
- """A tag that's not closed by the end of the document should be closed.
-
- This applies to all tags except empty-element tags.
- """
- self.assertSoupEquals("
", "
")
- self.assertSoupEquals("", "")
-
- self.assertSoupEquals(" ", " ")
-
- def test_br_is_always_empty_element_tag(self):
- """A tag is designated as an empty-element tag.
-
- Some parsers treat as one tag, some parsers as
- two tags, but it should always be an empty-element tag.
- """
- soup = self.soup(" ")
- self.assertTrue(soup.br.is_empty_element)
- self.assertEqual(str(soup.br), " ")
-
- def test_nested_formatting_elements(self):
- self.assertSoupEquals("")
-
- def test_double_head(self):
- html = '''
-
-
-Ordinary HEAD element test
-
-
-
-Hello, world!
-
-
-'''
- soup = self.soup(html)
- self.assertEqual("text/javascript", soup.find('script')['type'])
-
- def test_comment(self):
- # Comments are represented as Comment objects.
- markup = "
foobaz
"
- self.assertSoupEquals(markup)
-
- soup = self.soup(markup)
- comment = soup.find(text="foobar")
- self.assertEqual(comment.__class__, Comment)
-
- # The comment is properly integrated into the tree.
- foo = soup.find(text="foo")
- self.assertEqual(comment, foo.next_element)
- baz = soup.find(text="baz")
- self.assertEqual(comment, baz.previous_element)
-
- def test_preserved_whitespace_in_pre_and_textarea(self):
- """Whitespace must be preserved in
Felix Tian ºÍ Tracy ·ò¸¾¡£³öÔºµ±Ìì¸øÎÒÃÇ×¼±¸ÁËöêÓ㣬Öí½Å£¬ºòÍ·¹½¡£¼¸ºõºÍÎÒÃÇͬʱµ½¼Ò£¬Ò»À´¾Í°ÑÌÀ×÷ÉϹø¡£ºóÀ´ÓÖÉÓÀ´×ÔÖƵľÆÄ𣬿ɰ®µÄº¢×ÓÒ·þ¡£ËûÃǵÄÅ®¶ù±ÈÎÒÃÇ´óÁ½¸öÔ£¬Õâô¾ÃÒÔÀ´ Felix ·ò¸¾¸øÁËÎÒÃǺܶàÇÐÉíµÄ½Ìµ¼£¬ºÍ¹ØÐÄ¡£Ôڴ˸Ðл¡£
+
Allen Luo£¬ÎÒµÄÐֵܡ£¶à´ÎÀ´¿´Íû£¬¸øº¢×Ó´øÀ´Ðí¶àÀñÎïºì°ü£¬ÔÚҽԺʱ»¹¸øÎÒÃÇ×¼±¸¸âµã¡£Í¬Ê±£¬ÔÚÕâÒ»ÄêÀ¸øÁËÎÒÃǺܶà×÷аְֵľÑé¡¢Ðĵúͺܶà¹ØÐÄ¡£Ôڴ˸Ðл¡£Jeffery Luo ?2004 ÄêÁùÔ³öÉúÓھɽðɽ¶ùͯҽԺ¡£
+
À´×Ô Johnson & Johnson µÄ Dan Wang£¬Chih Chang ¶¼¸øÁ˺¢×ӿɹ۵ĺì°ü£¬Chih Chang ÓÖ¸øÎÒÃÇ´ó´óÔö¼ÓÁËÒ»´ÎÐÔÄò²¼µÄ´¢±¸¡£Ôڴ˸Ðл¡£
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
In his book Slowness, Kundera gives this ingenious dissection of our obsession with speed:
+
+¡the man hunched over his motorcycle can focus only on the present instant of his flight; he is caught in a fragment of time cut off from both the past and the future; he is wrenched from the continuity of time; he is outside time; in other words, he is in a state of ecstasy; in that state he is unaware of his age, his wife, his children, his worries¡As opposed to a motorcyclist, the runner is always present in his body, forever required to think about his blisters, his age, more conscious than ever of himself and of his time of life. This all changes when man delegates the faculty of speed to a machine: from then on, his own body is outside the process, and he gives over to a speed that is noncorporeal, nonmaterial, pure speed, speed itself, ecstasy speed.
+
+ Memory and consciousness are precious; they give you the context, the dimensions, the latitude and the longitude to reflect on everything you experiences. The unreflected life is not worth living, says Socrates. But when you flip the coin, get rid of all you memory and self-consciousness, will you arrive in hell? On the contrary, you get Kundera¡¯s ecstasy of speed. Actually, I¡¯d rather call it the ecstasy of escape. When you think about it, speed, ski, movies, alcohol, drug, orgasm, rock n¡¯ roll, all these hobbies and obsessions that make you high, all they really do is send you away. They drag you out of you everyday life, set you free from your body and its desires, and push your soul to drift. It¡¯s like riding the train: you are traveling from point A to point B without giving an effort, without a direct purpose or a destination. You can stick your head out of the window like a dog, you can inhale the wind, and say hello to the passing by electric poles, trees, cows, stars, mountains, rivers, and tunnels¡You don¡¯t want to arrive anywhere, and you wish the train goes on forever. In fact, if I were the guy in Groundhog Day, I would just take a train ride every day. Life can be kind of wonderful. In this sense, death is not so scary and different after all.
+ So what is all this about? It¡¯s about music. Hehe, slack and fainthearted as I often am, I found music my favorite way to escape. Certain combinations of rhythm and melody send me directly on train. Like Van Hunt¡¯s Dust, Remy Shand¡¯s Rocksteady, and Movin Gaye¡¯s Where are we going. They all have the magic to tune me into ecstasy for about 4 minutes. The train never arrives as long as the music goes on, and on, and on¡¡¡¡±I am dust blown away over the edge¡¡±
A. ·Û±ý¡£ÔÚʹÓõķ۱ýÖУ¬¶ÔÓðÎ÷µÄ·Û±ý¸Ð¾õ²»ÊǺܺ×-Í¿ÔÚÁ³ÉϵÄÑÕÉ«Ì«°×£¬ºÜ²»×ÔÈ»£¬¶øÇÒ£¬¶à´ÎÌýÖÜΧµÄÅóÓÑ̸µ½£¬ÓðÎ÷µÄ·Û±ýº¬Ç¦Á¿Ì«¸ß£¬¶ÔƤ·ôÓк¦¡£ËùÒÔ£¬ÒÔºó²»´òËãʹÓÃÓðÎ÷µÄ·Û±ý¡£
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
‘ÎÛ‚n‚r
+Windows Server 2003 Datacenter EditionAWindows Server 2003 Enterprise EditionAWindows Server 2003 Standard EditionAWindows Server 2003 Web EditionAWindows XP Home EditionAWindows XP Professional
+‚Ç‚¤‚â‚ç‚l‚…‚½‚ñ‚Í—DG‰ß‚¬‚é‚Ì‚ÅŠÜ‚Ü‚ê‚Ä‚¢‚È‚¢‚悤‚Å‚·B‚â‚Á‚½‚Ë‚l‚…A‚·‚²‚¢‚¼‚l‚…A‚ª‚ñ‚΂ê‚l‚…B
]]>
+
+
+
+
+
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/SHIFT_JIS/brag.zaka.to.xml b/third_party/gsutil/third_party/chardet/tests/SHIFT_JIS/brag.zaka.to.xml
new file mode 100644
index 00000000000..ea2729d03d4
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/SHIFT_JIS/brag.zaka.to.xml
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+BRAG ZAKATO HEADLINE
+Writing and Editing for Future Technologies.
+
+tag:blogger.com,1999:blog-5867717
+2005-05-08T03:32:18Z
+Blogger
+
+
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
ŽdŽ–‚ð’T‚µ‚Ä‚¢‚éƒtƒ‰ƒiƒKƒ“‚ɑ΂µ‚Ä(9'25)
+uŽdŽ–‚Í’§í‚È‚èv
+Anything else is always something better
+
+
ˆêl‚ÌŽq‚É‚¼‚Á‚±‚ñ‚É‚È‚è‚»‚¤‚É‚È‚Á‚Ä‚¢‚éƒtƒ‰ƒiƒKƒ“‚ɑ΂µ‚Ä(37'46)
+u‚¨‚¢‚µ‚¢—‚É‚²’ˆÓv
+Never tell tales about a waoman.She'll hear you no matter how far away she is
+
+
ƒtƒ‰ƒiƒKƒ“‚ªÄ‰ï‚µ‚½ƒRƒOƒ‰ƒ“‚ɑ΂µ‚Ä(43'15)
+u‚½‚Æ‚¦‹Á‚¢‚Ä‚àƒN[ƒ‹‚Év
+Never show surprise.Never lose your cool.
+
+
ƒRƒOƒ‰ƒ“‚̃tƒ‰ƒiƒKƒ“‚ɑ΂·‚éˆâ‘‚Å(1:33'05)
+uŽ€l‚Í‚É‚¨‚¤‘O‚É–„‚ß‚ëv
+Bury the dead. They stink up the joint.
I see America drinking... the fabulous cocktails I make.
+America's getting stinking on something I stir or shake
+The Sex on the Beach... the schnapps made from peach... the Velvet Hammer, the Alabama Slammer.
+I make things with juice and froth... the Pink Squirrel, the Three-Toed Sloth.
+I make drinks so sweet and snazzy... the Ice-T, Kamikaze.
+The Orgasm.
+The Death Spasm.
+The Singapore Sling, the Ding-a-ling.
+America, you're just devoted... to every flavor I've got.
+But if you want to get loaded... why don't you just order a shot?
ƒRƒKƒl[ƒ[@•‘ –ìƒ}ƒ_ƒ€
+ƒRƒKƒl[ƒ[@ƒIƒVƒƒƒŒ‚ȃ‚ƒiƒ€[ƒ‹i—ölj
+ƒRƒKƒl[ƒ[@’‹‰º‚ª‚è‚ ‚È‚½‚Æ
+ƒRƒKƒl[ƒ[@Je ne pourrai jamais vivre sans toi...
+i‚ ‚È‚½‚È‚µ‚łͶ‚«‚Ä‚¢‚¯‚Ü‚¹‚ñj
+
+
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/ascii/_mozilla_bug638318_text.html b/third_party/gsutil/third_party/chardet/tests/ascii/_mozilla_bug638318_text.html
new file mode 100644
index 00000000000..3f2ff44212a
Binary files /dev/null and b/third_party/gsutil/third_party/chardet/tests/ascii/_mozilla_bug638318_text.html differ
diff --git a/third_party/gsutil/third_party/chardet/tests/ascii/howto.diveintomark.org.xml b/third_party/gsutil/third_party/chardet/tests/ascii/howto.diveintomark.org.xml
new file mode 100644
index 00000000000..54042d6bee6
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/ascii/howto.diveintomark.org.xml
@@ -0,0 +1,77 @@
+
+howto.diveintomark.org
+1 out of 3 ain't bad
+tag:howto.diveintomark.org,2005:0
+
+
+2005-11-05T05:02:33Z
+Copyright 2005, licensed under the Creative Commons Attribution-ShareAlike 2.5 license
+
+Mark Pilgrim
+mark@diveintomark.org
+http://diveintomark.org/
+
+
+
+
+ tag:howto.diveintomark.org,2005:6
+ 2005-11-03T21:28:59Z
+ 2005-11-03T21:28:59Z
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ tag:howto.diveintomark.org,2005:4
+ 2005-10-25T13:41:50Z
+ 2005-10-25T13:41:50Z
+
+
+
+
+
+
+
+
+
+
+
+
+
+ tag:howto.diveintomark.org,2005:3
+ 2005-10-14T03:41:13Z
+ 2005-10-14T03:41:13Z
+
+
+
+
+
+
+
+
+
+
+ tag:howto.diveintomark.org,2005:1
+ 2005-10-14T02:03:08Z
+ 2005-10-14T02:03:08Z
+
+
+
+
+
+
+
+
+
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-2022-jp/_ude_1.txt b/third_party/gsutil/third_party/chardet/tests/iso-2022-jp/_ude_1.txt
new file mode 100644
index 00000000000..c788de5614c
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-2022-jp/_ude_1.txt
@@ -0,0 +1,39 @@
+========================================================================
+ $B%3%s%=!<%k(J $B%"%W%j%1!<%7%g%s(J : universalchardet $B%W%m%8%'%/%H$N35MW(J
+========================================================================
+
+$B$3$N(J universalchardet $B%"%W%j%1!<%7%g%s$O!"(JAppWizard $B$K$h$C$F:n@.$5$l$^$7$?!#(J
+
+$B$3$N%U%!%$%k$K$O!"(Juniversalchardet $B%"%W%j%1!<%7%g%s$r9=@.$9$k3F%U%!%$%k$N(J
+$BFbMF$N35N,$,5-=R$5$l$F$$$^$9!#(J
+
+
+universalchardet.vcproj
+ $B$3$l$O!"%"%W%j%1!<%7%g%s(J $B%&%#%6!<%I$G@8@.$5$l$k(J VC++ $B%W%m%8%'%/%H$N%a%$%s$N(J
+ $B%W%m%8%'%/%H(J $B%U%!%$%k$G$9!#(J
+ $B%U%!%$%k$r@8@.$7$?(J Visual C++ $B$N%P!<%8%g%s>pJs$H!"%"%W%j%1!<%7%g%s(J
+ $B%&%#%6!<%I$GA*Br$7$?%W%i%C%H%U%)!<%`!"9=@.!"$*$h$S%W%m%8%'%/%H$N5!G=$K4X$9$k(J
+ $B>pJs$,5-=R$5$l$F$$$^$9!#(J
+
+universalchardet.cpp
+ $B$3$l$O!"%a%$%s$N%"%W%j%1!<%7%g%s(J $B%=!<%9(J $B%U%!%$%k$G$9!#(J
+
+/////////////////////////////////////////////////////////////////////////////
+$B$=$NB>$NI8=`%U%!%$%k(J :
+
+StdAfx.h, StdAfx.cpp
+ $B$3$l$i$N%U%!%$%k$O!"%3%s%Q%$%k:Q$_%X%C%@!<(J (PCH) $B%U%!%$%k(J
+ universalchardet.pch $B$H%W%j%3%s%Q%$%k:Q$_7?%U%!%$%k(J StdAfx.obj $B$r(J
+ $B%S%k%I$9$k$?$a$K;HMQ$7$^$9!#(J
+
+/////////////////////////////////////////////////////////////////////////////
+$B$=$NB>$N%a%b(J :
+
+AppWizard $B$G$O(J "TODO:" $B%3%a%s%H$r;HMQ$7$F!"%f!<%6!<$,DI2C$^$?$O%+%9%?%^%$%:$9$k(J
+$B%=!<%9ItJ,$r<($7$^$9!#(J
+
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-2022-kr/_ude_iso1.txt b/third_party/gsutil/third_party/chardet/tests/iso-2022-kr/_ude_iso1.txt
new file mode 100644
index 00000000000..72c787a8808
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-2022-kr/_ude_iso1.txt
@@ -0,0 +1 @@
+$)C?*;g@{ ?9F4Q, ?*;g@{ @N0#@87N<-@G ?9J4B4Y. GQ19 ;g6w5i@: 4k03 !.:OGQ(]Ay[)!/@L6s0m :N8#8g, B*0T !.:O!/@87N :N8& 6'55 @V4Y. 3*@L0! 89@: <<4k?!<-4B 0#H$ !.@L:O(l$]A)!/@L6s4B G%Gv@; >21b55 GO8g, A&GQ@{@87N ':OA6<1'@L6s :N8#1b55 GQ4Y. 0z0E 4kGQ9N19 A$:N?!<-4B :OA6<1(:OGQ)@; ?> 2@LAv >J0T 5G>z4Y.[3] 0#H$ @O:N 9]0xAV@G :821b55 GQ4Y.
+
+4kGQ9N19?!<-4B A6<1@L3* :OA6<1@L6u G%Gv@; 1bGGGO8g[CbC3 GJ?d], A6<1@: A6<1 ?UA63* 4\1:A6<1 5n@; 0!8.E04B 8;7N >44Y. 32:O0#@G 137y0! H0<:H-5G8i<- F/:0GQ ;vC$0! >x4B !.:OCx!/@L3* !.:OBJ!/@L6u G%Gv55 89@L >2@L0m @V4B C_<<@L4Y. 4kGQ9N19?!<-4B GQ19 @|@o @L@|@G G`A$ 18?*@N Fr>H3255!$Fr>H:O55!$GT0f3255!$GT0f:O55!$H2GX558& !.@L:O 555(l$]AgiT3)!/6s :N8#1b55 GQ4Y.
+
+0x=D@{@N ?5>n 8mD*@: DPRK(Democratic People's Republic of Korea)@L8g :8Ek 'A6<19]55(GQ9]55) :OBJ'@; @G9LGO4B North Korea6s0m :N8%4Y.
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_1.txt b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_1.txt
new file mode 100644
index 00000000000..5dd31a32f99
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_1.txt
@@ -0,0 +1,15 @@
+Nas paginas que em seguida se leem acha-se tão bem determinada, com tanta eloquencia e tão profunda observação, a missão da poesia
+contemporanea, que não podemos resistir ao desejo de as trazer das folhas passageiras do jornal, aonde pela primeira vez viram a luz, para
+as paginas d'este livro, por ventura um pouco menos ephemeras.
+
+O autor das Radiações da Noite, intenta sobretudo mostrar que o seu espirito, correspondendo ás indicações da critica, procura inspirar-se,
+tanto quanto lhe é possivel, no mundo que o cerca, nos factos e nas acções do nosso tempo. Das Radiações da Noite á Alma Nova
+poder-se-ha talvez notar um certo caminho andado na direcção em que vae seguindo a arte contemporanea.
+
+Do escripto como primitivamente foi publicado, entendemos, como o leitor O seculo XIX, cujos primeiros annos enflorou uma corôa poetica de
+esplendor incomparavel, tem mentido cruelmente ás esperanças da sua aurora. Envelhecendo, perdeu o dom do canto, ou, pelo menos, o
+sentimento que faz os cantores verdadeiros. Os Goethe, os Byron, os Lamartine, os Miczkawicz, os Hugo, os OEhlenschlaeger, não deixaram
+descendencia digna d'aquella poderosa geração. O romantismo foi um meteoro. O grande canto do seculo esvaeceu-se gradualmente n'um
+murmurio. A poesia contemporanea não tem unidade, e não tem sobre tudo o largo folego de inspiração, que caracterisa as verdadeiras épocas
+poeticas. O interesse do tempo dirige-se evidentemente para outro lado. No meio das preoccupações da actualidade, a poesia é como a canção de um
+conviva distraído que se affasta da sala do festim, e cuja voz se perde pouco a pouco no silencio da distancia e da noute.
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_2.txt b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_2.txt
new file mode 100644
index 00000000000..d827b72a84b
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_2.txt
@@ -0,0 +1,21 @@
+Le type de visa requis pour entrer en France dépend à la fois de la durée et des motifs du séjour envisagé; sauf cas particuliers:
+pour des séjours inférieurs ou égaux à 90 jours, le visa à solliciter est un visa de court séjour appelé "visa Schengen",
+pour des séjours supérieurs à 90 jours, le visa à solliciter est un visa de long séjour adapté à la durée et aux motifs du séjour.
+Une fois entré sur le sol français, le titulaire du visa ne pourra pas obtenir la modification de son visa ni un changement de statut.
+Par ailleurs, l'exercice d'une activité salariée est soumis à des procédures spécifiques qui requièrent l'obtention d'une autorisation de travail
+préalablement à l'obtention du visa.
+
+La réglementation relative à l'entrée et au séjour sur le territoire français est différente selon que vous êtes titulaire d'un passeport ordinaire
+ou d'un passeport diplomatique ou de service.
+
+Des frais de dossier sont encaissés dès le dépôt de la demande; en cas de refus, ils ne sont pas remboursés.
+Lors du traitement de la demande de visa, certaines formalités (prise de rendez-vous, dépôt du dossier) peuvent être confiées à des prestataires de service.
+Des frais supplémentaires sont alors à prévoir. Renseignez-vous auprès du consulat français compétent.
+
+Les visas de court séjour sont des visas dits "Schengen" qui permettent à leur titulaire de circuler librement dans les pays de l'espace Schengen pour d
+es séjours d'une durée maximale de 90 jours sur toute période de 180 jours. Ces visas peuvent être délivrés pour une ou plusieurs entrées.
+
+Ce type de visa est généralement délivré pour des voyages de tourisme, des voyages d'affaires ou pour des visites familiales;
+il permet également à son titulaire de venir en France pour des formations courtes, des stages ou encore exercer une activité rémunérée, sous réserve de
+l'obtention d'une autorisation provisoire de travail (artistes en tournée, sportifs disputant un championnat, salarié détaché dans le cadre d'une
+prestation de service).
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_3.txt b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_3.txt
new file mode 100644
index 00000000000..ea76aaff481
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_3.txt
@@ -0,0 +1,17 @@
+La commedia non ha atti né scene. La rappresentazione sarà interrotta una prima volta, senza che il sipario s'abbassi; allorché
+il Direttore Capocomico e il capo dei personaggi si ritireranno per concertar lo scenario e gli attori sgombreranno il palcoscenico; una
+seconda volta, allorché per isbaglio il Macchinista butterà giù il sipario.
+
+Troveranno gli spettatori, entrando nella sala del teatro, alzato il sipario, e il palcoscenico com'è di giorno, senza quinte né scena,
+quasi al bujo e vuoto, perché abbiano fin da principio l'impressione d'uno spettacolo non preparato.
+
+Due scalette, una a destra e l'altra a sinistra, metteranno in comunicazione il palcoscenico con la sala. Sul palcoscenico il
+cupolino del suggeritore, messo da parte, a canto alla buca.
+
+Dall'altra parte, sul davanti, un tavolino e una poltrona con spalliera voltata verso il pubblico, per il Direttore-Capocomico.
+Altri due tavolini, uno più grande, uno più piccolo, con parecchie sedie attorno, messi lì sul davanti per averli pronti, a un bisogno,
+per la prova. Altre sedie, qua e lì: a destra e a sinistra, per gli Attori; e un pianoforte in fondo, da un lato, quasi nascosto.
+
+Spenti i lumi nella sala, si vedrà entrare dalla porta del palcoscenico il macchinista in camiciotto turchino e sacca appesa
+alla cintola; prendere da un angolo in fondo alcuni assi d'attrezzatura; disporli sul davanti e mettersi in ginocchio e
+inchiodarli. Alle martellate accorrerà dalla porta dei camerini il Direttore di scena.
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_4.txt b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_4.txt
new file mode 100644
index 00000000000..978fa208331
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_4.txt
@@ -0,0 +1,14 @@
+Il padre. Ecco, sissignore! Ma un fatto è come un sacco: vuoto, non si regge. Perché si regga, bisogna prima farci entrar dentro la
+ragione e i sentimenti che lo han determinato. Io non potevo sapere che, morto là quell'uomo, e ritornati essi qua in miseria, per
+provvedere al sostentamento dei figliuoli, ella indicherà la Madre si fosse data attorno a lavorare da sarta, e che giusto fosse andata
+a prender lavoro da quella... da quella Madama Pace!
+
+La figliastra. Sarta fina, se lor signori lo vogliono sapere! Serve in apparenza le migliori signore, ma ha tutto disposto, poi, perché
+queste migliori signore servano viceversa a lei... senza pregiudizio delle altre così così!
+
+La madre. Mi crederà, signore, se le dico che non mi passò neppur lontanamente per il capo il sospetto che quella megera mi dava lavoro
+perché aveva adocchiato mia figlia...
+
+La figliastra. Povera mamma! Sa, signore, che cosa faceva quella lì, appena le riportavo il lavoro fatto da lei? Mi faceva notare la
+roba che aveva sciupata, dandola a cucire a mia madre; e diffalcava, diffalcava. Cosicché, lei capisce, pagavo io, mentre quella poverina
+credeva di sacrificarsi per me e per quei due, cucendo anche di notte la roba di Madama Pace!
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_5.txt b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_5.txt
new file mode 100644
index 00000000000..ad6115b13e2
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_5.txt
@@ -0,0 +1,21 @@
+Agentes de la Guardia Civil de la Comandancia de Madrid, integrantes del Equipo Mujer Menor, han detenido a un profesor por abusar sexualmente
+de siete menores en el colegio concertado bilingüe Vallmont de Villanueva del Pardillo.
+
+La investigación tuvo su origen hace varios meses al comunicar el padre de un alumno los hechos narrados por su hijo,
+los cuales ponían de manifiesto que el profesor-tutor estaría cometiendo abusos en el propio centro aprovechando su condición y
+autoridad sobre el alumno, ha informado la Comandancia en una nota de prensa.
+
+A partir de este momento, la investigación se ampliaba, ante las sospechas de que pudieran existir otras víctimas,
+hecho que se constataba al localizar a otros seis alumnos más sobre los que se habrían cometido los presuntos abusos,
+recogiéndose por parte de los agentes las correspondientes denuncias de los hechos.
+
+Una vez reunidas todas las pruebas contra el presunto acosador, la Guardia Civil le detuvo la semana pasada fuera del colegio.
+Tras su declaración en el cuartel, los agentes lo pusieron a disposición de la autoridad judicial competente,
+que decretó su inmediato ingreso en prisión.
+
+Se trata de un docente español de 33 años que carecía de antecedentes policiales.
+Trabajaba en el colegio desde hacía casi cuatro años, según han informado a Europa Press fuentes del centro, que han señalado que
+le relevaron de sus funciones cuando tuvieron conocimiento de lo ocurrido.
+
+De hecho, pasó dos semanas sin acudir a clase antes de la detención. El arrestado daba clases a Alumnos de Primaria,
+era tutor de niños de 11 años, pero daba clases a otros menores de 13 años.
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_6.txt b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_6.txt
new file mode 100644
index 00000000000..60f23d9c7be
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-1/_ude_6.txt
@@ -0,0 +1,18 @@
+Vielä ehdit perehtyä Sibeliuksen elämään Ateneumissa, aina 22. maaliskuuta asti.
+Moniaistisessa Sibelius ja taiteen maailma näyttelyssä pääsee näkemään ja kuulemaan Sibeliusta ympäröiviä vaikutteita 12 erilaisen teeman kautta.
+Kolmella eurolla saat käyttöösi musiikkiääniooppaan, jonka avulla voit tutustua taiteeseen ja Sibeliuksen elämään säveltäjän valittuja kappaleita kuunnellessa.
+Nykytaiteen museo Kiasma avautuu uudistustöiden jälkeen jälleen 13. maaliskuuta Robert Mapplethorpen retrospektiivisella näyttelyllä,
+joka esittelee taiteilijan tuotantoa ja uran vaiheita yli 250 teoksella.
+Viime keväänä ensimmäistä kertaa järjestetty taidetapahtuma Olohuonenäyttely muuttaa joukon helsinkiläiskoteja kahden päivän ajaksi taidegallerioiksi,
+joissa esitellään nykytaidetta. Taidetta voidaan esitellä missä vaan; olohuoneissa, makuuhuoneissa, hisseissä, varastoissa ja jääkaapeissa.
+Olohuonegalleriat ovat auki yleisölle viikonloppuna 21.-22. maaliskuuta. Älä unohda myöskään kevään viimeistä Galleriakeskiviikkoa 1. huhtikuuta,
+jolloin tapahtumaan osallistuvat galleriat pitävät ovensa auki pidempään ja tarjoavat päivän aikana näyttelyjen lisäksi myös muuta ohjelmaa kuten musiikkia,
+tanssia ja taiteilijatapaamisia.
+
+Katuruoka levittäytyy Helsinkiin 16.-22. maaliskuuta Streat Helsinki tapahtuman myötä.
+Viime keväänä ensimmäistä kertaa järjestetty katuruokatapahtuma Helsinki venyy tänä vuonna viikon pituiseksi katuruokajuhlaksi, johon kuuluu useita kokonaisuuksia.
+Mukana on tänäkin vuonna EATS-katuruokafestivaali, joka nyt laajenee kaksipäiväiseksi tapahtumaksi ja levittäytyy Torikortteleista Senaatintorin suuntaan 21.-22.3.
+Helsinki tuo tällä kertaa mukanaan myös uuden SUBURBS-lähiökiertueen. Bongaa kiertueen ruokarekat Vuosaaressa 7.3. ja Lauttasaaressa 14.3.
+Kahvin ystäviä hemmotellaan puolestaan Helsinki Coffee Festival kahvifestivaalilla, joka järjestetään 20.-22. maaliskuuta Suvilahden Kattilahallissa.
+Maistele erilaisia kahvilaatuja ympäri maailman, opi valmistamaan laadukasta kahvia myös kotioloissa ja tutustu tämä hetken mielenkiintoisimpiin kahviloihin ja paahtimoihin.
+Tapahtumassa kilpaillaan lisäksi Cup Tasting, Brewers Cup ja Vuoden Barista titteleistä.
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/auto-apro.hu.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/auto-apro.hu.xml
new file mode 100644
index 00000000000..4a11e4b968d
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/auto-apro.hu.xml
@@ -0,0 +1,474 @@
+
+
+
+
+ AUTÓ-APRÓ.HU - Ingyenes apróhirdetések, új és használt autók számára!
+ http://www.auto-apro.hu/
+ AUTÓ-APRÓ.HU - Ingyenes apróhirdetések, új és használt autók számára! Autó vásárlás, keresés, hirdetés, eladás, dijmentes hirdetés feladás magánszemélyeknek.
+ hu
+ AUTÓ-APRÓ.HU
+ Szilard-Erwin Szogyenyi office@auto-apro.hu
+ Szilard-Erwin Szogyenyi office@auto-apro.hu
+
+ AUTÓ-APRÓ.HU - Ingyenes apróhirdetések, új és használt autók számára!
+ http://www.auto-apro.hu/img/aa/klipfolio_icon.gif
+ http://www.auto-apro.hu/
+ 16
+ 16
+ AUTÓ-APRÓ.HU - Ingyenes apróhirdetések, új és használt autók számára! Autó vásárlás, keresés, hirdetés, eladás, dijmentes hirdetés feladás magánszemélyeknek.
+
+
+ Renault Clio
+ http://www.auto-apro.hu/hirdetes-megtekintese_891.html
+ Hirdetés tipus: Eladó
+Kategoria: Renault
+ Hirdetés szövege: Eladó egy ’92-es,1.2-es,3 ajtós piros renault clio.az elsõ szélvédõ repedt,a két elsõ sárvédõ fekete.Új téli gumival.Müszakilag jó állapotban van,müsz.vizsg. 2007.jan. Kása Pál 06 30 260 80 11
+
+
+
+
+ El Adó Sürgõsen Alkat Résznek!
+ http://www.auto-apro.hu/hirdetes-megtekintese_890.html
+ Hirdetés tipus: Eladó
+Kategoria: Peugeot
+ Hirdetés szövege: Tört állapot ban van de motorikusan indul pöcre!
+
+
+
+
+ Eladó Egy Világosszürke 1986-os Évjáratú Mazda 626 Glx 2.0
+ http://www.auto-apro.hu/hirdetes-megtekintese_889.html
+ Hirdetés tipus: Eladó
+Kategoria: Mazda
+ Hirdetés szövege: Eladó egy világosszürke 1986-os évjáratú Mazda 626 GLX 2.0. Elektromos ablakok és tükrök, szervokormány, központi zár. Motorikusan jó állapotban van. A karosszérián kisebb hibák (ütõdés, karcolás) találhatóak. Futott km: 260.000. Még fél évig érvényes mûszakival. További részletek telefonon illetve személyesen.
+
+
+
+
+ Használtautó Hitel Mindenkinek!
+ http://www.auto-apro.hu/hirdetes-megtekintese_888.html
+ Hirdetés tipus: Közvetítek
+Kategoria: Szolgáltatások
+ Hirdetés szövege: Használtautó hitel magánszemélyeknek, cégelnek, taxisoknak könnyen, gyorsan! 5%-os éves kamattól, akár 0%-os kezdõ részlettel casco-s, casco mentes, CHF, Euro, Forint alapú hitelek BAR listásoknak is. Ha megszorult, ne adja el autóját, vegyen fel rá kedvezõ hitelt!!! A 9 LEGJOBB BANK AJÁNLATA A GARANCIA!!
+
+
+
+
+ Lada2105
+ http://www.auto-apro.hu/hirdetes-megtekintese_887.html
+ Hirdetés tipus: Eladó
+Kategoria: Lada
+ Hirdetés szövege: 1 év mûszakival+zöldkártya
+
+
+
+
+ Opel Kadett Gsi 2.0!!!
+ http://www.auto-apro.hu/hirdetes-megtekintese_886.html
+ Hirdetés tipus: Eladó
+Kategoria: Opel
+ Hirdetés szövege: Jó állapotban lévõ 89-es metál szürke Opel Kadett GSI 2.0 eladó! Vonóhorog, hátsó spoiler, napfénytetõ, magnó!
+
+
+
+
+ Elsõ Nem Dohányzó Tulajdonostól, Rendszeresen Karbantartott
+ http://www.auto-apro.hu/hirdetes-megtekintese_885.html
+ Hirdetés tipus: Eladó
+Kategoria: Lada
+ Hirdetés szövege: Vonóhorog, garázsban tartott, megkímélt, kevés kilométerrel.
+
+
+
+
+ Sérült Peugeot Sürgõsen Eladó!
+ http://www.auto-apro.hu/hirdetes-megtekintese_882.html
+ Hirdetés tipus: Eladó
+Kategoria: Peugeot
+ Hirdetés szövege: Rendezett papírokkal,1,5 év mûszakival.Egész eleje totálkáros,hátsórésze sértetlen.Vonóhoroggal. Egyben vagy alkatrészenként!
+
+
+
+
+ Központizár Szett
+ http://www.auto-apro.hu/hirdetes-megtekintese_884.html
+ Hirdetés tipus: Eladó
+Kategoria: Egyéb
+ Hirdetés szövege: Univerzális központzár szett. Mindenbe beszerelhetõ. A berendezés egy központi elektronikából és ajtónként egy mûködtetõ egységbõl áll és a hozzá tartozó felszerelési anyagok (kábelkorbács, vezeték ek,csavarok,rajz,leírás,stb:ké p.)A berendezéshez kapcsolhatók távmûködtetésû rendszerek is. Teljesen új! Utánvéttel is.w ww.kszet. uw. h u
+
+
+
+
+ Elektromos Bõrtetõ + Alkatrészautó
+ http://www.auto-apro.hu/hirdetes-megtekintese_883.html
+ Hirdetés tipus: Eladó
+Kategoria: Mazda
+ Hirdetés szövege: Fekete/szürke megbízható kisautó meglepõen nagy belsõvel, elektromos bõrtetõvel, ajándék mûködõképes autóval alkatrésznek.
+
+
+
+
+ Diesel Smart Eladó
+ http://www.auto-apro.hu/hirdetes-megtekintese_881.html
+ Hirdetés tipus: Eladó
+Kategoria: Mercedes
+ Hirdetés szövege: MCC Smart 799 ccm-s, diesel, 2000-es évjáratú eladó. Iá: 1.570.000.- ft Tel: 06-70-369-9767
+
+
+
+
+ Kitûnõ Állapot, Váltózár
+ http://www.auto-apro.hu/hirdetes-megtekintese_880.html
+ Hirdetés tipus: Eladó
+Kategoria: Nissan
+ Hirdetés szövege: akár hitelátvállalásal is megvehetõ, kedvezõ 4%-os konstrukcióban.
+
+
+
+
+ Seat Toledo
+ http://www.auto-apro.hu/hirdetes-megtekintese_879.html
+ Hirdetés tipus: Eladó
+Kategoria: Seat
+ Hirdetés szövege: Seat Toledo 98’ alkatrészek eladók: klimahûtõ, légzsákok, lökhárító, váltó, elemek, stb...
+
+Ára: 1000 EURÓ
+
+
+ 9 Személyes, Teljesen Felújított, 5 Db Alufelni
+ http://www.auto-apro.hu/hirdetes-megtekintese_878.html
+ Hirdetés tipus: Felajánlok
+Kategoria: Renault
+ Hirdetés szövege: hosszú alvázú szgk, felújított motor/váltó/futómû/alváz, plusz 5 gumi acélfelnin
+
+
+
+
+ Bõrön Kívül Full Extrás
+ http://www.auto-apro.hu/hirdetes-megtekintese_877.html
+ Hirdetés tipus: Eladó
+Kategoria: Opel
+ Hirdetés szövege: Eladó vagy újabbra cserélhetõ
+
+
+
+
+ Garázsban Tartott Gyári Állapotú, Megkímélt, Számlás Kisteherautó
+ http://www.auto-apro.hu/hirdetes-megtekintese_876.html
+ Hirdetés tipus: Eladó
+Kategoria: Opel
+ Hirdetés szövege: Egy garnitúra téli gumival. Megkímélt, gyári állapotú, elsõ tulajdonostól, Áfás, garázsban tartott tûzpiros kisteherautó. Mûszaki érvényes: 2008. január 9-ig. Irányár: 2.050.000,-Ft+Áfa
+
+
+
+
+ Eladó Szép Állapotban Van
+ http://www.auto-apro.hu/hirdetes-megtekintese_875.html
+ Hirdetés tipus: Eladó
+Kategoria: VW
+ Hirdetés szövege: Nem tudok mit mondani róla,érdemes érdeklõldni iránta.
+
+
+
+
+ Olcso-megbizhato_kisauto_1.0
+ http://www.auto-apro.hu/hirdetes-megtekintese_874.html
+ Hirdetés tipus: Eladó
+Kategoria: Daihatsu
+ Hirdetés szövege: ELADÓ! DAIHATSU CHARADE 1.0 (44 LE) Kifogástalan mûszaki állapotban, rendszeresen szervizelve. •mûszaki vizsga 2007. novemberig, friss zöldkártya •850-1150 cm3 kötelezõ kategória, •5 fokozatú sebességváltó, •Új fékbetétek, tárcsák, •Extrák: rádiósmagnó •Gyártási év: 1984, 5 éve van nálunk. (Rengeteg pótalkatrész is van!) 06 (20) 423 40 03
+
+
+
+
+ Peugeot 406 Hdi
+ http://www.auto-apro.hu/hirdetes-megtekintese_873.html
+ Hirdetés tipus: Eladó
+Kategoria: Peugeot
+ Hirdetés szövege: Digitális klima, fabetét, 4 légzsák, 4 elektromos ablak, fedélzeti computer, sérülésmentes friss mûszaki vizsga.20% bef. hitelre is
+
+
+
+
+ Felújított Motor,felújított Elsõ Futómûvel Jó Állapotban Mazda El
+ http://www.auto-apro.hu/hirdetes-megtekintese_872.html
+ Hirdetés tipus: Eladó
+Kategoria: Mazda
+ Hirdetés szövege: metálfényezés, alufelni, állítható kormány, egyedi üléshuzat, + téli gumi, cd,mp3 magnó, színezett üveg, központi zár, 4 elektromos ablak, elektromos tükrök,
+
+
+
+
+ Garantált,leinformálható Futásteljesítmény!!
+ http://www.auto-apro.hu/hirdetes-megtekintese_769.html
+ Hirdetés tipus: Eladó
+Kategoria: Mercedes
+ Hirdetés szövege: Automata klíma, állítható kormány, centrálzár, elektromos ablak, elektromos tükör, fedélzeti computer, fûthetõ tükör, immobiliser, szervokormány, színezett üveg, dönthetõ utasülések, HIFI, rádiósmagnó, ülésmagasság állítás, vezetõoldali légzsák, utasoldali légzsák, oldal légzsák, hátsó oldal légzsák, függöny légzsák, légzsák kikapcsoló, ABS, ASR
+
+
+
+
+ Sok Extra,olcsóbb Csere
+ http://www.auto-apro.hu/hirdetes-megtekintese_871.html
+ Hirdetés tipus: Eladó
+Kategoria: Fiat
+ Hirdetés szövege: digit klima,abs,szervo,elöl két légzsák + oldal légzsák,ködfé.,elektromos ablakok elöl,elektr. derék támasz,színes üveg,állitható kormány és ülésm.,rádiósm.,riasztó,immob.,centrálz.,rablásgátló,nemdohányzó,olcsóbb csere
+
+
+
+
+ Áfás Ár!!
+ http://www.auto-apro.hu/hirdetes-megtekintese_870.html
+ Hirdetés tipus: Eladó
+Kategoria: Toyota
+ Hirdetés szövege: Garantáltan 124000 km-t futott, nagyon jó állapotú mikrobusz, keveset használt (hetente egyszer). Nagyon megbízható, hibátlan! Egy-egy garnitúra téli, és nyári gumival, jó féle magnós rádióval. Számlaképes, tehát áfás számlát tudok adni. Teherautóra vizsgáztatva, de 6 személy szállítható, tehát hátul is van egy üléssor, ami összecsukható.
+
+
+
+
+ Eladó Egy Jó Állapotban Lévõ Fiat Tipo
+ http://www.auto-apro.hu/hirdetes-megtekintese_869.html
+ Hirdetés tipus: Eladó
+Kategoria: Fiat
+ Hirdetés szövege: EXTRÁK:állitható kormány és ülésmagasság,fordulatszámmérõ,plüss,könyöklõ,cd-s rádio,hifi,centrál zár,inditásgátló,ködlámpa,szines üveg. Az ár IRÁNYÁR.
+
+
+
+
+ Fiat Stilo 1,6 16v
+ http://www.auto-apro.hu/hirdetes-megtekintese_868.html
+ Hirdetés tipus: Eladó
+Kategoria: Fiat
+ Hirdetés szövege: Részletesebben a 06/20-5918383 telefonon. Fedélzeti computer, dupla automata klíma, oldallégzsákok, aut. esõérzékelõ, állítható kormány, el. elsõ ablakok, fûthetõ tükrök, stb.
+
+
+
+
+ Makulátlan Állapot, Folyamatosan Szervizelt, Nem Dohányzó!
+ http://www.auto-apro.hu/hirdetes-megtekintese_653.html
+ Hirdetés tipus: Eladó
+Kategoria: Opel
+ Hirdetés szövege: Fóliázva, rádiós magnó, ülésmagasság állítás, vezetõoldali légzsák, ködlámpa, riasztó, téligumigarnitúra felnivel, gyári alukerekekkel, ültetve, sportlégszûrõ, sportgyertya, sportkipufogó, friss, 3 hónapos mûszaki és zöldkártya. Frissen szervizelve. Igény esetén a képen látható 16" alessio felnikkel, úgy 1,03 millió az irányár.
+
+
+
+
+ Gyári Alufelnikkel,színezett Üveggel.
+ http://www.auto-apro.hu/hirdetes-megtekintese_867.html
+ Hirdetés tipus: Eladó
+Kategoria: Toyota
+ Hirdetés szövege: Vonóhoroggal,Külsõ-belsõ hõmérõ,fogyasztásmérõ,Bevezetett hidegindító,hátsóablakfûtés,Fogyasztásmérõ,Ködfényszórók,Rádiós magnóval,És sok tartalék alkatrésszel:Difi,Kardán tengely,Féltengelyek,rugók.stb...
+
+
+
+
+ Peugeot 307 Ép És Enyhén Sérült Géptetõ Fekete/v.ezüst 35-15e
+ http://www.auto-apro.hu/hirdetes-megtekintese_808.html
+ Hirdetés tipus: Eladó
+Kategoria: Alkatrészek
+ Hirdetés szövege: Peu 307 ép és enyhén sérült géptetõ fekete/v.ezüst 35-15e ft, elsõ hátsó vészháritó+vas 45-30e ft,bal sárvédõ 10e,klima és vizhûtõ 22-18e, 2db sérült fényszóró 10e, 5.ajtó üveggel 35e,hátsó hid 25e,2db gyári 16 colos alufelni 3db jó nyári gumival 50e ,limuin 5 ajtós tetõ 15e,téligumi afelnin 195/65R15 semperit dir grip 55e,stb maradek@citromail.hu
+
+
+
+
+ Tranpporte T4 9 Személyes
+ http://www.auto-apro.hu/hirdetes-megtekintese_866.html
+ Hirdetés tipus: Eladó
+Kategoria: VW
+ Hirdetés szövege: világos bordó , dízel, 4 ajtós, 2. tulajdonostól, 136,000 km, 2008. február-ig érvényes mûszaki, 2496 cm3, ABS, 1 db Légzsák, Szervókormány, Rádiós magnó, VW transporter T 4,2001-es évjárat 8+1 személyes,csak személyautóként használt,szinte gyári állapot,garázsban tartott.Külön utastérfûtéssel. Irányár:3.600.000.-ft Érd:06-20-381-02-26 Solt.
+
+
+
+
+ Bmw 520i 24v Friss Mûszakival Abs Sibeda Szervó Stb. Jóállapotban
+ http://www.auto-apro.hu/hirdetes-megtekintese_865.html
+ Hirdetés tipus: Eladó
+Kategoria: BMW
+ Hirdetés szövege: Központi zár motoros ablak elõl gyári /Bavaria/ rádio-magnó napfénytetõ jó mûszaki és esztétikai állapot.
+
+
+
+
+ Plüss, Színezett Üveg, Friss Mûszaki
+ http://www.auto-apro.hu/hirdetes-megtekintese_864.html
+ Hirdetés tipus: Eladó
+Kategoria: Opel
+ Hirdetés szövege: egyeztetés az alábbi telefonszámon
+
+
+
+
+ Plüss, Színezett Üveg, Friss Mûszaki
+ http://www.auto-apro.hu/hirdetes-megtekintese_470.html
+ Hirdetés tipus: Eladó
+Kategoria: Opel
+ Hirdetés szövege: egyeztetés:06309745183
+
+
+
+
+ Ford Escort Sürgõsen Eladó!
+ http://www.auto-apro.hu/hirdetes-megtekintese_863.html
+ Hirdetés tipus: Eladó
+Kategoria: Ford
+ Hirdetés szövege: alufelnivel(15-ös),spoilerekkel,mûszakival.
+
+
+
+
+ Mercedesz Szgki.sürgõsen Eladó!
+ http://www.auto-apro.hu/hirdetes-megtekintese_861.html
+ Hirdetés tipus: Eladó
+Kategoria: Mercedes
+ Hirdetés szövege: Mûszakival,vonóhoroggal,autómataváltóval.
+
+
+
+
+ Mazda626 Sürgõsen Eladó
+ http://www.auto-apro.hu/hirdetes-megtekintese_862.html
+ Hirdetés tipus: Eladó
+Kategoria: Mazda
+ Hirdetés szövege: Kilakatolva,mûszaki vizsgára felkészítve,téli gumikkal,sok elektronikával.
+
+
+
+
+ A Vízpumpa Nem Jó, Egyébként Jó Motorral
+ http://www.auto-apro.hu/hirdetes-megtekintese_860.html
+ Hirdetés tipus: Eladó
+Kategoria: Toyota
+ Hirdetés szövege: Korának megfelelõ állapotban,apró esztétikai hibákkal.
+
+
+
+
+ Lada 2105
+ http://www.auto-apro.hu/hirdetes-megtekintese_859.html
+ Hirdetés tipus: Eladó
+Kategoria: Lada
+ Hirdetés szövege: Korához képest kitünõ állapot
+
+
+
+
+ Ford Escort Coupe /1981/
+ http://www.auto-apro.hu/hirdetes-megtekintese_858.html
+ Hirdetés tipus: Eladó
+Kategoria: Ford
+ Hirdetés szövege: Ford Escort Coupe /1981/ hátsókerék maghajtású, angol motoros, ködlámpával, rádiósmagnóval, pótalkatrészekkel, normál állapotban sürgõsen eladó!
+
+
+
+
+ Eladó 1.0 Swift 1994.12.
+ http://www.auto-apro.hu/hirdetes-megtekintese_857.html
+ Hirdetés tipus: Eladó
+Kategoria: Suzuki
+ Hirdetés szövege: Eladó swift jutányos áron, megbízható mûszaki állapotban, 11 évesen. kis motor.
+
+
+
+
+ Négykerékmeghajtásu Suzuki-subaru
+ http://www.auto-apro.hu/hirdetes-megtekintese_856.html
+ Hirdetés tipus: Eladó
+Kategoria: Suzuki
+ Hirdetés szövege: sürgösen eledó
+
+
+
+
+ Iveco Eurocargó
+ http://www.auto-apro.hu/hirdetes-megtekintese_854.html
+ Hirdetés tipus: Eladó
+Kategoria: Haszonjármûvek
+ Hirdetés szövege: Iveco eurocargó fõdarabok egyéb alkatrészek eladók,ill.eurocargót(sérült,üzemképtelen,hiányos)veszek.tel:06209441132
+
+
+
+
+ Sérült Autó
+ http://www.auto-apro.hu/hirdetes-megtekintese_853.html
+ Hirdetés tipus: Vásárolok
+Kategoria: Egyéb
+ Hirdetés szövege: Sérült,totálkáros autót veszek magas áron.tel:06209441132
+
+
+
+
+ Legend93
+ http://www.auto-apro.hu/hirdetes-megtekintese_852.html
+ Hirdetés tipus: Eladó
+Kategoria: Honda
+ Hirdetés szövege: mûszaki 2007-ig. világos bõr belsõvel,automata váltó, digit klíma, állítható kormány, centrálzár, elektromos ablak, elektromos tükör, fûthetõ tükör, immobiliser, könnyûfém felni, szervokormány, színezett üveg, tempomat, dönthetõ utasülések, elektromos tetõ, faberakás, fûthetõ ülés, memóriás vezetõülés, ülésmagasság állítás, vezetõoldali légzsák
+
+
+
+
+ Nagy Választék
+ http://www.auto-apro.hu/hirdetes-megtekintese_851.html
+ Hirdetés tipus: Eladó
+Kategoria: Daewoo
+ Hirdetés szövege: magyarország legnygyobb használt matiz készlete. gyors és egyszerü hitelügy intézés. használt auto és mozgássérült utalvány beszámitás. HIVJON BIZALOMMAL. 0670-256-62-47
+
+
+
+
+ Vizsga 2007.04
+ http://www.auto-apro.hu/hirdetes-megtekintese_850.html
+ Hirdetés tipus: Eladó
+Kategoria: Suzuki
+ Hirdetés szövege: olcsóbb 6 személyes kishaszon, vagy duplafülkés platós érdekel
+
+
+
+
+ Üzmbentartói Is Lehetséges
+ http://www.auto-apro.hu/hirdetes-megtekintese_849.html
+ Hirdetés tipus: Eladó
+Kategoria: ARO
+ Hirdetés szövege: 4+1 vadi új Matador terepgumival, új fûtésrendszer,-fékrendszer,-benzinpumpa,friss zöldkártya ,vonóhorog
+
+
+
+
+ Seat Leon 1.6 16v B+g
+ http://www.auto-apro.hu/hirdetes-megtekintese_848.html
+ Hirdetés tipus: Eladó
+Kategoria: Seat
+ Hirdetés szövege: tekjesen számítógép vezérelt benin+gáz rendszer, garanciával.
+
+
+
+
+ Kissebb Hibákkal
+ http://www.auto-apro.hu/hirdetes-megtekintese_847.html
+ Hirdetés tipus: Eladó
+Kategoria: Lancia
+ Hirdetés szövege: friss mûszaki
+
+
+
+
+ 3 Ajtós
+ http://www.auto-apro.hu/hirdetes-megtekintese_846.html
+ Hirdetés tipus: Eladó
+Kategoria: Opel
+ Hirdetés szövege: mo-i,szervizkönyves,3.tulaj,szép álla potú,részletnél 20%+17/hó 4évre megoldható tel:0620/9565204
+
+Ára: 750000 EURÓ
+
+
+ Peugeot 206 2.0 Hdi
+ http://www.auto-apro.hu/hirdetes-megtekintese_845.html
+ Hirdetés tipus: Eladó
+Kategoria: Peugeot
+ Hirdetés szövege: Peugeot 206 2.0 HDI
+
+
+
+
+
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/cigartower.hu.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/cigartower.hu.xml
new file mode 100644
index 00000000000..95e63bebbb9
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/cigartower.hu.xml
@@ -0,0 +1,87 @@
+
+
+
+
+ CigarTower
+ http://www.cigartower.hu/
+ Magyarország legnagyobb szivarportálja.
+ hu
+ Copyright (c) 2005, CigarMinds Kft.
+ 2006. 01. 04. 17:48:45
+ 20
+
+
+ A csupasz igazság a celofánról
+ http://www.cigartower.hu/build.asp?Module=news&ActiveModule=news&ActiveMode=DisplayArticle&ArticleID=321
+ Mit kell tenni a szivarokon található celofánnal? Egyátalán miért takarják celofánnal a szivarokat? Celofánban tároljuk õket vagy anélkül? Vannak akik mellette állnak és vannak akik ellenzik. Megpróbáljuk eloszlatni a különbözõ tévhiteket.
+ 2005. 12. 28. 18:51:39
+
+
+
+ The Great Habano Factories
+ http://www.cigartower.hu/build.asp?Module=news&ActiveModule=news&ActiveMode=DisplayArticle&ArticleID=319
+ Megjelent Adriano Martinez Rius legújabb könyve, mely képzeletbeli utazásként körbevezet bennünket a híres kubai szivargyárakban. Megismerhetjük a 16 kiválasztott szivargyár múltját és jelenét.
+ 2005. 12. 27. 18:11:29
+
+
+
+ Cigar Aficionado, 2005 december
+ http://www.cigartower.hu/build.asp?Module=news&ActiveModule=news&ActiveMode=DisplayArticle&ArticleID=320
+ Megjelent a Cigar Aficionado 2005 decemberi száma, a címlapon a nemzetközi szupersztárral, a Zorró Legendája címû szupermozi fõszereplõjével Antonio Banderassal.
+ 2005. 12. 24. 15:17:51
+
+
+
+ Santa Clara Magnum a Toronyban
+ http://www.cigartower.hu/build.asp?Module=news&ActiveModule=news&ActiveMode=DisplayArticle&ArticleID=317
+ Az új Santa Clara szivarok megérkeztek a CigarTower Kempinskibe. December elejétõl már kaphatóak a szériákból érkezett szivarok, melyek mellett külön említésre méltó a guinness rekorder Santa Clara Magnum.
+ 2005. 12. 17. 10:33:41
+
+
+
+ Humidorok a CigarTowerben
+ http://www.cigartower.hu/build.asp?Module=news&ActiveModule=news&ActiveMode=DisplayArticle&ArticleID=318
+
+ 2005. 12. 16. 20:05:46
+
+
+
+ Guantanamera szivarok a Toronyban
+ http://www.cigartower.hu/build.asp?Module=news&ActiveModule=news&ActiveMode=DisplayArticle&ArticleID=316
+ Az egyik legifjabb kubai márka, a Guantanamera legismertebb termékei decembertõl újra kaphatók az üzletekben.
+ 2005. 12. 06. 20:55:56
+
+
+
+ Big Smoke Weekend 2005 - Las Vegas
+ http://www.cigartower.hu/build.asp?Module=news&ActiveModule=news&ActiveMode=DisplayArticle&ArticleID=311
+ 10 éve már annak, hogy a szivarbarátok egy csoportja összegyûlt a sivatagi paradicsomban, Las Vegasban, hogy együtt töltsenek egy hétvégét, mely csak a szivarokról szól. Idén a Cigar Aficionado 10. alkalommal rendezte meg a szivarbarátok leghíresebb és egyben legnagyobb ünnepét, a Big Smoke hétvégét.
+ 2005. 11. 27. 23:29:52
+
+
+
+ Kalmuck szivarok
+ http://www.cigartower.hu/build.asp?Module=news&ActiveModule=news&ActiveMode=DisplayArticle&ArticleID=315
+ Kalmucknak nevezik az osztrák Wachau régió bortermelõi a fekete, fehér és barna kockás munkáskabátot, mely mára az osztrák divat egyik meghatározó elemévé vált. Ezek a színek az alapjai a divatos Tracht-viseletnek.
+ 2005. 11. 27. 15:04:47
+
+
+
+ Közép-kelet Európa dohánypiaca
+ http://www.cigartower.hu/build.asp?Module=news&ActiveModule=news&ActiveMode=DisplayArticle&ArticleID=314
+ A cseh Tabakinvest dohányipari cég 600000 darab fölé szeretné növelni az eladott szivarok számát az ország dohánypiacán. Ezt Manuel Garcia, a Habanos S.A. alelnöke jelentette be, amikor október végén Prágában aláírta a szerzõdést a cseh vállalattal.
+ 2005. 11. 27. 13:43:53
+
+
+
+ Új szivarvágó a Davidofftól
+ http://www.cigartower.hu/build.asp?Module=news&ActiveModule=news&ActiveMode=DisplayArticle&ArticleID=312
+ A már piacon lévõ termékek mellett a Davidoff új színekben mutatja be legújabb szivarvágóját. A termék színei, a palladium és a fekete lakk bevonat tökéletes harmóniában vannak egymással. Elegáns, stílusos és mindemellett nagyon jól használható termék.
+ 2005. 11. 15. 16:37:30
+
+
+
+
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/escience.hu.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/escience.hu.xml
new file mode 100644
index 00000000000..a387798d470
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/escience.hu.xml
@@ -0,0 +1,12 @@
+
+
+eScience.huhuhttp://www.escience.huA magyar tudományos közélet hírei.2006.01.08 : FairPrint 2006, XI. Országos Konferencia és Kiállítás a számítástechnika nyomdai alkamazásárólEzúton tájékoztatjuk, hogy FairPrint 2006 címmel országos konferenciát szervezünk a számítástechnika nyomdai alkalmazásáról. A rendezvényen felkért elõadók és szabad elõadások révén alkalmat kívánunk teremteni ahhoz, hogy a nyomdász szakemberek a kezdõtõl a professzionális szintig megismerhessék, a hardver(ek) és szoftver(ek) hogyan lehetnek segítségükre a mindennapi munka során. Felkért fõvédnökök: Magyar Nyomda- és Papíripari Szakmai Szövetség;
+Papír- és Nyomdaipari Mûszaki Egyesület.http://www.escience.hu/showitem.php?id=6652006.01.12 : Kandó Konferencia 2006A Budapesti Mûszaki Fõiskola Kandó Kálmán Villamosmérnöki Fõiskolai Kara Kandó Kálmán emlékére megrendezi a XVII. Kandó Konferenciát. Helyszín: Budapest,
+Tavaszmezõ út 15-17. A konferencia nyelve: magyar, német, angol. A konferencia témakörei: In memoriam Kandó Kálmán; Alkalmazott informatika; Mérnöki tudományok; Elektronikus média - Médiatechnológia; Energetika; Méréstechnika - Automatika; Oktatási irányzatok a felsõoktatásban; Távközléstechnika-Infokommunikáció; Tudományközi területek.http://www.escience.hu/showitem.php?id=6672006.01.13 : Pályázat Erasmus Intenzív Nyelvi Kurzus (EILC) szervezéséreTempus Közalapítvány pályázatot hirdet magyar nyelvû Erasmus Intenzív Nyelvi Kurzus magyarországi megszervezésére és kivitelezésére. Azok a felsõoktatási intézmények pályázhatnak, amelyek rendelkeznek az Európai Bizottság által jóváhagyott Erasmus University Charter-rel. A 2006/2007-es tanév során az intézmények az õszi és a tavaszi félévet megelõzõen is szervezhetnek nyelvi elõkészítõ kurzusokat a külföldi Erasmus hallgatók számára. A kurzusoknak legkésõbb 2007. február 28-ig le kell zárulniuk.http://www.escience.hu/showitem.php?id=6762006.01.15 : ASO Budapest pályázataAz Austrian Science and Research Liaison Office (ASO) pályázatot hirdet Kapcsolatteremtés támogatása és Tartós együttmûködés támogatása címen. A pályázatok már meglévõ tevékenységek maximális összehangolásával közös tudományos és kutatási hálózatok létrehozását célozzák meg oda-vissza ható folyamatok során az osztrák Bundesministerium für Bildung Wissenschaft und Kultur megbízásából.http://www.escience.hu/showitem.php?id=6222006.01.16 : Nanotechnológiai kutató-laboratórium MiskolconA Nemzeti Kutatási és Technológiai Hivatal 2005. december 12-én nemzetközi pályázatot hirdetett meg nanotechnológiai kutatólaboratórium felállítására a Bay Zoltán Alkalmazott Kutatási Közalapítvány miskolci telephelyén. A pályázat célja világszínvonalú nanotechnológiai kutatólaboratórium létrehozása és kutatás-fejlesztési projektek mûködtetése a magyar-orosz nanotechnológiai együttmûködés magyar részének megvalósítása érdekében, valamint a nanotechnológiai kutatóképzés elõsegítése a régióban.http://www.escience.hu/showitem.php?id=6832006.01.18 : Leonardo elõkészítõ látogatások (meghosszabbított határidõ)A Leonardo da Vinci mobilitási pályázatok megírását segítõ elõkészítõ látogatásokra vonatkozó pályázatok végsõ benyújtási határideje meghosszabbításra került 2006 januárjáig. A 2006-os mobilitási pályázatok 2006. február 10-i beadási határideje elõtti utolsó bírálati idõpont az elõkészítõ látogatás pályázatokra vonatkozóan 2006. január 18., amely elõtt legkésõbb 1 héttel kell a pályázatoknak beérkezniük a Tempus Közalapítvány/ Leonardo Nemzeti Irodához. Az elõkészítõ látogatások megvalósításának határideje 2006. február 5.http://www.escience.hu/showitem.php?id=6772006.01.18 : Marie Curie kimenõ nemzetközi ösztöndíjakA pályázat célja tapasztalt európai kutatók nemzetközi karrierjének, világszínvonalú 3. országbeli intézménynél történõ továbbképzésének támogatása, majd annak elõsegítése, hogy a kutató Európába visszatérve a megszerzett tudást valamely európai fogadó intézményben alkalmazza. Ez az ösztöndíjtípus a fentieknek megfelelõen két szakaszra tagolódik: a.) képzés a 3. országban (1-2 év) b.) kötelezõ visszatérési szakasz az EU-tagországban vagy társult országban mûködõ host intézménybe.http://www.escience.hu/showitem.php?id=6812006.01.19 : Európán belüli egyéni Marie Curie ösztöndíjakA kiírt pályázat célja az EU tagországok és a társult országok legígéretesebb tapasztalt kutatóinak képzése, karrierjének elõmozdítása valamely más EU tagországban vagy társult országban megvalósítandó kutatási projekt keretében.http://www.escience.hu/showitem.php?id=6802006.01.20 : Szilárd Leó Professzori ÖsztöndíjA Magyary Zoltán Felsõoktatási Közalapítvány Kuratóriuma az ALCOA Alapítvány résztámogatásával (8000 USD) 2006-ban - az elmúlt hét évhez hasonlóan - három "Szilárd Leó Professzori Ösztöndíj"-at adományoz. A díjazott személyére állami és állam által elismert magyar felsõoktatási intézmények tanácsai tehetnek javaslatot Magyarországon tevékenykedõ oktatók és kutatók körébõl. A javasolt személynek olyan világszerte elismert eredményt felmutató tudósnak kell lennie, aki személyes tekintélyét iskolateremtõ felelõsségérzettel párosítva segíti elõ fiatal munkatársai, egyetemi hallgatói sikeres pályáját.http://www.escience.hu/showitem.php?id=6712006.01.20 : Oktatásért Közalapítvány Kollégiumfejlesztési Alkuratórium pályázataAz Oktatásért Közalapítvány pályázatot hirdet a felsõoktatási kollégiumokban folyó szakmai és tehetséggondozási tevékenység, továbbá kulturális és sport programok támogatására. A pályázat célja a felsõoktatási kollégiumokban folyó szakmai és tehetséggondozási tevékenységek, valamint kulturális és sport programok támogatása, a meglévõ tevékenységek feltételeinek biztosításával és új kezdeményezések felkarolásával. Pályázók köre: belföldi székhelyû felsõoktatási kollégiumok (önálló és nem önálló gazdálkodásúak egyaránt).http://www.escience.hu/showitem.php?id=6732006.01.24 : Kutatási és Fejlesztési TanácskozásA Magyar Tudományos Akadémia Agrár-Mûszaki Bizottsága 2006. január 24-25-én, immár 30. alkalommal rendezi meg Kutatási és Fejlesztési Tanácskozását. A konferencia helyszíne: Szent István Egyetem, Gödöllõ. A tanácskozáson elhangzott elõadásokat, ill. a konzultációs témák teljes terjedelmû dolgozatait gyûjteményes kiadásban jelentetik meg a tanácskozást követõen.http://www.escience.hu/showitem.php?id=6862006.01.25 : Bologna szeminárium: Vállalati kapcsolatok - képzõk és munkáltatók szerepe az új felsõoktatási szerkezet fejlesztésébenA Bologna Tanácsadó Hálózat tevékenységének keretében megrendezzük soron következõ Bologna szemináriumunkat Vállalati kapcsolatok - képzõk és munkáltatók szerepe az új felsõoktatási szerkezet fejlesztésében címmel. A szeminárium keretében lehetõséget adunk a felsõoktatási intézmények és munkáltatók véleménycseréjére az Európai Képesítési Keret 2006-os bevezetése, illetve a kimeneti követelmények meghatározása kapcsán. A délelõtti szekcióban vitaindító elõadásokat gyûjtöttünk össze a téma sarkalatos pontjainak megismerésére, körüljárására. Az elõadásokat követõen kerekasztal-beszélgetések formájában hallgatjuk meg felkért beszélgetõ partnereink és a résztvevõk véleményét, javaslatait az egyes délutáni szekciókban.http://www.escience.hu/showitem.php?id=6782006.01.25 : Marie Curie támogatás kiváló kutatócsoportoknakA pályázat célja a kiemelkedõen tehetséges, karrierjüknek viszonylag kezdeti szakaszában járó kutatók támogatása, hogy vezetésükkel kiváló nemzetközi kutatócsoportok jöjjenek létre, amelyek az EU támogatással viszonylag rövid idõn belül képesek lehetnek saját területükön kiváló eredmények elérésére. A kutatási téma szempontjából prioritást élveznek az EU versenyképessége szempontjából kiemelkedõen fontos kutatási területek, interdiszciplináris területek.http://www.escience.hu/showitem.php?id=6822006.01.27 : Humán erõforrás fejlesztése a civil szektorbanA Magyary Zoltán Felsõoktatási Közalapítvány kuratóriuma és a Civil Társadalomért Alapítvány ösztöndíjpályázatot hirdet "Humán erõforrás fejlesztése a civil szektorban" címmel. A pályázat a Nemzeti Civil Alapprogram támogatásával kerül meghirdetésre. Az ösztöndíj elnyerésére olyan személyek pályázhatnak, akik a hazai civil szektor hatékonyabb mûködését elõsegítõ témákból készítik
+szakdolgozatukat vagy doktori értekezésüket. Pályázhatnak továbbá azok az oktatók, kutatók, akik kutatómunkájukat a hazai civil szektor hatékonyabb mûködését elõsegítõ témákban végzik.http://www.escience.hu/showitem.php?id=6702006.01.31 : Ifjúsági Nemzetközi Konferencia PályázatA Magyar Tudományos Akadémia a kezelésére bízott magánalapítvány felhasználásával "Ifjúsági Nemzetközi Konferencia Pályázat" létrehozásával támogatni kívánja a fiatal magyar tudományos kutatók nemzetközi tudományos rendezvényeken való részvételét. A vissza nem térítendõ támogatás legmagasabb összege 150 000 Ft, és a nemzetközi tudományos konferenciák részvételi költségeinek (részvételi díj, útiköltség, szállásköltség) fedezetéül használható fel.http://www.escience.hu/showitem.php?id=6302006.01.31 : Oktatásért Közalapítvány OKTK Alkuratórium pályázataAz Oktatásért Közalapítvány Országos Kiemelésû Társadalomtudományi Kutatások Alkuratóriuma pályázatot hirdet társadalomtudományok körébe vágó, elsõsorban olyan közpolitikai tudományos kutatások támogatására, amelyek az oktatást segítik. Az alábbi témákban lehet a pályázatot beadni: köz- és felsõoktatás; esélyegyenlõség; ifjúság;
+család és szocializáció, demográfiai folyamatok; etnikai, vallási, kulturális, életforma kisebbségek. A pályázati kiírást keretösszege: 45 millió forint. Az igényelhetõ támogatás maximum összege: 5 millió forint.http://www.escience.hu/showitem.php?id=6722006.02.01 : Comenius: nyelvtanár-asszisztensi ösztöndíjakA Socrates / Comenius nyelvtanár-asszisztensi akció keretében leendõ nyelvtanárok az Unió egyik tagállamának valamely közoktatási intézményében 3-8 hónap idõtartamú tanárasszisztensi megbízást nyerhetnek el a 2006/2007-os tanévre. E tevékenység rendszerint olyan országban zajlik, ahol a tanárjelölt által a késõbbiekben tanítani kívánt nyelv idegen nyelvnek számít. A tanárasszisztensi program két fõ célja, hogy a leendõ nyelvtanárok lehetõséget kapjanak nyelvi, kulturális és pedagógiai ismereteik bõvítésére, valamint a fogadó intézmények hasznosítsák az idegen anyanyelvû asszisztensek munkáját és ismereteit.http://www.escience.hu/showitem.php?id=6752006.02.03 : FairPrint 2006, XI. Országos Konferencia és Kiállítás a számítástechnika nyomdai alkamazásárólEzúton tájékoztatjuk, hogy FairPrint 2006 címmel országos konferenciát szervezünk a számítástechnika nyomdai alkalmazásáról. A rendezvényen felkért elõadók és szabad elõadások révén alkalmat kívánunk teremteni ahhoz, hogy a nyomdász szakemberek a kezdõtõl a professzionális szintig megismerhessék, a hardver(ek) és szoftver(ek) hogyan lehetnek segítségükre a mindennapi munka során. Felkért fõvédnökök: Magyar Nyomda- és Papíripari Szakmai Szövetség;
+Papír- és Nyomdaipari Mûszaki Egyesület.http://www.escience.hu/showitem.php?id=6642006.02.15 : X. Országos Felsõoktatási Környezettudományi DiákkonferenciaA Környezetvédelmi és Vízügyi Minisztérium és az Oktatási Minisztérium, a környezeti oktatásban érdekelt Földmûvelésügyi és Vidékfejlesztési Minisztérium közremûködésével, valamint a Magyar Tudományos Akadémia és más intézmények, szervezetek támogatásával 2006-ban megrendezi a X. Országos Felsõoktatási Környezettudományi Diákkonferenciát (X. OFKD). A rendezvény házigazdája az Eszterházy Károly Fõiskola Természettudományi Fõiskola Kara, Fõvédnöke a Környezetvédelmi és Vízügyi Miniszter és az Oktatási Miniszter.http://www.escience.hu/showitem.php?id=6562006.02.21 : Magyarregula 2006A rendezvény tematikája magában foglalja az ipari automatizálás, labor és terepi mûszerezés, folyamatirányítás, technológiai, karbantartási és termelési irányítási szoftverek az alábbi iparágak számára: Olajipar, Vegyipar, Gyógyszeripar, Energiatermelés és elosztás, Cellulóz és Papíripar
+Gépipar, Fémipar, Élelmiszeripar, Építõipar, Környezetvédelem, Víz és Szennyvíztisztító Ipar, Távközlés és Híradástechnika, Jármûipar.http://www.escience.hu/showitem.php?id=645
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/hirtv.hu.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/hirtv.hu.xml
new file mode 100644
index 00000000000..b034c6840ee
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/hirtv.hu.xml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+HírTV
+http://www.hirtv.hu/
+HírTV
+hu
+Wed, 04 Jan 2006 17:51:32 +0100
+
+ HírTV
+ http://www.hirtv.hu/_i/logo.gif
+ http://www.hirtv.hu/
+
+
+http://www.hirtv.hu/?tPath=/gazdasag/penzpiac/&article_hid=78694
+USD-CHF Shortok megszüntetése
+
+
+http://www.hirtv.hu/?tPath=/belfold/kek_hirek/&article_hid=78692
+Családi tragédiát okozott a talált méreg
+
+
+http://www.hirtv.hu/?tPath=/belfold/&article_hid=78690
+Jelentõs árhullámra számítanak Somogyban
+
+
+http://www.hirtv.hu/?tPath=/tud-tech/&article_hid=78687
+Egy újabb Mount Everest
+
+
+http://www.hirtv.hu/?tPath=/gazdasag/penzpiac/&article_hid=78689
+GBP-USD Az 1,7600-os érték a láthatáron
+
+
+http://www.hirtv.hu/?tPath=/gazdasag/penzpiac/&article_hid=78686
+EUr-USD Némi csökkenés a beérkezett megrendelések után
+
+
+http://www.hirtv.hu/?tPath=/kulfold/&article_hid=78684
+Leszakadt vezetékek, energetikai szükségállapot
+
+
+http://www.hirtv.hu/?tPath=/gazdasag/penzpiac/&article_hid=78681
+Átmenetileg csökkenö aranyár
+
+
+http://www.hirtv.hu/?tPath=/gazdasag/penzpiac/&article_hid=78682
+Amerikai iparba beérkezett megrendelések: +2,5%- elörejelzés. 2,4%
+
+
+http://www.hirtv.hu/?tPath=/belfold/kek_hirek/&article_hid=78677
+Õrjöngõ nõ zaklatta a lakókat
+
+
+http://www.hirtv.hu/?tPath=/belfold/&article_hid=78676
+Feloldották a hólánc-kötelezettséget
+
+
+
+http://www.hirtv.hu/?tPath=/gazdasag/penzpiac/&article_hid=78675
+EUR-PLN Lubinska: Nem probléma a zloty erössége
+
+
+http://www.hirtv.hu/?tPath=/kultura/film/&article_hid=78672
+Több mint száz díj és elismerés a magyar filmeknek
+
+
+http://www.hirtv.hu/?tPath=/rss2/&article_hid=78669
+Leszúrta nevelõapját egy 11 éves kisfiú
+
+
+http://www.hirtv.hu/?tPath=/belfold/kek_hirek/&article_hid=78668
+Fagyálló a vörösborban
+
+
+http://www.hirtv.hu/?tPath=/gazdasag/penzpiac/&article_hid=78670
+EUR-USD Constancio nyilatkozata
+
+
+http://www.hirtv.hu/?tPath=/kulfold/&article_hid=78664
+32 ezer baromfi pusztult el a Krím-félszigeten
+
+
+http://www.hirtv.hu/?tPath=/sport/&article_hid=78662
+Újabb magyar baleset a Dakaron
+
+
+http://www.hirtv.hu/?tPath=/belfold/&article_hid=78657
+Diákigazolványok: új közbeszerzési pályázat
+
+
+http://www.hirtv.hu/?tPath=/gazdasag/penzpiac/&article_hid=78658
+USD-CAD Csökkenö kanadai termelöi árak
+
+
+
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/honositomuhely.hu.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/honositomuhely.hu.xml
new file mode 100644
index 00000000000..d45fe907496
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/honositomuhely.hu.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+ Broadcast Builder 1.48 Personal (C) Lionhardt Technologies 2003, www.lionhardt.com/bb
+ Wed, 04 Jan 2006 07:50:10 GMT
+ Honosító Mûhely : Legfrissebb verziók
+ http://www.honositomuhely.hu/
+ A magyarított alkalmazások lelõhelye: freeware és shareware magyarul 8 kategóriában
+ hu
+ Copyright (C) 2006 Herczeg József Tamás
+ Wed, 04 Jan 2006 07:50:10 GMT
+
+ Simply Calenders 4.5 (d) (fr)
+ http://www.honositomuhely.hu/index.php?option=com_remository&Itemid=1&func=fileinfo&filecatid=911&parent=folder
+ Wed, 04 Jan 2006 07:50:05 GMT
+ Személyre szabott naptárakat és tervezõket készíthetünk otthoni vagy irodai célra egyaránt. - Fájlméret: 6,18 MB
+ Ügyvitel
+
+
+ PDF Download 0.6 (fw) (ÚJ)
+ http://www.honositomuhely.hu/index.php?option=com_remository&Itemid=1&func=fileinfo&filecatid=939&parent=folder
+ Wed, 04 Jan 2006 07:07:01 GMT
+ Az interneten közzétett PDF-fájlok megtekintésére három lehetõséget kínáló Firefox-kiterjesztés. - Fájlméret: 76 KB
+ Internet
+
+
+ VideoInspector 1.8.1.96 (fw) (fr)
+ http://www.honositomuhely.hu/index.php?option=com_remository&Itemid=1&func=fileinfo&filecatid=737&parent=folder
+ Wed, 04 Jan 2006 07:06:30 GMT
+ Megállapítja a támogatott videofájl formátumokról, hogy milyen kodek szükséges a lejátszásukhoz. - Fájlméret: 1,06 MB
+ Multimédia
+
+
+ AnyDVD 5.7.3.1 (sw) (fr)
+ http://www.honositomuhely.hu/index.php?option=com_remository&Itemid=1&func=fileinfo&filecatid=91&parent=folder
+ Wed, 04 Jan 2006 07:06:38 GMT
+ A régiókódot felszabadító és a védelmet feloldó illesztõprogram. - Fájlméret: 1,18 MB
+ Multimédia
+
+
+ Archivarius 3000 3.41 (sw) (fr)
+ http://www.honositomuhely.hu/index.php?option=com_remository&Itemid=1&func=fileinfo&filecatid=94&parent=folder
+ Wed, 04 Jan 2006 07:06:42 GMT
+ Dokumentumok és e-mailek indexelése után teszi azok tartalmát visszakereshetõvé. - Fájlméret: 4,30 MB
+ Segédprogramok
+
+
+ Magic Tweak 3.20 (sw) (fr)
+ http://www.honositomuhely.hu/index.php?option=com_remository&Itemid=1&func=fileinfo&filecatid=464&parent=folder
+ Wed, 04 Jan 2006 07:06:46 GMT
+ A támogatott Windows rendszerek testreszabásának és optimalizálásának segédeszköze. - Fájlméret: 1,62 MB
+ Segédprogramok
+
+
+ RailGeoGraph.NET 2.2 (fw) (fr)
+ http://www.honositomuhely.hu/index.php?option=com_remository&Itemid=1&func=fileinfo&filecatid=834&parent=folder
+ Wed, 04 Jan 2006 07:06:49 GMT
+ Vasútföldrajz-tanuló és -tesztelõ alkalmazás. - Fájlméret: 133 KB
+ Otthon/Oktatás
+
+
+ WinPIM 8.10.1540 (sw) (fr)
+ http://www.honositomuhely.hu/index.php?option=com_remository&Itemid=1&func=fileinfo&filecatid=779&parent=folder
+ Wed, 04 Jan 2006 07:06:53 GMT
+ Partnereink adatait, találkozóink idõpontjait, tennivalóinkat, feljegyzéseinket a hálózati munkacsoportban mindenki számára elérhetõvé tehetjük.- Fájlméret: 5,05 MB
+ Ügyvitel
+
+
+
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/saraspatak.hu.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/saraspatak.hu.xml
new file mode 100644
index 00000000000..2ee425cd3a2
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/saraspatak.hu.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+A Mûvelõdés Háza - Sárospatak
+http://www.sarospatak.hu/muvhaz/
+A Mûvelõdés Háza havi programja
+hu
+Copyright 2003-2005 A Mûvelõdés Háza - Sárospatak; http://www.sarospatak.hu/muvhaz/
+Sárospataki nyári programajánló - PATAKI NYÁR 2005
+http://www.sarospatak.hu/muvhaz/index.php#
+
+
+]]>
+
+
+ILYEN MÉG NEM VOLT IV.
+http://www.sarospatak.hu/muvhaz/index.php#1
+
+
- 17.00 órától
+]]>
+
+
+CINEMA FILMKLUB
+http://www.sarospatak.hu/muvhaz/index.php#5
+
+Finnország: A MÚLT NÉLKÜLI EMBER
R.: Aki Kaurismaki
Sz.: Markku Peltola, Kati Outinen
- 18.00 órától
Belépõdíj 200 Ft
+]]>
+
+
+KOMOLYZENEI KLUB
+http://www.sarospatak.hu/muvhaz/index.php#8
+
+
Vezetõnk és beszélgetõ partnerünk: Magyar Kornél a Bartók Rádió vezetõ szerkesztõje
- 18.00 órától
+]]>
+
+
+A FARKAS FERENC MÛVÉSZETI ISKOLA
+http://www.sarospatak.hu/muvhaz/index.php#11
+
+
- 10.40 órától
+]]>
+
+
+FORRÓ VIZET A KOPASZRA!
+http://www.sarospatak.hu/muvhaz/index.php#12
+
+egri BABSZEM JANKÓ GYERMEKSZÍNHÁZ elõadásában
- 14.00 órától
Belépõdíj: 250 Ft
+]]>
+
+
+A FARKAS FERENC MÛVÉSZETI ISKOLA
+http://www.sarospatak.hu/muvhaz/index.php#12
+
+
- 17.00 órától
+]]>
+
+
+SÁROSPATAKI KÖZOKTATÁSI ELLÁTÁSI KÖRZET SZAKMAI NAPJA
+http://www.sarospatak.hu/muvhaz/index.php#15
+
+
+
+
+SZÍNHÁZI BÉRLETES ELÕADÁS
+http://www.sarospatak.hu/muvhaz/index.php#19
+
+operett Leblanc Gyõzõ Produkciós Iroda szervezésében
Huszka Jenõ legközismertebb dalait hallhatják a Lili bárónõben. A primadonna és a bonviván, Lili és Illésházy László – akik egyébként élõ személyek voltak – andalító dallamait ritmusos szubrett és táncoskomikus számok váltják fel. Ehhez jön még két idõsödõ vénlány rokon és Lili festékkereskedõ apja, akik humoros jeleneteikkel fergeteges hangulatúvá teszik az elõadást.
Fõbb szerepekben: Szóka Júlia, Leblanc Gyõzõ, Kovács Zsuzsa, Bozsó József
- 19.00 órakor
Belépõ: 1500 Ft, diák és nyugdíjas jegy:1000 Ft
+]]>
+
+
+MAGÁN MÛVÉSZETI ISKOLÁK V. NÉPTÁNC FESZTIVÁLJA
+http://www.sarospatak.hu/muvhaz/index.php#23
+
+- Zemplén Gyermekcsoport Cigánd - Rozmaring Gyermekcsoport Mezõkövesd - Gyöngyvirág Gyermekcsoport Mezõkövesd - Kutyaütõk Gyermekcsoport Tiszaújváros - Tiszavirág Gyermekssoport Tiszaújváros - Dati Kisszinvavölgyi Táncmûhely Miskolc - Borockás Gyermekcsoport Tiszaújváros - Bokréta Mûvészeti Iskola Sátoraljaújhely - Sárospataki Táncmûvészeti Iskola csoportjai
Rendezõ: Sárospataki Táncmûvészeti Iskola
- 14.00 órától
+]]>
+
+
+MAGYARORSZÁG 1000 ÉVE TÉRKÉPEKEN
+http://www.sarospatak.hu/muvhaz/index.php#24
+
+MAGYARORSZÁG 1000 ÉVE TÉRKÉPEKEN c. kiállítás
A Mûvelõdés Háza Galériájában 16.00 órától
Köszöntõt mond: Dr. Kupa Mihály, ZTSZ örökös tiszteletbeli elnöke
A kiállítást megnyitja: Dr. Mihalik József mérnök-alezredes
+]]>
+
+
+A HELY, AHOL ÉLÜNK SOROZAT
+http://www.sarospatak.hu/muvhaz/index.php#27
+
+ZEMPLÉN NÉPRAJZI ÉRTÉKEI
Ea.: Darmos István néprajzkutató
E területen változatos néprajzi értékekrõl beszélhetünk, akár a szellemi mûveltséget, akár a tárgyalkotó népmûvészetet, akár a társadalom-néprajzi kérdéseket vizsgáljuk. Vannak olyan területek, amelyekkel kutatóink kevésbé foglalkoztak. Ezekrõl a kérdésekrõl és a felhalmozódott tudás hasznosításáról lesz szó.
- Belépõdíj: 300 Ft
- 18.00 órától
+]]>
+
+
+KIRÁNDULÁS KÁRPÁTALJÁRA
+http://www.sarospatak.hu/muvhaz/index.php#
+
+
A Mûvelõdés Háza szervezésében május 27-29-ig.
Irányár: 21.900 Ft
Jelentkezni lehet: Stumpf Gábor népmûvelõnél
+]]>
+
+
+TÁBOROZÁSI FELHÍVÁS
+http://www.sarospatak.hu/muvhaz/index.php#
+
+2005. június 20-24. között rendezi a
PATAKI FAZEKAS KISINASOK TÁBORÁT
Sárospatakon a kispataki Alkotóházban.
Kérjük részvételi szándékát június 1-ig jelezze.
Érdeklõdés és felvilágosítás Kovácsné Géczi Julianna népmûvelõnél.
A Mûvelõdés Háza 2005. augusztus 8-12. között rendezi a
NÉPI JÁTSZÓHÁZVEZETÕK III. TOVÁBBKÉPZÕ TÁBORÁT
Sárospatakon a kispataki Alkotóházban.
Kérjük részvételi szándékát július 20-ig jelezze.
Érdeklõdés és felvilágosítás Kovácsné Géczi Julianna népmûvelõnél.
+]]>
+
+
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.mk.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.mk.xml
new file mode 100644
index 00000000000..64355303881
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.mk.xml
@@ -0,0 +1,163 @@
+
+
+
+
+ sHaMaLt bLOG - Hozzászólások
+ http://shamalt.uw.hu/index.php
+ Ti mondtátok.
+ hu
+ Nox v2.2
+ Copyright 2003-2006, sHaMaLt
+ shamalt@shamalt.tk (sHaMaLt)
+
+ http://shamalt.uw.hu/pic/rss_wap_blog.gif
+ sHaMaLt bLOG
+ http://shamalt.uw.hu/index.php
+
+ 5
+ http://blogs.law.harvard.edu/tech/rss
+
+ sHaMaLt, ma, 14:11 (Csak szex és más semmi)
+ http://shamalt.uw.hu/index.php?d=657/csak-szex-es-mas-semmi#komment_4348
+ meg fogom nezni. viszont ki mondta, hogy a zimmer atdolgozas? ;)
+ http://shamalt.uw.hu/index.php?d=657/csak-szex-es-mas-semmi#komment_4348
+ Wed, 04 Jan 2006 14:11:07 +0100
+
+
+ admc, ma, 14:09 (Csak szex és más semmi)
+ http://shamalt.uw.hu/index.php?d=657/csak-szex-es-mas-semmi#komment_4347
+ A Zimmer Feri nem átdolgozás, ezért aztán könnyebb is jónak lennie, szerintem is nagyszerû, nézd meg!
+ http://shamalt.uw.hu/index.php?d=657/csak-szex-es-mas-semmi#komment_4347
+ Wed, 04 Jan 2006 14:09:09 +0100
+
+
+ smv, ma, 13:51 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4346
+ Most éppen egy sincs. :)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4346
+ Wed, 04 Jan 2006 13:51:50 +0100
+
+
+ sHaMaLt, ma, 13:03 (Urlx)
+ http://shamalt.uw.hu/index.php?d=661/urlx#komment_4345
+ megkonnyiti az azonositast. mondjuk ha a munkahelyeden az egyik kollegadtol kapsz egy url-t, es eppen mogotted van a fonok, akkor ha latod, hogy a linkben szerepel peldanak okaert a kutyaszex.freeblog.hu oldal, akkor nem nyitod meg :P
+ http://shamalt.uw.hu/index.php?d=661/urlx#komment_4345
+ Wed, 04 Jan 2006 13:03:53 +0100
+
+
+ Balázs, ma, 13:03 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4344
+ Meg persze a tavaszi szünet, nyári szünet, õszi szünet, téli szünet, ilyen szünet, olyan szünet.
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4344
+ Wed, 04 Jan 2006 13:03:25 +0100
+
+
+ Balázs, ma, 13:01 (Urlx)
+ http://shamalt.uw.hu/index.php?d=661/urlx#komment_4343
+ Belföldön meg ugye itt van a href.hu, nekem az jobban bejön ennél. Nem értem, hogy egy rövid <acronym title="Uniform Resource Locator">URL</acronym>-be minek belevenni az eredeti domaint, alkalmanként ezáltal sokkal hosszabb lesz a kapott link, mint amilyen az eredeti. Még jó, hogy kikapcsolható.
+ http://shamalt.uw.hu/index.php?d=661/urlx#komment_4343
+ Wed, 04 Jan 2006 13:01:45 +0100
+
+
+ Gazala, ma, 13:01 (Typetester)
+ http://shamalt.uw.hu/index.php?d=660/typetester#komment_4342
+ Ezt a cuccot egy ideje ismerem :)
+ http://shamalt.uw.hu/index.php?d=660/typetester#komment_4342
+ Wed, 04 Jan 2006 13:01:18 +0100
+
+
+ smv, ma, 12:57 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4341
+ A google adsense 4 jegyû összege is tökéletes lenne, csak tudjam belõle kifizetni a cuccot. Ennyi lenne a reklámokkal csak a célom, hogy önfenntartó legyen az oldal. :) <br /> <br /> A screenshotos dolog tényleg jó 5let. :D <br /> <br /> És azért annyira nincsen sok idõm... Reggel 7:30 -ra suliba kell lenni, 15óráig álltalában suli van, utánna zenesuliba megyek pluszba az még két óra (modnjuk nem mindennap), hazavergõdöm 6-7 körül, tanulni egy kicsit, 8 óra, és van rá két órám, hogy 1-1 dolgot megcsináljak, akkor amikor már látni se látok. :D <br /> <br /> Ha pedig téynleg segítetek a dizájnban (suexID), akkor az nagyon nagyon jól jönne.
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4341
+ Wed, 04 Jan 2006 12:57:16 +0100
+
+
+ sHaMaLt, ma, 12:37 (Typetester)
+ http://shamalt.uw.hu/index.php?d=660/typetester#komment_4340
+ ez most del.icio.us volt, de jokat ir meg a <a href="http://techcrunch.com">Techcrunch</a> es a <a href="http://crunchnotes.com">Crunchnotes</a> is, es erdekes linkeket kuldenek a Weblabor linkfalra is, meg neha a sztahanovot is olvasom, bar egyre ritkabban.
+ http://shamalt.uw.hu/index.php?d=660/typetester#komment_4340
+ Wed, 04 Jan 2006 12:37:24 +0100
+
+
+ Haszprus, ma, 12:33 (Typetester)
+ http://shamalt.uw.hu/index.php?d=660/typetester#komment_4339
+ te milyen forrásokból szeded ezeket a szolgáltatásokat?
+ http://shamalt.uw.hu/index.php?d=660/typetester#komment_4339
+ Wed, 04 Jan 2006 12:33:26 +0100
+
+
+ Levente, ma, 12:15 (The Web 2.0 Quiz)
+ http://shamalt.uw.hu/index.php?d=659/the-web-2.0-quiz#komment_4338
+ 5/10. Azaz csak félig vagyok webkettõpontnullás, tehát webegypontnullás vagyok :)
+ http://shamalt.uw.hu/index.php?d=659/the-web-2.0-quiz#komment_4338
+ Wed, 04 Jan 2006 12:15:26 +0100
+
+
+ sHaMaLt, ma, 11:39 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4337
+ hm, mostanaban egyebkent is sokat nezek hatra a vallam folott, h nem kovet-e vki :D <br /> egyebkent meg a kika es szoba johet lampak szempontjabol
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4337
+ Wed, 04 Jan 2006 11:39:57 +0100
+
+
+ Haszprus, ma, 11:31 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4336
+ Nem volt cinizmus a web2.0-s példámban, mindenféle háttérsejtés kizárólag az Ön paranoid agyszüleménye :) <br /> <br /> Autó nem valószínû de azért thx a tippet :)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4336
+ Wed, 04 Jan 2006 11:31:25 +0100
+
+
+ Balázs, ma, 11:27 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4335
+ Mélcímet ne tartalmazzon.
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4335
+ Wed, 04 Jan 2006 11:27:29 +0100
+
+
+ sHaMaLt, ma, 11:27 (The Web 2.0 Quiz)
+ http://shamalt.uw.hu/index.php?d=659/the-web-2.0-quiz#komment_4334
+ á, via Crunchnotes es delicious, sztahanov mostanaban engem nem annyira erdeklo dolgokrol ir. :)
+ http://shamalt.uw.hu/index.php?d=659/the-web-2.0-quiz#komment_4334
+ Wed, 04 Jan 2006 11:27:21 +0100
+
+
+ sHaMaLt, ma, 11:25 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4333
+ <b>Haszprus:</b> tenyleg nem erre talaltak, ki, de akkor maradjon a masik 2 erveles :) <br /> <br /> <q>gondolom úgy hogy értesülni lehessen arról ha indul egy új blog pl. web2.0 kulcsszóval...</q> – cinikus megjegyzesek rulz, egyebkent tenyleg valahogy ugy gondoltam, mint a pubsubnal, csak itt mondjuk realtime mehetne a moka. <br /> <br /> lampaval kapcsolatban ha meg tudod oldani autoval, Dunakeszin tudom ajanlani az Eglo Lux nevu eleg nagy lampaaruhazat, eleg nagy a valasztek. <br /> <br /> <b>smv:</b> a kulon oldal tartalmazhatna alapveto adatokat a szajtrol (url, kulcsszavak, kontakt-ember mailcime, ertekeles, akar csillagos modszerrel, kommentek, az utolso x post szovege vagy cimei, esetleg logo az oldalhoz vagy hetente frissulo screenshot (ez le is maradt a listabol)) <br /> <br /> a google reklamokkal kapcsolatban te tudod, de szerintem egy nagyobb harom-, esetleg egy kisebb negyszamjegyu osszegen kivul sokra ne szamits.
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4333
+ Wed, 04 Jan 2006 11:25:34 +0100
+
+
+ Balázs, ma, 11:20 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4332
+ Hamarosan, suexID, hamarosan. Pillanatnyilag három fronton harcolok, ha így folytatom, ebbõl bloggervilágháború lesz :D
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4332
+ Wed, 04 Jan 2006 11:20:44 +0100
+
+
+ suexID, ma, 11:17 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4331
+ Balázs: írhatnál errõl is a blogodba! :D
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4331
+ Wed, 04 Jan 2006 11:17:13 +0100
+
+
+ Haszprus, ma, 11:04 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4330
+ nem lesz az olyan rövid idõ, ma hajnalban asztali lámpát kerestem magamnak a neten a lap.hu-ról kiindulva és kb. 100 cég oldalán rágtam át magam, egyik nagyobb hányás volt mint a másik (animált nyelvválasztó zászlós kategória 1-2 kivétellel).
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4330
+ Wed, 04 Jan 2006 11:04:02 +0100
+
+
+ Balázs, ma, 10:48 (Blogsearch.hu)
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4329
+ Én azt nem értem, hogy lehet egyáltalán bármit is táblázatos dizájnnal megcsinálni. Egyszerûen képtelen vagyok rá. smv, ha egy 16 éves otthon ülõ fiúcska vagy, akkor elég sok idõd van (tudom, hiszen én is voltam 16 éves), tanuld meg a <acronym title="Cascading Style Sheet">CSS</acronym>-t. Ha csak táblázatolásra vagy képes, akkor rövid idõn belül körbe fog röhögni mindenki.
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#komment_4329
+ Wed, 04 Jan 2006 10:48:15 +0100
+
+
+
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.mr.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.mr.xml
new file mode 100644
index 00000000000..1fafa1825e7
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.mr.xml
@@ -0,0 +1,68 @@
+
+
+
+
+ sHaMaLt bLOG - Ajánló
+ http://shamalt.uw.hu/index.php
+ 5 véletlenszerû bejegyzés
+ hu
+ Nox v2.2
+ Copyright 2003-2006, sHaMaLt
+ shamalt@shamalt.tk (sHaMaLt)
+
+ http://shamalt.uw.hu/pic/rss_wap_blog.gif
+ sHaMaLt bLOG
+ http://shamalt.uw.hu/index.php
+
+ 5
+ http://blogs.law.harvard.edu/tech/rss
+
+ Helyzet
+ http://shamalt.uw.hu/index.php?d=242/helyzet
+ Be vagyok havazva öcsém, mint a palatetõ decemberben.
+ blog
+ http://shamalt.uw.hu/index.php?d=242/helyzet#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=242/helyzet
+ Mon, 04 Apr 2005 14:13:00 +0200
+
+
+ Referendum
+ http://shamalt.uw.hu/index.php?d=59/referendum
+ Tessék hozzászólni itt lentebb abban a kérdéskörben, hogy kellene-e olyan gép, amivel lehet itt jobboldalon mindenféle hozzászólást eszközölni, vagy felesleges, mert itt van a kommentlehetõség/amúgy se szól hozzá senki? Érthetõ voltam? (Szóval legyen oldalt üzenõfal, ami kvázi csetként fogható fel?)
+ blog
+ http://shamalt.uw.hu/index.php?d=59/referendum#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=59/referendum
+ Sat, 09 Oct 2004 21:03:00 +0200
+
+
+ A Terror Háza
+ http://shamalt.uw.hu/index.php?d=386/a-terror-haza
+ Voltam ma a Terror Házában. Most nem akarnék itt hosszasan véleményt nyilvánítani, de szerintem mindenki menjen el egyszer, mert érdemes. (<a href="http://www.terrorhaza.hu">http://www.terrorhaza.hu</a>)
+ kultúra
+ http://shamalt.uw.hu/index.php?d=386/a-terror-haza#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=386/a-terror-haza
+ Fri, 07 Nov 2003 19:54:00 +0100
+
+
+ Ügyintézés, pláza, Tesco
+ http://shamalt.uw.hu/index.php?d=338/ugyintezes-plaza-tesco
+ Zsír. Voltam ma elintézni egyetemi dolgokat, erkölcsi bizonyítvány, gólyatábor, stbstb., meg csináltattam bankkártyát, 10 nap múlva kész, zsé.</p><p>Ja meg bazzeg, elmentem a Pólusba, megtekintettem a Media Marktot. Volt vmi F1 Challenge 99-02 játék, ott volt 2 felépített versenyautó, be lehetett ülni, szal toltam pár kört, nem is néztek sokan hülyének, mondjuk eléggé meleg volt azért, hogy így odagyûltek körém az emberek, mondjuk ez biztos csak a Sumakkert porbaalázó vezetési technikámnak volt köszönhetõ. Eléggé jó volt a game, szal asszem mindjárt le is kapom valahonnan. Megnéztem a billentyûzeteket is, hát ilyen 18ezer ft+fa vmi microsoftos szar, kell a fasznak se. Átmentem Office Depotba, és ott vettem inkább keyboardot. Ez már nem az a 2ezer forintos kategória, 3780 ft volt, bizony. :D De annak ellenére kurva jó, Samsung Internet Keyboard, pont az ilyen lustáknak találták ki, mint én.</p><p>Hazafelé megint befigyelt Tesco feeling, megint szélsebes pénztárnõkkel, megarulez. Love Tesco. Reklám.
+ blog
+ http://shamalt.uw.hu/index.php?d=338/ugyintezes-plaza-tesco#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=338/ugyintezes-plaza-tesco
+ Mon, 11 Aug 2003 17:19:00 +0200
+
+
+ ATOM
+ http://shamalt.uw.hu/index.php?d=169/atom
+ Az <acronym title="Really Simple Syndication">RSS</acronym> mellé lett ATOM feed is, mert unatkoztam. Még nincs neki gomb, mert a régieket is kicsit át fogom alakítani, de a Firefox live bookmarkjánál például látszik. Egyébként pedig: <a href="/atom/">bejegyzések</a>, <a href="/atom/?m=k">hozzászólások</a>, <a href="/atom/?m=s">spájz</a>.
+ blogmotor
+ http://shamalt.uw.hu/index.php?d=169/atom#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=169/atom
+ Tue, 21 Dec 2004 14:30:00 +0100
+
+
+
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.mv.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.mv.xml
new file mode 100644
index 00000000000..f828dc9c2bf
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.mv.xml
@@ -0,0 +1,163 @@
+
+
+
+
+ sHaMaLt bLOG - Verziótörténet
+ http://shamalt.uw.hu/index.php
+ Verziótörténet
+ hu
+ Nox v2.2
+ Copyright 2003-2006, sHaMaLt
+ shamalt@shamalt.tk (sHaMaLt)
+
+ http://shamalt.uw.hu/pic/rss_wap_blog.gif
+ sHaMaLt bLOG
+ http://shamalt.uw.hu/index.php
+
+ 5
+ http://blogs.law.harvard.edu/tech/rss
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_54
+ <acronym title="HyperText Markup Language">HTML</acronym> elemek és bejegyzéscím a komment <acronym title="Really Simple Syndication">RSS</acronym>-ben.
+ http://shamalt.uw.hu/index.php?v#vh_54
+ Sun, 25 Dec 2005 00:00:00 +0100
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_53
+ A hozzászólás gomb disabled-dé válik megnyomás után. (Problémákat okozott, kiiktatva.)
+ http://shamalt.uw.hu/index.php?v#vh_53
+ Thu, 03 Nov 2005 00:00:00 +0100
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_52
+ Rövid cím a bejegyzés-linkeknél.
+ http://shamalt.uw.hu/index.php?v#vh_52
+ Sat, 29 Oct 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_51
+ Idõgép. (Az aktuális dátumhoz képest 1 vagy 2 évvel, illetve egy hónappal régebben keletkezett bejegyzés.)
+ http://shamalt.uw.hu/index.php?v#vh_51
+ Fri, 28 Oct 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_50
+ Sitemap és gyorsítások a kódon.
+ http://shamalt.uw.hu/index.php?v#vh_50
+ Sun, 23 Oct 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_49
+ Idõrend szerinti vagy fordított rendezési lehetõség, illetve permalink a hozzászólásoknál, valamint directory tag hozzáadása a kategóriáknál.
+ http://shamalt.uw.hu/index.php?v#vh_49
+ Fri, 14 Oct 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_48
+ Tagek (category tag, bookmark) hozzáadása, és némi bugfix a hozzászólásoknál (a JavaScriptes linkeket nem alakítja át).
+ http://shamalt.uw.hu/index.php?v#vh_48
+ Sun, 02 Oct 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_47
+ Felesleges <acronym title="Structured Query Language">SQL</acronym> queryk kigyomlálása, gyorsabb motor.
+ http://shamalt.uw.hu/index.php?v#vh_47
+ Sun, 02 Oct 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_46
+ Havi nézet helyett mindig a legújabb x bejegyzés megjelenítése a fõoldalon, lapozással.
+ http://shamalt.uw.hu/index.php?v#vh_46
+ Sat, 01 Oct 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_45
+ A kommentelésnél már használhatók bizonyos <acronym title="HyperText Markup Language">HTML</acronym> tagek.
+ http://shamalt.uw.hu/index.php?v#vh_45
+ Fri, 30 Sep 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_44
+ Komment archívum.
+ http://shamalt.uw.hu/index.php?v#vh_44
+ Sat, 24 Sep 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_43
+ Acronym kezelés bug kijavítva, némi gyorsítás a kódon.
+ http://shamalt.uw.hu/index.php?v#vh_43
+ Mon, 19 Sep 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_42
+ A hozzászólásoknál kisebb hibajavítások: a hozzászóló <acronym title="Internet Protocol Number">IP</acronym> címét már helyesen menti el, illetve két hozzászólás között mostantól legalább 20 másodpercnek el kell telnie. Meg persze spamvédelem a trackbackhez.
+ http://shamalt.uw.hu/index.php?v#vh_42
+ Mon, 05 Sep 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_41
+ Kisebb bugok javítgatása. (Bejegyzések, archívum, kategóriák és verziótörténet megjelenítése, <acronym title="Really Simple Syndication">RSS</acronym> autodiscovery, <title> helyes kiírása.)
+ http://shamalt.uw.hu/index.php?v#vh_41
+ Thu, 25 Aug 2005 00:00:00 +0200
+
+
+ 2.2
+ http://shamalt.uw.hu/index.php?v#vh_40
+ Állapot bevezetése a bejegyzéseknél (publikálható vagy sem), ehhez kapcsolódóan pedig a motor átírása számos helyen.
+ http://shamalt.uw.hu/index.php?v#vh_40
+ Tue, 23 Aug 2005 00:00:00 +0200
+
+
+ 2.1
+ http://shamalt.uw.hu/index.php?v#vh_39
+ Új mezõk az <acronym title="Really Simple Syndication">RSS</acronym> feednél: webMaster, ttl, docs.
+ http://shamalt.uw.hu/index.php?v#vh_39
+ Sun, 21 Aug 2005 00:00:00 +0200
+
+
+ 2.1
+ http://shamalt.uw.hu/index.php?v#vh_38
+ Apróbb változtatások a motorban a régi bejegyzések miatt, illetve rendezés id helyett dátum alapján.
+ http://shamalt.uw.hu/index.php?v#vh_38
+ Sun, 14 Aug 2005 00:00:00 +0200
+
+
+ 2.1
+ http://shamalt.uw.hu/index.php?v#vh_37
+ Hozzászólások száma a bejegyzés címe mellett a <acronym title="Wireless Application Protocol">WAP</acronym>hoz és az <acronym title="Really Simple Syndication">RSS</acronym>hez. Persze kikapcsolható.
+ http://shamalt.uw.hu/index.php?v#vh_37
+ Sat, 13 Aug 2005 00:00:00 +0200
+
+
+ 2.1
+ http://shamalt.uw.hu/index.php?v#vh_36
+ Az <acronym title="Really Simple Syndication">RSS</acronym> feed bõvítése új mezõkkel: guid, category, comments. És az elmaradhatatlan bugfixek.
+ http://shamalt.uw.hu/index.php?v#vh_36
+ Thu, 04 Aug 2005 00:00:00 +0200
+
+
+ 2.1
+ http://shamalt.uw.hu/index.php?v#vh_35
+ Ajánló <acronym title="Really Simple Syndication">RSS</acronym> feeddel (öt véletlenszerû bejegyzés), illetve kisebb bugfixek.
+ http://shamalt.uw.hu/index.php?v#vh_35
+ Sun, 24 Jul 2005 00:00:00 +0200
+
+
+
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.xml
new file mode 100644
index 00000000000..268133bbed8
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/shamalt.uw.hu.xml
@@ -0,0 +1,113 @@
+
+
+
+
+ sHaMaLt bLOG
+ http://shamalt.uw.hu/index.php
+ sHaMaLt bLOGja
+ hu
+ Nox v2.2
+ Copyright 2003-2006, sHaMaLt
+ shamalt@shamalt.tk (sHaMaLt)
+
+ http://shamalt.uw.hu/pic/rss_wap_blog.gif
+ sHaMaLt bLOG
+ http://shamalt.uw.hu/index.php
+
+ 5
+ http://blogs.law.harvard.edu/tech/rss
+
+ Mi lesz?
+ http://shamalt.uw.hu/index.php?d=662/mi-lesz
+ </p><blockquote><div><p>Szilveszterkor elkerülhetetlen, hogy obligát módon be ne rúgjunk, ilyenkor ez törvényszintre emelkedik, mint a béna házibulik szervezésének kötelessége. A merev részeg állapot elérésekor is fontos azonban, hogy kínosan ügyeljünk a látszatra, amikor a karácsonyi maradék tojáslikõr összeveszik a gyomorban az olcsó pezsgõvel és a napvilágra akar jönni, lerendezni a vitás kérdést.</p></div></blockquote><p>Nem is értem, miért olvasom én még <a href="http://miles.hu">milest</a>. Van havi két post, és azok is általában hasonlóan színvonalasak...
+ blog
+ http://shamalt.uw.hu/index.php?d=662/mi-lesz#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=662/mi-lesz
+ Wed, 04 Jan 2006 14:14:00 +0100
+
+
+ Urlx
+ http://shamalt.uw.hu/index.php?d=661/urlx
+ <img src="/pic_post/060104_urlx.jpg" alt="Urlx" /></p><p>A számos eddig ismert idegen és hazai linkrövidítõs és linkhosszabbítós próbálkozások mellé csatlakozott egy új, ezúttal AJAXos köntösben: <a href="http://urlx.org">Urlx</a>. Egyszerû, gyors, hasznos, a <a href="http://tinyurl.com">tinyurl</a>-t külföldön simán le fogja nyomni.
+ web 2.0
+ http://shamalt.uw.hu/index.php?d=661/urlx#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=661/urlx
+ Wed, 04 Jan 2006 12:31:00 +0100
+
+
+ Typetester
+ http://shamalt.uw.hu/index.php?d=660/typetester
+ <img src="/pic_post/060104_typetester.jpg" alt="Typetester" /></p><p>Dizájnereknek, webmestereknek, webes megoldásokat nyújtó, virágszimbólummal operáló webfejlesztõ cégeknek és magukat webes félisteneknek képzelõ Pistikéknek hasznos util lehet a <a href="http://typetester.maratz.com/">Typetester</a>, melynek segítségével egy adott szöveget többféle fonttal és formázással megjelenítve hasonlíthatunk össze a képernyõn. Tényleg jó.
+ web 2.0
+ http://shamalt.uw.hu/index.php?d=660/typetester#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=660/typetester
+ Wed, 04 Jan 2006 12:22:00 +0100
+
+
+ The Web 2.0 Quiz
+ http://shamalt.uw.hu/index.php?d=659/the-web-2.0-quiz
+ <img src="/pic_post/060104_the_web_2.0_quiz.jpg" alt="The Web 2.0 Quiz" /></p><p>10/10, és <a href="http://blog.f4l.be/web2quiz/index.php">neked</a>?
+ web 2.0
+ http://shamalt.uw.hu/index.php?d=659/the-web-2.0-quiz#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=659/the-web-2.0-quiz
+ Wed, 04 Jan 2006 00:41:00 +0100
+
+
+ Blogsearch.hu
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu
+ Részben saját indíttatásból, részben pedig kérésre elhatároztam, hogy építõ jelleggel megosztanám gondolataimat a készülgetõ magyar blogkeresõ szolgáltatásról, a <a href="http://blogsearch.hu">Blogsearchrõl</a>.</p><p id="tovabb">Az alapötlet jó, a blogringen kívül a magyar blogszcénát átfogóan rendszerezõ hazai szájt eddig nem létezett, az e téren fennálló ûr kitöltésére tehát elviekben alkalmas lehetne a blogsearch – azonban nem a jelenlegi béta állapotában.</p><p>A dizájnt e helyütt nem említve kezdjük ott, hogy komoly, széleskörû felhasználásra tervezett szájt esetében – a kifejezetten adatsorok közlésére szolgálókon kívül – táblázatok használatának nem igazán van helye, layoutra tehát táblákat nem alkalmazunk, egyrészt a méret, másrészt a sebesség szempontjából, harmadrészt pedig azért, mert a táblákat alapvetõen nem erre találták ki.</p><p>A továbbiakban – mivel túlságosan hosszúra nyúló cikket nem szeretnék írni – az oldal egyes részeivel, illetve funkcióival kapcsolatos ötleteket, javaslatokat szedném csokorba, vázlatosan.</p><ul class="vh"><li><b>Fõoldal</b><ul class="bullet"><li>ütõs, átlátható, nem túl bonyolult dizájn szükséges,</li><li>az elõzõekben elmondottak szerint tableless, szemantikus megvalósítással (<acronym title="HyperText Markup Language">HTML</acronym> és <acronym title="Cascading Style Sheet">CSS</acronym>)</li><li>a Google reklámok nem szerencsések, ha késõbb hirdetõi érdeklõdés mutatkozik az oldal iránt, akkor úgyis komolyabb hirdetési formák lesznek helyettük</li><li>a legújabb tagok szekcióban elegendõ lenne a legfrissebb öt blogot megjeleníteni</li></ul></li><li><b>Regisztráció</b><ul class="bullet"><li>az egyes input mezõkhöz tartozó használati utasítások túlságosan hangsúlyosak, átkerülhetnének esetleg tooltip-be</li><li>szükséges lenne az e-mail útján vagy egyéb módon történõ verifikáció a visszaélések, spambotok elkerülésére (az admin általi jóváhagyás nagyszámú site esetén körülményes)</li><li>nem lenne rossz az <acronym title="Uniform Resource Locator">URL</acronym>-ek és az e-mail cím alaki helyességének ellenõrzése, mondjuk egy megfelelõ reguláris kifejezéssel</li><li>a felhasználónév létezését akkor is ellenõrizni kellene, ha az még nincs jóváhagyva az admin által</li></ul></li><li><b>Keresés</b><ul class="bullet"><li>teljesen felesleges túlbonyolítani a keresést a három, rádiógombbal kiválasztható feltétellel, célszerûbb lenne ezeket egy OR kapcsolattal összekötni</li><li>(némi AJAX bûvészkedést esetleg lehetne alkalmazni)</li><li>a cím elõtag ugyan minek? ;)</li><li>nem lenne hátrány, ha a találatoknál megjelenne az a szövegkörnyezet, amelyben az adott keresõkifejezés elõfordult, az adott keresõszó kiemelésével (opcionálisan a post URL-jével)</li><li><acronym title="Really Simple Syndication">RSS</acronym> feed a találatokról</li><li>külön info oldal az egyes blogokról, amely tartalmazná a szájt lényeges adatait</li><li>értékelési, kommentelési lehetõség</li></ul></li></ul><p>A kommentekben jöhetnek a további vélemények, ötletek, javaslatok csõstül.
+ geek
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=658/blogsearch.hu
+ Tue, 03 Jan 2006 23:09:00 +0100
+
+
+ Csak szex és más semmi
+ http://shamalt.uw.hu/index.php?d=657/csak-szex-es-mas-semmi
+ <img src="/pic_post/060103_csak_szex_es_mas_semmi.jpg" alt="Csak szex és más semmi" /></p><p>Még a vizsga hatása alatti, kissé tudatmódosult állapotban sikerült beülnöm a mozira – melytõl az olvasott kritikák és suexID kolléga <a href="http://lpfan.hu/suexid/20051210/csak-szex-es-mas-semmi/">elõzetes állásfoglalása</a> alapján nem vártam túl sokat.</p><p>Viszont ami engem is meglepett, hogy a film egyáltalán nem tartozik a mostanság reneszánszukat érõ népbutító magyar szennymozik közé – legalábbis amennyiben egy átlagos plázaribi intelligenciáját meghaladó szellemi kvalitásokkal rendelkezünk, és átlátunk a szitán, hogy ti. az egész mozi egy akkora fricska a mostanában egyébként tényleg nagy divatnak örvendõ emanci-karrierista szingli-életmódnak, hogy beleremeg a ház.</p><p>Egyszer kifejezetten szórakoztató, adnék rá egy hatost a tízbõl.
+ mozi
+ http://shamalt.uw.hu/index.php?d=657/csak-szex-es-mas-semmi#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=657/csak-szex-es-mas-semmi
+ Tue, 03 Jan 2006 22:11:00 +0100
+
+
+ Röviden
+ http://shamalt.uw.hu/index.php?d=656/roviden
+ A tegnapi nettó két óra alvás ellenére sikerült egy négyesre abszolválnom a <acronym title="Polgári perjog">Pp.</acronym> kollokviumot, és ez jó.</p><p>A respekt-lista pedig bõvült kicsit, az érintettek majd észreveszik gondolom. :P
+ blog
+ http://shamalt.uw.hu/index.php?d=656/roviden#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=656/roviden
+ Tue, 03 Jan 2006 20:26:00 +0100
+
+
+ Bújjék
+ http://shamalt.uw.hu/index.php?d=655/bujjek
+ E tegnapi, esemesben kapott kis rigmussal szeretnék mindenkinek boldog új évet és egyéb, ilyenkor szokásos dolgokat kívánni:</p><blockquote><div><p>Itt a Szilveszter, vége az évnek,kell a zsíros kocsonya, vörösbor a bélnek.Hopp, itt egy kismalac, rálép a kekszre,vedd rá az asszonyt az orális szexre!</p></div></blockquote><p>Szóval BÚÉK. :D
+ blog
+ http://shamalt.uw.hu/index.php?d=655/bujjek#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=655/bujjek
+ Sun, 01 Jan 2006 10:39:00 +0100
+
+
+ Cool a verda
+ http://shamalt.uw.hu/index.php?d=654/cool-a-verda
+ Nem kellett sokat várni, elkészült a Pimp my ride hazai koppintása is. <i>Cool a verda</i> néven fut a mûsor, a hasonló nevû kereskedelmin, Prof. habil. Majoros "Majka" Péter fõszereplésével. Ne-vet-sé-ges :D
+ blog
+ http://shamalt.uw.hu/index.php?d=654/cool-a-verda#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=654/cool-a-verda
+ Thu, 29 Dec 2005 00:11:00 +0100
+
+
+ Kazánház
+ http://shamalt.uw.hu/index.php?d=653/kazanhaz
+ Tessék, december 27-e van, és nem találni fûtésszerelõt a fõvárosban, még az sem vállalja el a melót, aki fennhangon hirdeti, hogy ünnep- és munkaszüneti napokon is dolgozik. Komolyan, ilyenkor karácsony táján megbénul az egész ország, mindenki tesped.</p><p>Én meg lassan építek egy iglut, vagy nyitok egy szaunát, attól függõen, hogy éppen be vagy ki nem lehet kapcsolni a kazánt. :D
+ blog
+ http://shamalt.uw.hu/index.php?d=653/kazanhaz#hozzaszolasok
+ http://shamalt.uw.hu/index.php?d=653/kazanhaz
+ Tue, 27 Dec 2005 15:59:00 +0100
+
+
+
\ No newline at end of file
diff --git a/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/ugyanmar.blogspot.com.xml b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/ugyanmar.blogspot.com.xml
new file mode 100644
index 00000000000..f7950171e4f
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/iso-8859-2-hungarian/ugyanmar.blogspot.com.xml
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+Ugyanmar
+"Ball ist rund. Spiel dauert 90 Minuten. Soviel ist schon mal klar. Alles andere ist Theorie. - Ball ab!"
+
+tag:blogger.com,1999:blog-6504251
+2006-01-01T21:07:30Z
+Blogger
+
+
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
+
+true
+
+
+
+-b-
+
+2006-01-01T22:02:00+01:00
+2006-01-01T21:07:30Z
+2006-01-01T21:07:30Z
+
+tag:blogger.com,1999:blog-6504251.post-113614965046768984
+Tul a kinos beszelgetesen. Mondhatni olyan volt, m...
+
+
Tul a kinosbeszelgetesen. Mondhatni olyan volt, mint amilyennek elkepzeltem, megerto, jo fej es nyitott, nem nehez eszre vennem, hogy a tenyeren hordoz. Engem meg lehet mindenfele negativ jelzovel illetni, hiszen mindenrol en tehetek, hibat hibara halmozok, es egyre tobb embert bantok meg, es sikerul befeketitenem magamat elottuk.
+
+false
+
+
+
+
+-b-
+
+2005-12-25T17:54:00+01:00
+2005-12-25T16:55:34Z
+2005-12-25T16:55:34Z
+
+tag:blogger.com,1999:blog-6504251.post-113552973403653194
+ha beírod a keresőbe, hogy bugyit loptam, akkor is...
+ha beírod a keresőbe, hogy <a href="http://www.google.co.hu/search?q=bugyit+loptam&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:hu-HU:official">bugyit loptam</a>, akkor is rám tudsz találni. valakinek tegnap sikerült. remélem megtaláltad, amit kerestél.
+false
+
+
+
+
+-b-
+
+2005-12-25T17:35:00+01:00
+2005-12-25T16:51:09Z
+2005-12-25T16:51:06Z
+
+tag:blogger.com,1999:blog-6504251.post-113552946632091978
+Hatalmas, hobanmaszkalas az en logofulu dragammal....
+
+
Hatalmas, hobanmaszkalas az en logofulu dragammal. Joleso faradtsag minden tagomban, melegedes, agyban netezes... szunido filing.
Eeees, valaki, aki mostanaban nagyon figyel ram, meglepett Kretekkel. Hallgattuk a jellegzetes kretek-kretek hangot, es elveztuk nagyon. Olyanokat mond, ami nagyon jol esik es el is bizonytalanit. Ez is megoldasra var meg.
kicsit hirtelen, de ismet karacsony. nosztalgikus, analizáló hangulatu, elgondolkodtato. Mas a felallas, mint egy eve volt, de mit titkoljam, az meg akkor is jobban tetszett, ha tudtam, nem sok jovoje lesz. Ennek meg lehetne, megse erzem azt a bizsergest. Masmilyet persze igen, es nem is ertem miert a nyavajgas.
+ Azert, ha vege a karacsonynak, lesznek érdekes dolgok. Mar most erzem, hogy lesz egy kinos beszelgetes, aminek a vege ugyis nagy összeborulas lesz, meg nemi egymast kerulgetos kerteles, es elegedetlenkedes.
+ na bekesboldog
7 kredit, karácsonyra! kevés tanulással, kis kérleléssel, csodáscsodás
+
+false
+
+
+
+
+-b-
+
+2005-12-21T21:30:00+01:00
+2005-12-21T20:32:28Z
+2005-12-21T20:32:28Z
+
+tag:blogger.com,1999:blog-6504251.post-113519714871730804
+mára csak egy olykor feltűnő ablak maradt belőle.
+...
+
+
mára csak egy olykor feltűnő ablak maradt belőle.
+ aki azt hiszi, mindent tud rólam, pedig csak olyannak lát, amilyennek szeretne. és ez egyre kevésbé pozitív, sokkal inkább közömbös.
+
+false
+
+
+
+
+-b-
+
+2005-12-19T15:53:00+01:00
+2005-12-19T14:54:53Z
+2005-12-19T14:54:53Z
+
+tag:blogger.com,1999:blog-6504251.post-113500409315975630
+Életemben most először elvették a dolgozatomat pus...
+
+
Életemben most először elvették a dolgozatomat puskázás miatt. (Valójában nem puskáztam, csak kiszúrták a farzsebemből kikandikáló kisformátumúra gyártott fénymásolt könyvecskét. Amúgy tök profi volt, kár, hogy még csak nem is használtam.) Majd legközelebb.
+
+false
+
+
+
+
+-b-
+
+2005-12-18T18:43:00+01:00
+2005-12-18T17:50:39Z
+2005-12-18T17:50:39Z
+
+tag:blogger.com,1999:blog-6504251.post-113492823964635548
+Be nem áll a szánk... Ha visszafogjuk magunkat, la...
+
+
Be nem áll a szánk... Ha visszafogjuk magunkat, laza 40 perc a napi telefon adag, de néha jó órákig is beszélni. (Kicsit sokáig tartott, de itt van, már érzek.)
+
+false
+
+
+
+
+-b-
+
+2005-12-17T21:44:00+01:00
+2005-12-18T13:10:38Z
+2005-12-17T20:47:22Z
+
+tag:blogger.com,1999:blog-6504251.post-113485244280500703
+A terv az volt, hogy ha viszonylag későn, mondjuk ...
+
+
A terv az volt, hogy ha viszonylag későn, mondjuk úgy nyolc körül indulok el vásárolni, akkor már nem kell a tömegtől tartani. Annyira nem jött be a dolog, fejvesztve rohant a tömeg az ajándékok után. Viszont mégis van már, aki kap tőlem is.
+
+false
+
+
+
+
+-b-
+
+2005-12-17T07:59:00+01:00
+2005-12-17T07:04:05Z
+2005-12-17T07:04:05Z
+
+tag:blogger.com,1999:blog-6504251.post-113480304548149887
+Természetesen már reggel eszembe jutott nosztalgiá...
+
+
Természetesen már reggel eszembe jutott nosztalgiázni, távolbarévedni az Astoriánál. Vége a szorgalmi időszaknak, és tessék, már csak 5 tárgyam van függőben, hiányzó zh-k, házik miatt. Kellemes szombati program vár ma is, pót zh, igen. Egyelőre senki sem kap ajándékot.
+
+false
+
+
+
+
+-b-
+
+2005-12-11T11:52:00+01:00
+2005-12-11T10:59:49Z
+2005-12-11T10:58:08Z
+
+tag:blogger.com,1999:blog-6504251.post-113429868817467884
+Már tavaly is ilyen durva volt a karácsinyi láz? M...
+
+
Már tavaly is ilyen durva volt a karácsinyi láz? Most először komolyan elgondolkodtam a karácsonyi ajándékok online beszerzésén. Aztán végül mégis felülkerekedik majd rajtam a trend, és beállok pár órára a sorba.
+ A Sony reklám időközben mindenki kedvence lett, én gyorsan mondom is mindenkinek, hogy amúgy Jose Gonzalez, igen igen, mindenki az albumot akarja.
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
So what's the result of having an extremly happy Holiday with family, friends and all yout loved ones?! Nightmares because of the coming exams on the 5th and 6th...I'm tooooo scared! But I know I will make it! There are plenty of big news, good news news news....and I promise as soon as I survive the exam on the 6th I will tell ya all about them...
+
+
+
+
Today N-girlie told me on phone that my voice is like little twinkle and it is so good to hear this again in my voice....well...I like to be "twinklin" I only wish exams were over...
+
+
+
+
I'm still not satisfied with these new colors in my blog...When should X-Mas design be over?! Okay I can hold on for a lil more time :)
+I haven't written for a while..again. I know I know....it is so hard to sit down and write the way I used to these days. :( I had exams till 20th of December...so I had absolutly no X-Mas feeling. Only the wonderful smell of cookies each day reminded me Christmas was coming as my mom was baking all kinds of cakes in the past 2 weeks. So after surviving my exam on the 20th I started to make the presents for mom and dad...only one was ready.
+
+
+Christmas day has come and it was just so wonderful as we were standing at the tree and dad read the verse from the Bible and we prayed and then set down to dinner.
+
+
+Finally the time came when we gave each others the gifts...oh I was so excited...will they like the presents I made for them by myself with so much love?! They did. When they opened one of the gifts from me..I saw that mom's eye was shining from tears...and then I just started to cry....at that time I felt the love for them so much it hurt...I LOVE YOU MOM AND DAD. I am thankful for God for my family...they mean everything to me on this Earth.
+
+
+On the 25th my whole big family was here .....9 person + a big dog in a small room...but you know the sayin about good people in a small room :) And on the 26th and 27th we were at mom's best friend's house. It was fine. Especially cause Zaza was there who is the lovliest lil boy on the whole wide world..until I don't have my own baby :) I love him! He is tooooooo cute! So I had a really busy Christmas. I miss Fanni so bad..it is so strange that we didn't meet on Christmas day :( But I know she is doing well she is happy and that makes me happy too. KisHerceg has sent me a greetings card....it made me soooo happy. It was so good to hold it in my hands and to know he was thinking of me at Christmas. And I am such a loser I had no time to write to him a real e-mail...only short one to let him know i think of him. But no when I look at our e-mails and see how many he has written and how many I have ... I feel bad :(
+
+
+
+I feel soemthing is wrong with these colors in the new desing....I mean dark red and green..typical X-Mas feeling but these are not so fun colors :) But I'm too lazy to change it...anyway..I won't have this for a long time...but I wanted some X-Mas feeling in my blog. Maybe it make you forget I haven't written for a long time (:
+
+
+
+I cannot live without you.
+
+
+ Goodbye my lover. Goodbye my friend. You have been the one. You have been the one for me.
+
+And I still hold your hand in mine. In mine when I'm asleep.
+ And I will bear my soul in time, When I'm kneeling at your feet. Goodbye my lover. Goodbye my friend. You have been the one. You have been the one for me. I'm so hollow, baby, I'm so hollow. I'm so, I'm so, I'm so hollow.
+
+
The horror...as you are waiting for your exam and know it doesn't matter what you have learnt...cause he knows the result at the very first moment he looks at you entering the door. I know he is a psycho...But I simply can not flirt with a teacher..ugh..I'm not that kind of girl.
+
We knew that the key to success was blond hair, green eyes and big boobs...so who know me can imagine how scared I was with not having any of these. That's okay with me, cause I never mind tellin jokes on how tiny mine are..sometimes it's fun to be ironic.
+
As I was waiting for the executor...I was tooo scared. Finanally I could give an almost right answer to his crazy no sence question...N almost kicked my leg under the table cause I was never looking into his eyes as he was looking at me in a ....... way. I can't help..it's disgusting! So thanks not to tiny skirt and winks...but thanks to the book I read and my two beautiful friends who made such an impact on this man, that he gave a 4 to me I passed this exam. Maaaaaaan I was so happy. As he was writing the note in my index I was taping my feet under the table for stayin alive beats :) It's oveeeeeeeeeeer!
+
Now nothing can stop me, although I have to see the most handsome dentist this evening. Well..it is strange, cause he looks so cool, he is crazy, basketball player, has humor...sexy..and his whole arm is in my mouth... :) But some girls even flirt with their gynecologist...yakkkkk... :/
+
But if a guy has good hands for basketball and also good heart for it, then everythings just fine :)
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
az amugy
+csak szereti magat biztonsagban tudni (amugy meg nem durrogtat ijesztgetesbol mindenfele)
+
+mielott visszamentem debr-be tegnap, talalkoztam a gaborral :) aszonta, h a sztavi is megy vele mikor visszamegy karlsruhe-be...
+eeeeenisakaroook utazniiii!
+
+megcsodaltam az itteni karacsonyfat (mar ami maradt belole), leettem rola az osszes konyakmeggyet, plejsztesonoztem, tanulni valahogy nem megy
+
+false
+
+
+
+
+rekuci
+
+2006-01-02T18:29:00+01:00
+2006-01-02T17:30:39Z
+2006-01-02T17:30:39Z
+
+tag:blogger.com,1999:blog-5716684.post-113622303980230462
+Mintha a Ziz ASZONDTA VOLNA HOGY LESZ A LOVARDÃBA ...
+
+
vegre sikerult megnezni az 50 elso randit :)
+
+ja es Zizi, neked is boldog uj evet... :) oda akartam adni a karacsonyi ajandekod, de nem valaszoltal hogy mikor lenne jo. hivtalak tegnap, mert mondtad hogy bulizni szeretnel szilveszterkor es hatha meg nincs programod, de nem vetted fel a telefont...
+most meg megyek debrecenbe... namind1, majd legkozelebb
boldogujevetmindenkinek
+
+Nekem boldog uj evem volt, jo (de azert felejtheto) bulival... :) de fo, hogy csinaltunk vmit.
+
+Ugy kezdodott, hogy 30-an, a nagy hofuvas es iteletido kozepette eljott hozzank a roland (hm elso meeting a szulokkel). leginkabb attol feltem hogy anyam majd korulrajongja, de szerencsere ez csak mersekelten volt igy...
+A masik erdekes dolog az volt, mikor kirakta a pisztolyt
Szem hosszabb idő sem tűnik annyinak amennyi...sztem....
+
+false
+
+
+
+
+Kathy
+
+2005-12-29T23:08:00+01:00
+2005-12-29T22:20:44Z
+2005-12-29T22:20:44Z
+
+tag:blogger.com,1999:blog-5716684.post-113589484494380107
+En is megkaptam parszor ezt az emailt... (mar ket ...
+
+
En is megkaptam parszor ezt az emailt... (mar ket evvel ezelott is)
+de hulye kerdesekre nem valaszolok :)))
+
+27-en elmentem itthonrol es ma jottem haza.
+persze ez a harom nap jol telt... :) leszamitva hogy fogorvoshoz es szemeszhez kellett menni, elobbit nem miattam, utobbit miattam, de termeszetesen azt nem sikerult elintezni ami miatt mentem...
+Megneztuk a Schindler listajat :( en most lattam
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
+
+true
+
+
+
+Efendi
+
+2006-01-02T07:00:00+01:00
+2006-01-03T20:07:20Z
+2004-09-02T16:21:10Z
+
+tag:blogger.com,1999:blog-7074887.post-109414207010042356
+Tartalomjegyzék
+<div align="center"><span style="color:#990000;"><span style="font-size:130%;"><strong>BOLDOG KARÁCSONYT, BÉKÉS ÉS SIKERES ÚJ ÉVET!</strong></span></span></div><div align="center"><span style="color:#990000;"><span style="font-size:130%;"><strong>YENI YILINIZ VE BAYRAMINIZ KUTLU OLSUN!</strong><br /></span></span><br /><a title="Photo Sharing" href="http://www.flickr.com/photos/efendi/76049494/"><img height="438" alt="The Monastery of the Holy Savior in Chora, Istanbul" src="http://static.flickr.com/41/76049494_16afcb4c90.jpg" width="500" /></a><br /></div><p><span style="font-size:85%;"></span><span style="font-size:85%;"></span><span style="font-size:85%;"></span><span style="font-size:85%;color:#ff0000;"></span><span style="font-size:85%;"></span><span style="font-size:85%;"></span><span style="color:#ff0000;"></span><span style="font-size:85%;"></span><span style="font-size:85%;"></span><u><span style="font-size:85%;color:#0000ff;"></span></u><span style="font-size:85%;color:#ff0000;"></span><span style="font-size:85%;"></span><span style="font-size:85%;color:#ff0000;"></span><span style="font-size:85%;color:#ff0000;"></span><span style="font-size:85%;color:#ff0000;"></span><span style="font-size:85%;color:#ff0000;"></span><span style="font-size:85%;color:#ff0000;"></span></p><p></p><p></p><div align="justify"><strong>A blog három részből áll. Az első, a torokorszag.lap.hu egy török vonatkozású linkgyűjtemény, amely a Startlapé. Én szerkesztem, elég sok mindent megtalálhatsz rajta, <a href="http://torokorszag.lap.hu/">l</a></strong><strong><a href="http://torokorszag.lap.hu/">inkje itt van</a></strong><strong>. A második maga ez a blog, a látogatók sok-sok írásával a "comments" linkeken. A harmadik egy török fotógyűjtemény, amelyet <a href="http://torokorszag.blogspot.com/2004/07/blog-fnykpalbuma-trk-fotmvszek-lapjai.html">erről a linkről</a> elindulva láthatsz.</strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong>Szóval, hos geldin. Ha először jársz itt, </strong><span style="color:#ff0000;"><strong>légy szíves, olvasd el ezt a postot: </strong><a href="http://torokorszag.blogspot.com/2004/05/blogrl-s-arrl-te-hogyan-rhatsz-bele.html">A blogról és arról, Te hogyan írhatsz bele</a><span style="color:#000000;"> </span><strong>majd gyere vissza ide a tartalomjegyzékhez<em>.</em> <span style="color:#000000;">Ha keresni akarsz a blogon (bárhol, a hozzászólásokban is), kattints a következő linkre: </span></strong></span><a href="http://search.freefind.com/find.html?id=68736779">Search this site</a>. Ott találsz site map-et is.<br /></div><div align="justify"><br /></div><div align="justify"><form action="http://www.bloglet.com/subscribe.asp" method="post"><p align="center"><span style="color:#ff0000;">Ha szeretnél e-mailben értesítést kapni az új postokról, akkor add meg a címedet a "subscribe" fölötti rubrikában!<br /></span><input type="hidden" value="20023" name="ID"><br />Enter your email address below to subscribe to <b>Törökország blog</b>!<br /><input maxlength="100" name="email"><br /><input type="submit" value="subscribe" name="Submit"><br /><a href="http://www.bloglet.com/"><span style="font-size:78%;">powered by Bloglet</span></a> </p><p align="justify"><strong><span style="font-size:130%;color:#000000;"></span></strong></p><p align="center"><strong><span style="font-size:130%;color:#000000;">TARTALOMJEGYZÉK:</span></strong></p></form></div><strong><span style="font-size:130%;"></span></strong><div align="center"><br /></div><div align="center"><strong><span style="font-size:130%;"></span></strong></div><div align="center"><strong><span style="font-size:130%;"></span></strong></div><div align="center"><strong><span style="color:#ff0000;">1. AKTUÁLIS HÍREK</span></strong><br /></div><div align="center"><strong><span style="color:#ff0000;"></span></strong></div><div align="center"></div><div align="center"><strong><span style="color:#ff0000;"></span></strong></div><strong><span style="color:#ff0000;"></span></strong><div align="justify"><span style="font-size:85%;color:#ff0000;"><strong></strong></span><br /></div><div align="justify"><a href="http://torokorszag.blogspot.com/2006/01/magyar-testvrvrost-keres-osmaniye.html"><span style="font-size:85%;">Magyar testvérvárost keres Osmaniye</span></a><span style="font-size:85%;"> </span><span style="color:#ff0000;"><span style="font-size:85%;">ÚJ! </span><div align="justify"></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"></div><div align="justify"><br /></div><div align="justify"><a href="http://torokorszag.blogspot.com/2005/12/trk-jdonsgok-programok-kulturlis-hrek.html"><span style="font-size:85%;">Török újdonságok, programok, kulturális hírek és ajánlatok</span></a><span style="font-size:85%;color:#ff0000;">ÚJ!</span></div><div align="justify"><span style="font-size:85%;"><br /></span></div><div align="justify"><span style="font-size:85%;color:#ff0000;"></span></div><div align="justify"><span style="color:#ff0000;"><span style="font-size:85%;color:#000000;"><a href="http://torokorszag.blogspot.com/2005/12/eurpa-kulturlis-fvrosai-2010.html">Európa Kulturális Fővárosai, 2010.</a></span><span style="font-size:85%;"> ÚJ!</span></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;color:#ff0000;"></span></div><div align="justify"><span style="font-size:85%;"><span style="color:#ff0000;"></span><br /></span></div><div align="justify"><span style="color:#ff0000;"><a href="http://torokorszag.blogspot.com/2005/12/magyar-emlkek-trkorszgban.html"><span style="font-size:85%;"><span style="color:#000000;">Magyar emlékek Törökországban</span> </span></a><span style="font-size:85%;">ÚJ!</span></span></div></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"><br /></div><div align="justify"><a href="http://torokorszag.blogspot.com/2004/07/blog-fnykpalbuma-trk-fotmvszek-lapjai.html"><span style="font-size:85%;">Flickr: Efendi fotói Törökországról + A blog látogatóinak közös fényképalbuma </span></a><span style="font-size:85%;">... <span style="color:#ff0000;">vagy másfél ezer kép</span></span></div><div align="justify"><span style="font-size:85%;color:#ff0000;"></span></div><div align="justify"><span style="font-size:85%;color:#ff0000;"></span></div><div align="justify"><span style="color:#ff0000;"></span></div><div align="justify"><span style="color:#ff0000;"></span></div><div align="justify"><span style="color:#ff0000;"></span><br /></div><div align="justify"><span style="color:#ff0000;"><a href="http://torokorszag.blogspot.com/2004/08/ali-baba-magyar-trk-sportrovata.html"><span style="font-size:85%;">Ali Baba magyar-török sportrovata</span></a><span style="font-size:85%;"><span style="color:#000000;"> </span><span style="color:#ff0000;">Ali Baba, Laci, Borbicsek és mások...</span></span></span></div><div align="justify"><span style="font-size:85%;"><br /></span></div><div align="justify"><span style="font-size:85%;color:#ff0000;"></span></div><div align="justify"><a href="http://torokorszag.blogspot.com/2004/05/trsalg.html"><span style="font-size:85%;">Társalgó</span></a></div><div align="justify"><span style="font-size:85%;"><br /></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><a href="http://torokorszag.blogspot.com/2005/03/trkorszg-s-blog-bartainak-tallkozi.html"><span style="font-size:85%;">A blog és Törökország barátainak találkozói</span></a><a href="http://torokorszag.blogspot.com/2004/11/sztndjjal-trkorszgba.html"></a></div><p align="justify"><span style="font-size:85%;"></span></p><p align="justify"><span style="color:#ff0000;"><a href="http://torokorszag.blogspot.com/2005/07/egy-ve-se-gyerek-se-hr-mehmet-tysz.html"><span style="font-size:85%;">Két éve tűnt el Mehmet Tüysüz Károly kiskorú magyar állampolgár</span></a><span style="font-size:85%;"> (írások 2005. májusa után)</span></span></p><div align="justify"><a href="http://torokorszag.blogspot.com/2004/05/magyar-trk-kt-jbart.html"><span style="font-size:85%;">Magyar-török, két jóbarát...</span></a><span style="font-size:85%;"> <span style="color:#ff0000;">a magyar-török kapcsolatokról...</span></span></div><div align="justify"><br /></div><div align="center"><strong><span style="color:#ff0000;">2. KULTURÁLIS ÉS MINDENFÉLE AJÁNLATOK</span></strong><br /></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/07/mozi-trk-filmrendezkrl-s-filmjeikrl.html">Mozi. Török rendezőkről és filmjeikről</a> <span style="color:#ff0000;">filmek a kurd poston is vannak</span></span></div><div align="justify"></div><div align="justify"><span style="font-size:85%;"></span><br /></div><div align="justify"><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/06/lemezajnl.html"><span style="font-size:85%;">Magyarországon kapható török lemez, CD, zene</span><span style="font-size:100%;"> </span></a></span></div><p><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/08/knyvajnl-germanus-gyula-flhold-fak.html"><span style="font-size:85%;">Könyv- Germanus Gyula útikalandjai</a></span><span style="font-size:100%;"> </span></span></p><p><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2005/12/jzsef-attila-trkorszgban.html">József Attila Törökországban</a> <span style="color:#ff0000;">ÚJ!</span></span></p><p><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/08/adorjn-imre-boldog-istenknt-lni.html"><span style="font-size:85%;">Könyv - Adorján Imre: Boldog Istenként élni</a></span><span style="font-size:100%;"> </span></span></p><p><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/08/orhan-pamuk-h.html"><span style="font-size:85%;">Könyv - Orhan Pamuk: Hó</a></span></span><span style="font-size:100%;"> </span><span style="font-size:85%;color:#ff0000;">MÁR MAGYARUL IS!</span></p><p><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/06/knyv-s-cikkajnlj-megjelensek.html"><span style="font-size:85%;">Könyv- és cikkajánló</a></span><span style="font-size:100%;"> </span></span></p><p><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/05/terebess-zsia-e-tr.html"><span style="font-size:85%;">Terebess on-line könyvtár - ahol mindent megtalálsz</a></span></span><span style="font-size:100%;"></span></p><p><span style="font-size:100%;"></span></p><p><span style="font-size:100%;"><a href="http://torokorszag.blogspot.com/2004/05/tanuljunk-trkl.html"><span style="font-size:85%;">Tanuljunk törökül!</span></a> </span></p><p><span style="font-size:100%;"><a href="http://torokorszag.blogspot.com/2004/07/turkolgus-s-hungarolgus-hallgatk-fruma.html"><span style="font-size:85%;">Turkológus és hungarológus hallgatók fóruma /Magyar irodalom törökül</span> </a></span></p><p><span style="font-size:100%;"><a href="http://torokorszag.blogspot.com/2004/11/sztndjjal-trkorszgba.html"><span style="font-size:85%;">Ösztöndíjjal Törökországba</span></a></span></p><p><span style="font-size:85%;">M<a href="http://torokorszag.blogspot.com/2004/08/magyar-trk-barti-trsasg.html"><span style="font-size:85%;">agyar-Török Baráti Társaság</a></span></span><span style="font-size:100%;"> </span></p><p><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/09/aegee-trkorszgi-programjai.html"><span style="font-size:85%;">AEGEE (egyetemi hallgatók európai egyesülete) törökországi rendezvényei </span></a><span style="color:#ff0000;">2005. évi programok!</span></span></p><p><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/09/trk-tterem-kvz-bolt-magyarorszgon.html">Török étterem, kávézó, bolt Magyarországon</a><br /></span></p><p><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/05/trk-fakanl.html"><span style="font-size:85%;">Török fakanál</span></a></span><span style="font-size:100%;"> </span><span style="font-size:85%;color:#ff0000;">számtalan recept</span></p><p><a href="http://torokorszag.blogspot.com/2004/08/linkajnl.html"><span style="font-size:85%;">Linkajánló</span></a> <span style="font-size:85%;color:#ff0000;">pár link, hogy jobb legyen az életed</span></p><p><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/08/blogajnl.html">Blogajánló</a></span> <span style="font-size:85%;color:#ff0000;">néhány ötlet a blogoláshoz</span> </p><div align="justify"></div><div align="justify"><span style="font-size:85%;"><a href="http://torokorszag.lap.hu/">torokorszag.lap.hu</a> - <span style="color:#ff0000;">közel 1000 török link</span></span></div><div align="center"><br /><strong><span style="color:#ff0000;">3. UTAZÁS</span></strong> </div><div align="justify"><br /><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/08/terrorizmus-s-ms-veszlyek.html">Terrorizmus és más veszélyek - figyelmeztetések és tanácsok/Mi a teendő, ha bajba kerülsz</a> </span></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"><br /></div><div align="justify"><a href="http://torokorszag.blogspot.com/2004/09/olcs-repjegy.html"><span style="font-size:85%;">Olcsó repjegy!</span></a> <span style="font-size:85%;color:#ff0000;">majdnem mindig van új ajánlat</span></div><div align="justify"><br /></div><div align="justify"><a href="http://torokorszag.blogspot.com/2004/05/utazsi-tancsokkedvenc-trkorszgi.html"><span style="font-size:85%;">Kedvenc törökországi helyeink</span></a> - <span style="font-size:85%;color:#ff0000;">az oldal látogatóinak ajánlatai, tapasztalatcsere, ötletek, kérdések</span> </div><p align="justify"><span style="font-size:85%;"></span></p><p align="center"><strong><span style="color:#ff0000;">4. TÖRÖKORSZÁGRÓL</span></strong></p><div align="center"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><a href="http://torokorszag.blogspot.com/2004/09/trkorszg-az-eurpai-uniban.html"><span style="font-size:85%;color:#000000;">Törökország az Európai Unióban?</span></a> </div><div align="justify"><span style="color:#ff0000;"></span><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/10/civil-trsadalom-trkorszgban.html">Civil társadalom, NGO-k, ifjúsági szervezetek Törökországban</a></span><span style="font-size:85%;"><br /></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;"></span><br /></div><div align="justify"><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/08/mshol-olvastuk.html"><span style="font-size:85%;">Máshol olvastuk</span></a><span style="font-size:85%;"> -<span style="color:#ff0000;"> a legjobb írások</span></span><span style="font-size:100%;color:#ff0000;"> </span></span><span style="font-size:85%;"><span style="color:#ff0000;">Törökországról<br /></span></div></span><div align="justify"></div><div align="justify"><br /></div><div align="justify"><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/09/nk-helyzete-trkorszgban.html">A nők helyzete Törökországban</a></span> </div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><span style="font-size:85%;"></span><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;"></span><br /></div><div align="justify"><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/05/munkallszleteurpai-unis-llsok-s.html">Munka/állás/üzlet/ Európai uniós állások és tenderek Törökországban</a> </span></div><div align="justify"><span style="font-size:85%;"></span></div><span style="font-size:85%;color:#ff0000;"></span><span style="color:#ff0000;"><div align="justify"><br /></span></div><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/11/kurdok-trkorszgban.html">Kurdok Törökországban</a> </span><br /><div align="justify"></div><div align="justify"><span style="font-size:85%;"></span><br /></div><div align="justify"><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/12/kurd-linkajnl.html"><span style="color:#ff0000;"><span style="color:#000000;">Kurd linkajánló</span></span><br /></a></span><br /><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/05/az-iszlm.html">Az iszlám</a></span> <span style="font-size:85%;"><br /></div></span><p align="center"><strong><span style="color:#ff0000;">5. TÖRÖK HÁZASTÁRS</span></strong></p><div align="justify"><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2006/01/trk-hzastrs-2006.html">Török házastárs - 2006.</a> - <span style="color:#ff0000;">tanácsok egymásnak (a tavalyi hozzászólásokat <a href="http://torokorszag.blogspot.com/2005/01/trk-hzastrs-2005.html">ITT</a>, a tavalyelőttieket </span><a href="http://torokorszag.blogspot.com/2004/05/trk-hzastrs-2004.html"><span style="color:#ff0000;">ITT</span></a><span style="color:#ff0000;"> olvashatod)</span></span></div><div align="justify"><br /></div><div align="justify"><span style="font-size:85%;"><a href="http://torokorszag.blogspot.com/2004/11/vzum-s-tartzkodsi-engedly-trk.html">Vízum- és tartózkodási engedély török állampolgároknak - tudnivalók</a></span></div><div align="justify"><br /></div><div align="justify"><span style="font-size:85%;color:#000000;"><strong>A Magyarországról elrabolt magyar gyermekek története:</strong> </span></div><p align="justify"><a href="http://torokorszag.blogspot.com/2004/08/rask-szofi-trtnete.html"><span style="font-size:85%;color:#000000;">Raskó Szofi</span></a><br /></p><p align="justify"><a href="http://torokorszag.blogspot.com/2004/08/jabb-magyar-gyermekrabls-trkorszgban.html"><span style="font-size:85%;">Tüysüz Mehmet Károly</span><span style="color:#000099;"></span></a> <span style="font-size:85%;color:#ff0000;">(írások 2005. májusáig)</span></p>
+false
+
+
+
+
+Efendi
+
+2006-01-02T06:55:00+01:00
+2006-01-02T12:53:01Z
+2006-01-02T12:53:00Z
+
+tag:blogger.com,1999:blog-7074887.post-113620638047470459
+Török házastárs - 2006.
+
+
+
Sok látogatót érdekel a kapcsolatteremtés lehetősége azokkal, akiknek török barátjuk/partnerük/házastársuk van. Ez a post az ő fórumuk.
+
+ A tavalyi kb 600 hozzászólást ITT, a 2004. évieket pedig EZEN A LINKEN olvashatod. Sok hasznos tanácsot találhatsz a korábbi évekből, ezért ha új vagy a blogon és kérdezni akarsz, jó, ha nagyjából átnézed a tavaly-tavalyelőtt írtakat, mert itt is vannak Gyakran Ismétlődő Kérdések.
+
+ Azt tanácsolom, hogy ha hozzászólsz, ne adj meg magadról sok személyes adatot, elég egy mélcím is ahhoz, hogy mások kapcsolatot teremthessenek veled. Ahogy a bevezető postban is írtam, a blog szerkesztőjeként biztosítalak arról, hogy a velem közölt személyes adataidat - hacsak arra törvény nem kötelez - senkinek nem hozom tudomására.
+
+
+Egy kedves magyar levelező, Ildi kért arra, hogy csináljak egy kis reklámot Göremében 2004. decembere végén megnyitott panziójának, amelyet török férjével működtet. Örömmel teszem, nemcsak neki, bárki másnak is, tehát, mielőtt Kappadókiába utaznál, keresd Ildi panzióját
+
+EZEN A LINKEN
+
+!
+
+
Osmaniye tartomány - amelynek "fővárosát" ugyanígy nevezik - 1996-ban lett önálló, addig Adana tartomány része volt. Osmaniye városa nagyjából félúton van Adana és Gaziantep között, közel a Földközi-tenger keleti csücskéhez, az Iszkenderuni-öbölhöz. A tartományi székhely lakossága kb. 200 ezer, s nagyjából 250 ezren laknak összesen a tartomány többi településén. Az emberek főleg a mezőgazdaságból élnek, de Osmaniyének jó idegenforgalmi adottságai vannak (hegyi turizmus, síelés, tenger közelsége), ezeket most kezdik kihasználni. A városban új és szép művészeti általános és középiskola működik.
+
+
+
+
+
+
+
Osmaniyét érintette az egykori selyemút, de a németek által épített Isztambul-Bagdad vasútvonal is. Toprakkale 1908-ban létrehozott, ma már használaton kívüli, impozáns vasútállomásának épületét kulturális központtá kívánják átalakítani, s az Bartók Béla nevét viselné. Bartók Béla 1936. novemberében gyűjtött népdalokat Osmaniyében, a kutatás egyik helyszíne éppen Toprakkale volt. (Bartók útjáról bővebbet EZEN A LINKEN találsz).
+
+
+
+
+
+
+
2004 végén a város díszpolgárává fogadta Bartók Bélát. Magyar segítséggel megkezdődött a Bartók-emlékmúzeum létrehozása, megnyitását ebben az évben tervezik.
+
+
+
+
+
+
A tartomány gazdag történelmi emlékekben. Az Osmaniye melletti Kastabala (Hierapolis) az i.e. II. században hellén város volt, majd a Római Birodalom részét képezte. A jelenleg ott látható műemlékek a római korból származnak.
A legérdekesebb helyszín Karatepe/Aslantas, ahol Törökország első szabadtéri múzeumát negyven évvel ezelőtt létrehozták. A Hettita Birodalom felbomlása után a Taurus hegység déli lábainál létrejött hettita királyságok egyike volt a karatepei, amelyben Azatiwatis uralkodott az i.e. VIII. században. A Ceylan folyó mellett a karatepei fellegvár - az Azatiwadaya - szabadtéri múzeumában, gyönyörű hettita szobrokat és faragványokat láthatunk, köztük a király szobrát is:
+ Osmaniye szeretne "testvérvárosi" kapcsolatokat kialakítani Magyarországon.
+
+
+
+
+Különösen ajánlom ezt a kunságiak figyelmébe. Osmaniye városában és néhány környező településen ugyanis éppen a kunok Ulas törzsének egy része telepedett le. Erről bővebbet olvashatsz ITT és ITT.
+
+
+
+
Kérlek, segíts magyar partnert találni! Érdeklődés esetén megadom a török partnerek elérhetőségét.
+Kósa kontra Mesterházy Isztambulról - EU-vonal, 2005. okt.12.
+
+"Isztambul is lehet kulturális főváros" - Magyar Nemzet, 2005. október 11. "Az Európai Unió sebtiben hozott döntése értelmében nem két, hanem három „európai” város birtokolhatja a kulturális főváros címet. A csatlakozási tárgyalásait frissen megkezdett Törökországgal erről már szerződést is kötöttek, és meg is nevezték jelölt városként Isztambult. Kósa Lajos a hét pályázó magyar város egyike, Debrecen polgármestereként úgy véli, nem sportszerű, hogy a német és a magyar pályázatok beadását követően ilyen drasztikusan változik az eredeti pályázati kiírás. A polgármester szerint mind a német, mind a magyar pályázókat kényelmetlen helyzetbe hozza, hogy olyan világvárossal kell megmérkőzniük, mint a két kultúra és két földrész határán fekvő Isztambul. Az is különös, hogy teljesen szokatlan módon egy olyan pályázatot nyitnak meg külső kandidáló előtt, ami eddig kizárólag európai tagországok települései számára volt elérhető."
+A hazai pályán Pécs győzött - (kultúra.hu) - részlet az indoklásból: "A tanácsadó testület figyelembe vette a nemzetközi politikai, kultúrapolitikai kontextusokat is, különös tekintettel a lehetséges német partnervárosra és a törökországi Isztambul bejelentett rendezési szándékára."
Ezen a poston remélhetőleg egyre több információt találsz majd a Törökországban található magyar emlékekről, kötődjenek azok Bizánchoz, az Oszmán Birodalomhoz, vagy a mai köztársasághoz. A magyar emlékek fotóit EZEN A LINKEN láthatod. Ízelítőül egy fotó a kütahyai Kossuth Múzeumból:
A Magyar–Török Baráti Társaság megemlékezésre készült Izmitben Thököly Imre halálának 300. évfordulója alkalmából. A szándékot felkarolta az isztambuli főkonzul, Zimborás Gabriella, és csatlakozott hozzá Izmit város, illetve Kocaeli megye vezetése is. Így a tervezett szerény emléktábla helyett monumentális emlékművet avathattak: gyönyörű feketegránit talapzatra helyezték azt a Thököly-címerrel díszített magyar emlékoszlop-töredéket, amely 1907-ben, a hamvak hazahozatala után a hajdani Nikomédia örmény temetőjében felállított obeliszkből megmaradt. Az új emlékmű mellett kétnyelvű tábla idézi a hányatott sorsú fejedelem és felesége emlékét:„Gróf Thököly Imre Született 1657. szeptember 25-én Késmárkon (ma Szlovákia) – meghalt 1705. szeptember 13-án Izmitben. Magyar nagybirtokos, kuruc fővezér, 1682-től 1685-ig Felső-Magyarország, majd 1690-ben Erdély fejedelme."
+
+
+
+
+
Családi hagyományai folytán – hisz édesapja, Thököly István is fegyverrel küzdött a magyar függetlenségért – korán politikai szerepet vállalt. A Habsburg Birodalom elleni felkelők, a bujdosók között tanulta ki a hadi mesterséget. Ibrahim budai pasa adta át neki a szultáni ahdnámét, amelyben Felső-Magyarország uralkodójává nevezte ki. Ettől kezdve Felső-Magyarország fejedelmének címeztette magát. 1682. június 15-én elvette feleségül Zrínyi Ilonát, I. Rákóczi Ferenc özvegyét, II. Rákóczi Ferenc vezérlő fejedelem édesanyját. Az 1699-ben megkötött karlócai béke után Thököly Isztambulban élt, majd 1701-ben saját kérésére megengedték, hogy Izmitben telepedjék le, ide követte felesége és mintegy 1500 híve. Zrínyi Ilona 1703-ban hunyt el, két évvel később a fejedelem is követte a halálba. A fejedelmet 1705-ben itt temették el. Hamvait a magyar nemzet 1906-ban exhumáltatta és szülővárosában helyeztette örök nyugalomra.
+
+
+
+
+
Az ünnepélyes avató után az emlékmű mellett új utcanévtáblát helyeztek el: a városrendezési tervek szerint a közeljövőben parkosítandó terület szélén vezető út most már Thököly nevét viseli. Megmutatták az úgynevezett német házakat is, a valaha itt dolgozó szakemberek ma üresen álló villáit, amelyek közül bármelyiket felajánlja a város egy Thököly Imre és Zrínyi Ilona emlékére berendezendő múzeum számára.
+
+
+
+
+
+
Ha ez a szép terv megvalósul, magyar turisták zarándokhelyévé válhat Izmit, ahogy hosszú ideje az már Rodostó is.
+
+
+
+
+
A Magyar–Török Baráti Társaság a Rodostói Magyar Baráti Társaság támogatásával jelentette meg a II. Rákóczi élete és törökországi emigrációja című kétnyelvű könyvet F. Tóth Tibor szerkesztésében, amely Balla Antal, Dávid Géza, Fodor Pál, Köpeczi Béla, Nagy Ferenc, Somogyi Gréta, Tasnádi Edit, Tóth Csaba és Tóth Ferenc írásait tartalmazza.
+
+Tasnádi Edit alábbi írása a Magyar Nemzet 2005. augusztus 13-i számában jelent meg.
+
+
+
+
+„Sose lódított” József Attila Törökországban: a centenáriumi év megemlékezései Isztambultól Ankaráig
+
+
+
+József Attila útja Párizson keresztül vezetett Törökországba: Ataol Behramoglu francia fordításokkal találkozik először, de így is a költő hatása alá kerül. Ennek köszönhető, hogy a Militan című folyóirat 1975. márciusi száma 44 oldalas összeállítást szentel a magyar költő bemutatásának.
+
+
+
+
+ Előszóként Guillevicnek József Attilát az első világháború, az ellenforradalom és a fasizmus Gavroche-ának nevező írását idézik. Ezt Szabolcsi Miklós tanulmánya követi József Attila élete és költészete címmel. Az összeállítás tizenhat költeménnyel folytatódik. Elsősorban azok a nagy politikai versek szerepelnek itt, amelyek indokolják, hogy József Attilát Törökországban gyakran „társadalmi-realista” költőként emlegetik, de helyet kap A hangyától az Ódáig néhány másfajta költemény is. Az összeállítást a költő életének és korának kronológiája zárja.
+
+
+
+
+
Ettől a ponttól akarva-akaratlanul személyesebb hangra kell váltanom, hiszen az események úgy alakultak, hogy magam is belekerültem a török versbarátok és József Attila egymásra találásáért fáradozók csapatába.
+
+
+
+
+
Kemal Özer, a kiváló török költő, akivel 1981 óta leveleztem, József Attila-nyersfordításokat kért tőlem. Közös munkánk eredményeként jelent meg 1986-ban az első önálló török József Attila-kötet, Temiz Yürekle (Tiszta szívvel) címmel.
+
+
+
+
+
Kemal Özer a válogatáshoz írt bevezetőjében így fogalmazta meg azt, hogy számára mit jelent József Attila: „Amikor József Attila verseit a Militanban összegyűjtve olvastam, az életéből versbe szűrődő elemek, képei, amilyenekkel korábban soha nem találkoztam, költői világának atmoszférája nem is annyira meglepetést, mint inkább fájdalmat okoztak, s ha lehet ilyet mondani: keserű lelkesedést. Belső rokonságot, érzelmi azonosulást éreztem. Mintha egy sebesült ember lehelete csapott volna az arcomba. A magárahagyottságnak, a nincstelenségnek és a homloka fénye felragyogtatásáért vívott küzdelmének hangtalan sikolyával lánggá hevülő lehelete. Mintha egy emberi sorsban a megtestesült bánattal kerültem volna szemtől szembe, olyan szomorúsággal, amely mindezek ellenére nem adja meg magát. (…) József Attila élete súlyos történelmi korszakra esett, olyan időszakra, amikor valami véget ért, s még nem lehetett pontosan tudni, hogy mi, de valami új kezdődött. Szélsőségekben bővelkedő, ugyanakkor határozott vonalvezetésű pályát futott be. Az átlagos vagy a közepes hiányzik ebből az életútból. Árvaság, magány, nincstelenség, betegség – végleges minden. Érzékenység és szintézis – ezzel a két szóval szinte összegezni lehet költészetét. Érezte a közelítő újat, és a már létezővel szintézisbe hozta. Érzékeny volt, mert élethalálharcot kellett vívnia az érzékenységet szülő körülményekkel. Szintézist teremtett, ahogy az életből leszűrt tudást folyamatosan verssé szűrte.”
+
+
+
+
+
A kötet nagy nyeresége az a bevezető tanulmány, amelyet Fodor András írt (József Attila költői karaktere címmel), miután átadtuk neki a lefordított versek listáját. Így megállapításait a török olvasó által ismert költeményekre hivatkozva, azokból idézve támaszthatta alá. Bekerült a kötetbe a Curriculum vitae, így a költő életútját a legilletékesebb forrásból ismerhetik meg a török olvasók. József Attila életének kronológiája, fényképek, valamint a Militanból átvett Szabolcsi Miklós-tanulmány, illetve az Eugčne Guillevic-előszó gazdagítják a költőről rajzolt képet. A kötet versei az első magyarból fordított József Attila-költemények. A legszebbekből, legismertebbekből válogattunk, és újrafordítottunk néhányat a Militanban közvetítő nyelvből készített fordításban szereplő költemények közül is.
+
+
+
+
+
Tíz év telt el a nagy visszhangot kiváltó Temiz Yürekle-kötet megjelenése után. Akkoriban az ankarai egyetem hungarológiai tanszékén tanítottam. Így került a kezembe a Cumhuriyet című újság 1996. április 14-i számának vasárnapi melléklete, címlapján a költő életnagyságú fényképével, alatta ezzel a szöveggel: „Költő volt, sose lódított. József Attila, a magány nagy költője. Kritikus és realista. A verseit ismerjük. Ennyi nem elég. Az életének és a verssorainak alapjául szolgáló fájdalmak és reménytelenségek nyomába szegődünk. A magány legnagyobb költője. Az árvaság és a nincstelenség és a szerelem fájdalmát verseiben próbálta csitítani. Minden félbemaradt az életében. Egyetemre járt, de nem fejezhette be, szerelmeket élt át, de a beteljesülést nem élhette át. Harminckét éves korában a vonatkerekek alá vetette megfáradt, magányos testét. Haláláról is maga mondta ki az utolsó szót: »ámulok, hogy meghalok«.” A fényképekkel kísért írás számomra akkor még ismeretlen szerzője, Sunahan Develioglu terjedelmes riportjában nagy érzékenységgel követi nyomon a költő életének állomásait a Gát utcától Balatonszárszóig.
+
+
+
+
+
Néhány hét múlva az Evrensel Kültür folyóirat József Attila-műsorára vagyok hivatalos. Kemal Özerrel szólunk a költőről. Egy fiatalember, Onur Toparlak gitárkísérettel törökül és magyarul (!) énekel a verseiből. Ott ismerkedem meg feleségével, Sunahannal, s ekkor derül fény írása születésének körülményeire. „Először 1986-ban jártam Magyarországon, és annyira tetszett, hogy 1993-ban, amikor összeházasodtunk, ide jöttünk nászútra. Egyszer Onur így szólt hozzám: »Te már jártál Magyarországon. Nézz körül a könyvek között, nem látsz-e magyar költőt.« Egy Petőfi-kötetet találtam. Akkor persze semmit nem tudtunk magyarul. A kötet épp a Szerelem című versnél nyílt ki. A ritmusát erősnek érezte Onur. Zenét rögtönzött hozzá, és szótárral próbáltuk megfejteni az értelmét. Így indult a mi magyarországi kalandunk… József Attila számunkra a Temiz Yürekle-kötettel kezdődött. Úgy gondoltuk, hogy a versek Tasnádi Edit és Kemal Özer tolmácsolásában közel állnak az eredetihez, de hogy halljuk is a versek eredeti ritmusát, megvettük József Attila verseit magyarul is, és a két kötetet együtt olvastuk. Második jövetelünkkor azután az ő nyomába eredtünk…”
+
+
+
+
+
Újabb évtized múltán a József Attila-centenárium mozgósította a költő törökországi barátait. Két lelkes fiatal, tanítványom, Sevgi Can Aysevener és Orhan Tüleylioglu szerkesztésében, ankarai nagykövetségünk támogatásával az Edebiyatçilar Dernegi (Irodalmárok Társasága) kiadásában jelent meg az emlékkönyv, Evrenle Ölç Kendini (A mindenséggel mérd magad) címmel. A képekkel illusztrált kötet a két szerkesztő beköszöntőjével indul, ezt a Curriculum vitae követi, majd Ahmet Oktay, Kemal Özer, Metin Demirtas, Ataol Behramoglu, Behçet Aysan és Müslüm Celik József Attila ihlette versei következnek. A továbbiakban költő, író, irodalomtörténész, szociológus, filozófus és pszichológus vall arról, hogy mit jelent számára József Attila. Élményeik a fent említett két válogatásra támaszkodnak, a szenvedéssel teli élet és a tragikus vég momentumai, a szeretni való egyéniség és a szeretetre vágyó ember portréja, a finom képek és a lázító társadalmi igazságtalanságok költője jelenik meg ezekben a szubjektív hangú írásokban. Ahogy a könyvről megjelent hosszabb-rövidebb ismertetések egyike fogalmaz: „A könyv az irodalmárok szívében élő József Attila-arcképet rajzolja meg.” Ezektől eltérő úton jár néhány szerző: Ahmet Imam az Ars poeticát elemzi, Onur Toparlak pedig az Altató átültetése kapcsán a versfordítás lehetőségeiről és lehetetlenségeiről elmélkedik. Sunahan Develioglu József Attila és Nazim Hikmet sorsában és költészetében fedez fel párhuzamosságokat; jómagam a két magyar géniusz, József Attila és Bartók Béla művészetének közös gyökereire próbálok rávilágítani. Sajátos színt képvisel Selçuk Ülger írása: a Németországban taxisofőrként dolgozó szerző a frankfurti repülőtérre érkező Malév-utasokat kedvenc verséből, a Mamából „vizsgáztatja”, s azoknak, akik hozzá hasonlóan József Attila-rajongónak mutatkoznak, enged a fuvardíjból…
+
+
+
+
+
Az emlékkönyvben harminchét vers kapott helyet. Az új fordítások mindenekelőtt a korai korszakból válogatva gazdagítják új színekkel a török versbarátok által eddig ismert József Attila-portrét, ugyanakkor a szerkesztők beválogattak néhányat a korábbi fordításokból is.
+
+
+
+
+
Mire május 7-én bemutatták a könyvet, a kiadó már az utánnyomásra készült. Az érdeklődők zsúfolásig megtöltötték a termet. Két költő: Ataol Behramoglu és Metin Demirtas, egy irodalomtörténész és -kritikus, Öner Yagci osztotta meg a hallgatósággal József Attila-élményét, Yildirim B. Dogan pszichiáter pedig a beteg ember világába való betekintés etikai kérdéseit feszegette. Az érdekes előadások a közönséget is hozzászólásokra késztették. Szóba került így még Petőfi és Balassi is… Számomra kedves meglepetésként Onur Toparlak többek között az e kötet számára fordított Ayi Dansit, azaz a Medvetáncot is előadta, az ismert Sebő Ferenc-dallamra énekelve…
+
+
+
+
+
Ankara után Isztambulban folytatódtak a József Attila-emlékév eseményei. Újra megjelent a Temiz Yürekle című kötet, amelynek diavetítéssel kísért bemutatóján Kemal Özer mellett Turgay Fisekçi költő szólt József Attila török barátaihoz; Beykozban pedig mindenekelőtt a művészetszerető polgármesternek, Muharrem Ersoynak és a színész-rendező Mehmet Asának köszönhetően szinte fesztiváli hangulatban emlékeztek meg a százéves költőről. Az Esztergommal testvérvárosi kapcsolatokra készülő Boszporusz-parti negyed polgármesteri hivatala előtti téren hatalmas transzparens hívogatta a 300 ezer lakosú Beykoz közönségét. A program a téren fúvószenekari koncerttel kezdődött. Nem mindennapi élmény volt török muzsikusok előadásában hallgatni a Himnuszt és a Szózatot. Az előadóterem előcsarnokában a Petőfi Irodalmi Múzeum vándorkiállításának tablói között Sunahan Develioglu eredeti ötletének köszönhetően hófehér anyagokra nyomva, szárítókötelekre csipeszelve „keringtek, szálltak a magasban” József Attila életrajzának részletei.
+
+
+
+
+
A jókora előadóterem színpadát csak gyertyák világították meg, a vászonra a Petőfi Irodalmi Múzeum centenáriumi CD-ROM-jának képeit vetítették. József Attila költői pályáját megrajzoló előadásomat meg-megszakítva mondott el Mehmet Asa illusztrálásul egy-egy jellemző verset, majd felolvasta a Curriculum vitae-t úgy, hogy a megfelelő pontokon Onur Toparlak énekelt el gitárkísérettel Sebő Ferenc, illetve a maga megzenésítésében törökül és magyarul egy-egy költeményt.
+
+
+
+
+
Mit jelent József Attila a török olvasóknak? Idézzük Sevgi Can Ayserent, aki az emlékkönyv megjelenése kapcsán készült interjúban így fogalmaz: „…József Attila versei furcsa lázadást ébresztettek bennem, a költő kiszolgáltatottsága, magánya, kora és világa elleni dühöt. Ennek talán személyes okai is vannak. Néhány évtizeddel őutána Törökországban ugyanazt a szomorúságot, ugyanazt a könyörtelenséget, ugyanazt a lázadást éltük át; a veszteségek és az igazságtalanságok hasonlítottak az őáltala megéltekre. József Attila élete és költészete, átlépve országa határait, mindazokhoz szól, akik az életnek és a költészetnek ugyanazt az értelmet tulajdonítják, akik ugyanazokért az értékekért ugyanazt az árat fizetik. Képei, rímei, verseinek mély értelme, sajátos és nagy hatású megfogalmazásai költői nagyságát az egész világon elismertté tették…”
+
+
+false
+
+
+
+
+Efendi
+
+2005-12-02T18:46:00+01:00
+2006-01-04T14:04:53Z
+2005-01-13T17:24:46Z
+
+tag:blogger.com,1999:blog-7074887.post-110563708697436556
+Török újdonságok, programok, kulturális hírek és ajánlatok
+<div align="center"><a title="Photo Sharing" href="http://www.flickr.com/photos/efendi/14365144/"><img height="313" alt="Fishmongers/Eren Eyüboglu (1907-1988), Istanbul Modern" src="http://static.flickr.com/12/14365144_8d48bfce90.jpg" width="500" /></a><br /><br /></div><div align="justify">Itt érhetők el a törökországi vagy itthoni török programokkal, kulturális eseményekkel foglalkozó friss hírek és ajánlatok. Írjatok, ha mások figyelmét szeretnétek felhívni valamilyen aktuális eseményre.</div><div align="justify"><br />A blogon tematikus és más kulturális postok is vannak (pl. mozi, könyv, lemez), időtállóbb hírekkel.<br />------------------------------------------------------ </div><div align="justify"></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong>Az isztambuli Forma 1 nagydíjra kedvezményes </strong>jegyárusítás 2006. január 31-ig <a href="http://www.msoistanbul.com/index.php?&n=main">EZEN A LINKEN</a> (angol, török).</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"><strong>Orhan Pamuk írása az Élet és Irodalom karácsonyi-újévi számában <a href="http://www.es.hu/pd/display.asp?channel=PUBLICISZTIKA0551&article=2005-1230-1615-58YFYW">LINK ITT</a></strong></div><div align="justify"></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong>Kapható még a magyar nyelvű válogatás a huszadik század legjobb török elbeszéléseiből</strong> ("Van, akit sólyom karmol meg"), például az Osiris könyvesboltban (postázva is) 1800 forintért. <a href="http://www.osiriskiado.hu/">LINK ITT</a></div><div align="justify"><br /><em>(A tartalomjegyzék: Halíkarnas Balikcisi: A manőver Yakup Kadri Karaosmanoglu: Egy tizennégy éves férfi Sait Faik Abasiyanik: A batyu Sait Faik Abasiyanik: A Szteljanosz Hriszopulosz hajó Aziz Nesin: Egy esküvői szónoklat Aziz Nesin: A könyvelő Tarik Bugra: Az üstökös Sinasi Özdenoglu: Egy megbánás története Leyla Erbil: A fiók Remzi Inanc: Zihni nyakkendőtűje Ferit Edgü: Ibramfia Ibram története Ayla Kutlu: Eltávozáson Erendiz Atasü: A bayburti Lütfiye Aydin: Sírni nem szabad Feride Cicekoglu: Van, akit a sólyom karmol meg Nedim Gürsel: A zsebkendő Semih Günver: Adem Ver története Yasar Kemal: A kígyók kertje Bekir Yildiz: Sahan, a csempész Bekir Yildiz: Elment egy lovas a világból Orhan Kemal: A kutyakölyök Ayhan Sariismailoglu: Az út Zíya Osman Saba: Boldog emberek fényképészete Osman Sahin: A fehér ökör) </em></div><div align="justify"><br /></div><div align="justify"></div><div align="justify">December 13-án <a href="http://www.radio.hu/index.php?cikk_id=163072">Isztambul is benyújtotta pályázatát az Európa Kulturális Fővárosa cím elnyerésére</a> 2010-ben. Döntés 2006-ban. Pécs és egy német város pályázatának sikere gyakorlatilag már biztosra vehető.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><strong>Picasso-kiállítás Isztambulban</strong> - megtekinthető 2006. március 26-ig a Sabanci Múzeumban. LINK <a href="http://muze.sabanciuniv.edu/picasso/english/index.php">ITT</a> és <a href="http://www.artportal.hu/index.php?mc=3&sc=3&hir=1675#1675">ITT</a>. </div><div align="justify"><br /></div><div align="justify">Ha érdekel, milyen volt <strong>Isztambul (Konstantinápoly), a 4. századtól 1453-ig</strong>, amikor az ottomán törökök elfoglalták, olvasd el <a href="http://szakkonyv.hu/konyv.php?i=5834">Georg Ostrogorsky "A bizánci állam története"</a> című könyvét, kapható az előző linken vagy az <a href="http://www.osiriskiado.hu/magyar.html">Osirisnél</a>.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"><strong>Karácsonyra megjelent végre magyarul is Orhan Pamuk: Hó c. regénye!</strong></div><div align="justify"><strong></strong><br /></div><div align="justify"></div><div align="justify"></div><div align="justify">"Minden élet, akár a hópehely: távolról egyformának tűnik, de rejtélyes erők egyszerivé és megismételhetetlenné formálják" - vallja Orhan Pamuk legújabb művében. Megismerhetjük-e a mások szívében lakozó szeretetet és fájdalmat? Megérthetjük-e azokat, akik oly mély gyötrelmeket és oly sok csalódást éltek át, hogy elképzelni sem tudjuk? Ezek a kérdések foglalkoztatják Kát, a költőt, amikor tíz év frankfurti távollét után, édesanyja temetésére hazatér Isztambulba.</div><div align="justify"><br />Elfogadja egy liberális lap felkérését, hogy oknyomozó riportot írjon a távoli Kars városában zajló különös eseményekről. Saját gyermekkori vágyainak a felidézése is vezérli: amint tudomást szerez róla, hogy elvált asszonyként ott él a gyönyörű Ipek, újra feltámadnak régen elfojtott érzései. Ka felkeresi a titokzatos öngyilkossági hullám áldozataként elhunyt fiatal lányok családtagjait és barátait, a helyi rendőrséget, az eseményeket megörökítő és megjósoló Határvárosi Hírlap szerkesztőjét, s közben lassan feltárul előtte a város valódi arca. Vallási és politikai viták mérgezik az emberek életét, a fennálló államhatalom és a növekvő iszlám párt befolyása alatt vallási fanatikusok szállnak szembe az egyházi reformok híveivel. Ka épp a Nemzeti Színházban szavalja egyik költeményét, amikor fegyveres zavargás tör ki, és a nézőtéren életét veszti az iszlám egyházi középiskola néhány tanulója. A tragédia rettenetes események sorát Indítja el: letartóztatások, üldöztetések, gyilkosságok követik egymást, sokan a kurd nacionalistákat okolják, többen pedig politikai tőkét próbálnak kovácsolni a forrongásból. Az idén Béke-díjjal jutalmazott Pamuk regénye szülőhazájában heves indulatokat váltott ki. Az isztambuli ügyészség perbe fogta a népszerű írót, mivel arról beszélt, hogy Törökországban egymillió örményt és harmincezer kurdot gyilkoltak meg, amit az ország mindmáig nem ismert el hivatalosan. A Hó viszont egyértelmű kritikai és olvasói sikert aratott A méltatások mind hangsúlyozták, hogy a szerző - aki az irodalmi Nobel-díj egyik legerélyesebbnek tartott várományosa-elemi erővel ábrázolja a modern világ nyers brutalitását és elvakultságát, és minden szenzációéhes híradásnál felkavaróbban irányítja rá figyelmünket a kor és a térség aktuális problémáira,- írja ismertetőjében a Fókusz On-line, ahol a könyv megvásárolható. <a href="http://www.fo.hu/cgi-bin/start.cgi/apps_fokusz/display/index.html?termek.id=92475&tag=2">LINK ITT</a> Pamuk bírósági pere egyébként december 16-án kezdődik Isztambulban, de már folyamatban van egy második per is ellene.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><strong>Megjelent Vecdet Erkun "Budapesttől Ankaráig" c. könyve.</strong> "Szegény és szorgalmas török diák volt Vecdet Erkun, amikor váratlanul külföldi tanulmányi ösztöndíjat nyert Magyarországra. Agrármérnöki diplomát szerzett a József Nádor Műszaki és Gazdaságtudományi Egyetemen, és hazatért, hogy hasznosítsa a magyar mezőgazdaságban szerzett tapasztalatait. Mindez 1937 és 1943 között történt, amikor még, amint olvashatjuk, „Budapesten, ha sok volt a hó, tettek ellene. Például a házmesterek eltakarították a havat a ház előtti járdáról. Az úttestre lekotort havat a polgármesteri hivatal teherautókkal vagy hókotró gépekkel összeszedette és a Dunába hordatta. Az utat és az utcák közepét ötpengős órabérért felfogadott hómunkások takarították le. A téli hidegben dolgozó munkásoknak óránként tíz perc pihenőt és forralt bort vagy boros teát adtak.”Ilyesfajta képeket ír le nekünk Vecdet Erkun professzor emlékiratában, amelynek a Budapesttől Ankaráig címet adta, és amelyet a Magyar–Török Baráti Társaság jelentetett meg magyarul Tasnádi Edit fordításában. S bár az 1937–43 közötti időszak nem a magyar történelem legfényesebb korszaka, fenyeget, majd kitör a világháború, az ifjú diák mégis igen kedvező képet fest a magyarokról: érdekesek, kedvesek, befogadók, segítőkészek és igen kulturáltak. Lehet, hogy az idő és a nosztalgia szépíti így meg Vecdet Erkun emlékeit, de a végeredmény mégiscsak az, hogy az olvasó elkezd vágyakozni. Nemcsak azért, mert akkor még a házmesterek takarították az utcákat, hanem mert szerethető Magyarország-képet kapunk a vendégtől. Kiváló egyetemi tanárokról olvashatunk, magas szintű oktatásról, virágzó mezőgazdaságról és rokonszenves emberekről. Ilyen volt tényleg? Szeressük a törököket! És a magyarokat is! <em>(Hanthy Kinga: "Szeressük a magyarokat!", Magyar Nemzet, 2005. október 8. )</em></div><div align="justify"><br /></div><div align="justify"><strong></strong></div><div align="justify">2004. legjobb mozija a török filmkritikusok szerint Ahmet Ulucay első játékfilmje, a <strong>"Hajók dinnyehéjból"</strong> (Karpuz Kabugundan Gemiler Yapmak).</div><div align="justify"></div><div align="justify"><br /></div><div align="justify">Az <strong>ISTANBUL MODERN</strong> nevű kortárs képzőművészeti múzeum címe, nyitvatartása <a href="http://www.istanbulmodern.org/engl.aspx">EZEN A LINKEN</a> (TR, EN) található.</div><div align="justify"></div><div align="justify"><br /></div><div align="justify">2005. januárjától a magyar mozikban <strong><a href="http://www.magyar.film.hu/object.49C429C6-D1A4-46A6-A145-908FB9788FC7.ivy">Nuri Bilge Ceyhan MESSZE (UZAK)</a></strong> c. filmje, amely 2003-ban nagydíjat nyert a Cannes-i Filmfesztiválon. Kölcsönözni is lehet DVD-n és kazettán az <a href="http://www.odeon.hu/kat.phtml?id=5926">Odeontól</a> a Corvin, Puskin, Tabán és Hollán mozikban Budapesten. A filmről kritikát olvashatsz a <a href="http://www.mancs.hu/index.php?gcPage=/public/hirek/hir.php&id=11146">Magyar Narancs 2005. jan. 20-i számában</a>.</div><div align="justify"></div>
+false
+
+
+
+
+Efendi
+
+2005-07-10T23:03:00+02:00
+2005-12-12T14:33:44Z
+2005-05-20T09:21:00Z
+
+tag:blogger.com,1999:blog-7074887.post-111658086052973264
+Egy éve se gyerek, se hír - Mehmet Tüysüz Károly története
+<div align="center"><a href="http://photos1.blogger.com/img/284/1037/1024/mtk.jpg"><img style="BORDER-RIGHT: #000000 2px solid; BORDER-TOP: #000000 2px solid; MARGIN: 2px; BORDER-LEFT: #000000 2px solid; BORDER-BOTTOM: #000000 2px solid" src="http://photos1.blogger.com/img/284/1037/400/mtk.jpg" border="0" /></a><br />Mehmet Tüysüz Károly (8)</div><div align="center"><br /></div><div align="center"></div><div align="center"><strong><span style="color:#ff0000;">Május 25. az Eltűnt Gyermekek Világnapja</span> </strong></div><div align="center"><strong><a href="http://www.reggel.hu/index.php?apps=cikk&cikk=13555">Minden hónap 10-én tüntetnek (?) Karcsikáért<br /></a></strong><br /><br /></div><div align="justify"><strong><span style="font-size:130%;">Visszakaphatja fiát a szegedi édesanya</span></strong></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong><span style="font-size:85%;">G. Juhász Judit, Magyar Nemzet, </span></strong></div><div align="justify"><strong><span style="font-size:85%;">2005. november 14. </span></strong></div><div align="justify"><strong><span style="font-size:130%;"></span></strong><br /></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><em>Feltehetőleg jogerőssé válik november végén a török bíróság elsőfokú döntése, amelynek értelmében az apja által Törökországba csempészett Tüysüz Mehmet Károlyt az édesanyjánál, Szegeden helyezik el. Annál is inkább, mert a török apát egy isztambuli bíróság egy év börtönbüntetésre ítélte, miután két alkalommal is meghiúsította a gyermek és magyar édesanyja találkozását.</em></div><div align="justify"><br />Várhatóan helybenhagyja a török bíróság az elsőfokú döntést, és november 25-én jogerősen is az édesanyának ítéli a nyolcéves Tüysüz Mehmet Károlyt, akit tavaly nyáron az apja hat magyar állampolgár segítségével egy láthatás után Szegedről Törökországba csempészett. A közreműködők ellen a Szegedi Városi Bíróságon eljárás indult, az apa és a gyerek ellen pedig a magyar hatóságok nemzetközi körözést adtak ki.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Az édesanya, Papp Edina hónapokon át kereste kisfiát, ám a török hatóságok vajmi keveset tettek. Volt férje telefonon vagy ügyvédje révén többször is tudtára adta: csak akkor láthatja gyermekét, ha előbb hivatalosan lemond róla. Végül arra hivatkozva, hogy hazánkban neki ítélték a kisfiút, az asszony a hágai bírósághoz fordult. A kérelem alapján a török hatóság szeptemberben úgy határozott, hogy a végleges elhelyezésig a gyerek az apánál marad, de minden második hét szombatján találkozhat édesanyjával. Ám Papp Edina hiába utazott Törökországba, Károlyt egyszer sem találta a kijelölt helyen, nagyszülei lakásában, volt férje szülei pedig azt állították, hogy fogalmuk sincs fiuk és unokájuk hollétéről.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">A napokban azonban a török bíróság kétszer hat hónap börtönbüntetésre ítélte Tüysüz Mehmetet, mert két alkalommal is megakadályozta, hogy a kisfiú találkozzék édesanyjával.Ha a bujkáló férfi nem veszi át a határozatot, nem is fellebbezhet ellene, így az ítélet másfél hónap múlva jogerőssé válik, és Törökországban is körözést adnak ki ellene – közölte Földesi-Szabó László, az édesanya utazásait és ügyvédjét finanszírozó Egy-Másért Kiemelkedően Közhasznú Nemzetközi Alapítvány kuratóriumának vezetője.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">A kisfiú és apja hosszabb ideje ismeretlen helyen tartózkodik. A gyerek anyja a napokban azt a hírt kapta, hogy Amerikában bujkálnak. Papp Edina elmondta: erős a gyanú, hogy a férfi így akarja félrevezetni a hatóságokat, hiszen kevéssé valószínű, hogy nemzetközi körözés alatt vagy hamis útlevéllel átjuthatnának a szigorú határellenőrzésen.</div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong> <br /></div><div align="justify"><strong><span style="color:#ff0000;">FIGYELEM! A történetről két másik blogon is olvashattok: </span></strong></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><a href="http://sesblog.hu/archives/individual/015224-20050812.html"><strong><span style="color:#ff0000;">Sesblog: Török gyerek megvágta, magyar állam gyógyítja, síppal, dobbal... </span></strong></a><strong><span style="color:#ff0000;">és a </span></strong><a href="http://pocakos.blogspot.com/2005/08/valban-itt-tartunk.html"><strong><span style="color:#ff0000;">Pocakos News blogon: Valóban itt tartunk?</span></strong><br /></a></div><div align="justify"><br /></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong><span style="font-size:130%;">2005. július 11. - Kit érdekel Mehmet Tüysüz Károly kiskorú magyar állampolgár?</span></strong></div><div align="justify"><br /></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify">Ma egy éve, hogy eltűnt Karcsika.</div><div align="justify"></div><div align="justify"></div><div align="justify">Két hónapja mondta a török miniszterelnök, hogy személyesen néz utána, mi a helyzet. Másfél hónapja "találta meg" egy török lap Mehmet Tüysüz Károly kiskorú magyar állampolgárt Isztambulban. Azóta csend.<br /></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong><span style="font-size:130%;">2005. június 12.</span></strong></div><div align="justify"><strong><span style="font-size:130%;"></span></strong><br /></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify">Karcsikát ugyan még mindig nem bírták hivatalosan megtalálni, de a Zaman napilap újságírója Magyarországon járt. Írásaiból kiderül, hogy a kisfiú ügyében per indult Törökországban - persze, nem a gyermekrabló apa ellen, hanem éppenséggel Ő indította azt a gyermek megszerzése érdekében. Első tárgyalás szeptemberben. </div><div align="justify"><br /></div><div align="justify">Az újságíró szerint a Magyarországon letelepedett kb. ezerötszáz török hasonló cipőben jár, mint Mehmet Tüysüz, mivel általában nem kötnek polgári házasságot magyar partnerükkel.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">A cikkek linkje: <a class="koyubaslik" href="http://www.zaman.com.tr/?bl=haberler&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;alt=&trh=20050612&hn=182466">Hatami kabul ediyorum; ama anneyim</a> és <a href="http://www.zaman.com.tr/?bl=haberler&alt=&trh=20050612&hn=182467">Macaristan, Zaman'i konusuyor</a></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong><span style="font-size:130%;">2005. május 26.</span></strong></div><div align="justify"><strong><span style="font-size:130%;"></span></strong><br /></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><span style="font-size:130%;"><a href="http://www.nol.hu/cikk/363594/"><strong><span style="font-size:100%;">"Török gyerek, magyar gyerek"</span></strong></a><strong> </strong></span><span style="font-size:100%;">Népszabadság, május 26.</span></div><div align="justify"><span style="font-size:100%;"></span></div><div align="justify"></div><div align="justify"></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong>Efendi kommentárja:</strong></div><div align="justify"><strong></strong><br /></div><div align="justify"></div><div align="justify">A Népszabadság cikkéből kiderül: miközben egy Törökország nevű állam képviselői közel egy éve arról biztosítanak minket, hogy mindent megtesznek Mehmet Tüysüz Károly kiskorú magyar állampolgár felkutatásáért, egy másik országban, amelyet véletlenül szintén Törökországnak hívnak, a kisfiút anyakönyvezik és állampolgárságot adnak neki.<br /><br />A cikkből most már tudjuk: Tüysüz Mehmet Károly apja a chicagói török főkonzulátuson apai elismerő nyilatkozatot tett, aztán a törökök anyakönyvezik a magyar állampolgár kisfiút, aki -miután apja és cinkosai kicsempészik Magyarországról - szeptemberben megkapja a török állampolgárságot. Erről azonban mostanáig Törökországban nem tudtak azok, akiknek kellett volna, így hát nem tudták megmondani tavaly novemberben Ankarában a Tüysüz-ügyben segítséget kérő magyar külügyminiszternek, és Gyurcsány miniszterelnöknek sem a májusi budapesti Erdogan-látogatás alatt.<br /><br />Eddig csak egy Törökországot ismertünk.<br /><br />Azt, amelynek képviselői januárban Budapesten tárgyaltak, s a magyar külügyi szóvivő január 11-i sajtónyilatkozata szerint „jelezték, hogy nagy erőkkel igyekeznek felkutatni Mehmet Tüysüz Károly hollétét, a török konzuli delegáció vezetője pedig megerősítette azt a korábbi információt, amely szerint sem a kisfiú, sem pedig édesapja nem tartózkodik Törökországban”. A tárgyaláson „a török fél hangsúlyozta, hogy nagy erőkkel igyekeznek felkutatni a kisfiú tartózkodási helyét és ennek érdekében a török ügyészség, a rendőrség és az idegenrendészeti hatóságok komolyan dolgoznak".<br /><br />Valamelyik Törökországban aztán május 19-én papát és fiát török újságíró fényképezi a vidámparkban, s az apa az újságnak elismeri, hogy tavaly júliusban elhozta Karcsikát Magyarországról, de mint mondja, az igazság az ő oldalán áll, mert a kisfiút Magyarországon keresztény hitben akarták nevelni, disznóhússal etették, magyar élettársa meg amúgy is átvágta, nem maradt tehát más választása. Lebarnítja még Törökországot - az egyiket - , hogy nem állt melléje, meg a magyarokat is, hogy Budapesten félrevezették valamelyik török miniszterelnököt.</div><div align="justify"><br />A kisfiút azóta sem találták meg meg egyik Törökország hatóságai sem.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Mentő körülmény, ahogy a Magyar Hírlap újságírója megfogalmazta: „a horvát rendőrök is bárhogy igyekeznek, nem találják Ante Gotovinát, pedig Horvátország sokkal kisebb, mint Törökország, Gotovina pedig sokkal nagyobb, mint Karcsika”.<br /><br /></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong><span style="font-size:130%;">2005. május 25.</span></strong></div><div align="justify"><strong><span style="font-size:130%;"></span></strong><br /></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify">Ma az Aksyon hetilap ismétli meg a Tüysüz-ügy Zaman-féle változatát. Nem véletlenül, a kiadói háttér ugyanaz. A cikk címe: "Az EU-tagság ára egy török". <a href="http://www.aksiyon.com.tr/detay.php?id=21643&yorum_id=1">LINK ITT</a></div><div align="justify"><br /></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong><span style="font-size:130%;">2005. május 24.</span></strong></div><div align="justify"><br /></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify">Érdekes fejleményről ír a Zaman mai száma: az apa, Mehmet Tüysüz ügyvédje szerint Erdogan miniszterelnököt a magyarok megtévesztették a kisfiúval kapcsolatban. Az ügyvéd pedig hiába szeretné elmondani neki az igazságot, nem jut hozzá az ügy irataihoz, mert az isztambuli rendőrség nem adja oda neki azokat. A lap azt állítja, hogy az egyik isztambuli kerületi ügyészség ezért előzetes vizsgálatot indított az iratok visszatartásáért felelős rendőri vezető ellen.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify">A cikk <a href="http://www.zaman.com.tr/?bl=haberler&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;alt=&trh=20050524&hn=176181">EZEN A LINKEN</a> olvasható.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">A <a href="http://www.miniszterelnok.hu/gss/alpha?do=2&pg=11&m9_doc=408&m8_curr=1">miniszterelnok.hu</a> oldalon láthatod, <strong>mit mondott Erdogan Budapesten, május 12-én.</strong></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><strong>Más írások:</strong></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><a href="http://www.delmagyar.hu/cikk.php?id=70&cid=97198">Szülők között hánykolódva</a> Délmagyarország, május 24.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><strong><span style="font-size:130%;">2005. május 23.</span></strong></div><div align="justify"><br /></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify">Talán nem mindenki ismeri Mehmet Tüysüz Károly édesanyja és a magyar Női- és Gyermekjogi Kutató és Oktató Központ nyílt levelét, amelyet február 16-án adtak át a török nagykövetnek, majd a médiának.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Tehát a levél:</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Budapest, 2005. February 16.</div><div align="justify"><br />OPEN/PUBLIC LETTER<br /><br />His Excellency<br />Mr. Umur Apaydin<br />Ambassador of Turkey<br />Cc.<br />Thomas Glaser<br />Head of Delegation<br />European Commission Hungary<br /><br />Subject: How can an 8 years old Hungarian boy completely disappear in Turkey?<br /><br />Excellency,<br /><br />We are very sorry, indeed, that Yourself or Your Embassy have not responded to our three previous letters. This is why we had to turn to the general public and ask for the co-operation of the Hungarian as well as international media/press.<br /><br />We would very much appreciate your statement and comments regarding Turkey's past, present and future steps towards the safe return of 8 years old Tüysüz Mehmet Károly, who was kidnapped from Hungary to Turkey. We would like to emphasise that Turkey has an international obligation to return the child to Hungary under the so-called Hague Convention, - on the Civil Aspects of International Child Abduction.<br /><br />As Yourself and the Turkish authorities are fully aware, the father of the little boy, a Turkish-Hungarian citizen failed to return the child to his mother and to his residence in Hungary, following parental visitation, on 11 July 2004. Soon it was a proven fact, that the father smuggled the child to Turkey, with false passport and through an well-organised chain of criminal activities.<br /><br />The criminal proceedings regarding the above criminal activities are in an advanced stage, the investigation was completed, the above-summarised facts were found. At this point an international arrest warrant is in effect against Tüysüz Mehmet (senior).<br /><br />In addition to the criminal proceedings with international aspects the Hungarian Ministry of Justice, upon the request of the mother, initiated the relevant civil proceedings under the Hague Convention, in accordance with the letter and the spirit of the Convention.<br /><br />The main aim of the Hague Convention on International Child Abduction is the following, according to the text of the Convention:<br /><br />' to secure the prompt return of children wrongfully removed to or retained in any Contracting State' (Article 1. a,)<br /><br />According to Article 7 of the Convention Turkey is (would be) obliged to take all appropriate measures to find the child:<br /><br />Central Authorities shall co-operate with each other and promote co-operation amongst the competent authorities in their respective States to secure the prompt return of children and to achieve the other objects of this Convention.</div><div align="justify"><br />In particular, either directly or through any intermediary, they shall take all appropriate measures -<br /><br />A, to discover the whereabouts of a child who has been wrongfully removed or retained<br /><br />According to Article 11 of the Convention the procedure is extremely speedy, as a main rule it should take less than 6 weeks - may we remind you that in our case more than 7 months have passed:<br /><br />'The judicial or administrative authorities of the Contracting States shall act expeditiously in proceedings for the return of children.<br /></div><div align="justify"><br />If the judicial or administrative authority concerned has not reached a decision within six weeks from the date of commencement of the proceedings, the applicant or the Central Authority of the requested State, on its own initiative or if asked by the Central Authority of the requesting State, shall have the right to request a statement of the reasons for the delay.'<br /><br />Our questions are the following:</div><div align="justify"><br />1. 1. The father, Tüysüz Mehmet (senior) can be reached by anybody at his Turkish phone number. (This fact can be checked by the Hungarian and international press, the general public.) How is it possible that in spite of the international arrest warrant nothing has been happening towards the localisation of the father and through that step the finding of the child?</div><div align="justify"><br />2. With a view to the Hague Convention which specific authorities have taken what specific steps towards discovering the (allegedly unknown) whereabouts of the child? What steps are planned/envisaged by the authorities in the near future?</div><div align="justify"><br />3. At the early stages of the proceedings the Istanbul based so called 'children's police' was working on the discovery of the child's whereabouts, with outstanding specialised skills. The case was at some point withdrawn/taken away from this special police force, and at this stage apparently no authority does anything towards the discovery of the whereabouts of the child. How is this possible? Which authority is in charge of the case at this point, and why was the case withdrawn/taken away from the specialised children's police? </div><div align="justify"><br />4. The passivity of the Turkish authorities; the complete neglect of the obligations listed in the Hague Convention; the removal of the case from the specialised children's police; the 'leaving alone the father' attitude in spite of the international arrest warrant are factors, that give a totally false image about the state of affairs in Turkey. This image is not the image of a European Union candidate country, a state based on the Rule of Law, but instead, the false image is that there is a situation of 'lawlessness' and arbitrariness. Unfortunately some people even falsely conclude from all these circumstances that there may be some sort of conspiracy, even a corrupt relationship between the Turkish authorities and the abductor. Of course we fully reject this unfair and ill-founded conclusion. Excellency, would you not consider to challenge these unfounded, false images in order to maintain the good reputation of your country?</div><div align="justify"><br />5. How is it possible that there is such a poor co-operation between a European Union member state (Hungary) and a European Union candidate state (Turkey) in the context of an EU obligation (immediate discovery of the whereabouts of a disappeared/wrongfully-removed child)? (Please note that in addition to the international obligation under the Hague Convention there is also a similar state obligation within the EU framework.)<br /><br />Excellency, our aim is nothing more - but nothing less, either - than to achieve the discovery of the whereabouts of the abducted child as well as to achieve his safe return to Hungary, his habitual residence, in order to reunite him with the mother. The mother could not communicate at all with the little boy in the last 7 months and this situation is intolerable to her. The same is obviously true about the situation of the little boy. We are asking for Your Excellency's personal commitment to and intervention towards the effective implementation of the Hague Convention in this case, in order to achieve the safe return of the child to his mother, to his habitual residence.</div><div align="justify"><br />The prompt successful conclusion of this case is not only the interest of mother and child but also the interest of both democratic states based on the Rule of Law - Turkey and Hungary.<br /><br />Sincerely yours<br /><br />Bogosné Pap Edina<br />Mother of the little boy</div><div align="justify"><br />Dr. Morvai Krisztina Head of WRCR Center</div><div align="justify"></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong><span style="font-size:130%;">2005. május 21.</span></strong></div><div align="justify"><strong><span style="font-size:130%;"></span></strong><br /></div><div align="justify"></div><div align="justify">Ahogy tegnap megjósoltam, a Zaman mai számában folytatja a török közvélemény megdolgozását és elmeséli, hogyan sikerült Mehmet Tüysüznek megszöktetni Karcsikát. Az apa története a következő: Megérkezik Amerikából Magyarországra, s látja, hogy magyar felesége azóta újra férjhez ment, s megszerezte a gyermek szülői felügyeleti jogát. Ezért aztán 2004. július 9-én fogja az utcán játszadozó kisfiút és autóstoppal lelép vele Budapestről, majd hosszan gyalogolnak a szerb határig. Az éjszakát egymást átölelve a mezőn töltik. Az éhségtől majd meghalnak, a fáradtságtól már beszélni sem bírnak. Ekkor felbukkan a magyar Varga család autója, s a kedves magyar emberek megetetik, megitatják a menekülőket. Az apja nyakában lógó kis Mehmet (Karcsikát már így hívják) ekkor elmeséli, hogy édesanyja és mostohaapja verni szokta, s könyörög apjának és Vargáéknak, hogy ne vigyék vissza hozzájuk. Vargáék jó emberek lévén, eztán menten elszállítják apát és fiát Edirnébe. A papa török földre érvén elrebeg egy imát, majd megfogadja, hogy a Selimiye dzsámiban ezt megismétli, snitt, már ott is vannak.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">A dzsámiban azonban fájdalmas meglepetés éri: a kis Mehmet, aki addig templomba járt, a dzsámiban a gyertyát keresi. Az apa ekkor ismét hálát ad Allahnak, hogy elhozta a gyauroktól Mehmetet s nyomban felvilágosítja a kisfiút az iszlám mibenlétéről. Felhívja továbbá a gyermek anyját, elmondja, hogy Törökországban vannak, de a fiút nem akarja anyjától elszakítani, ezért megállapodást javasol. (Hogy milyet, az a cikkből nem derül ki.)</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Innentől fogva a kisfiú megszöktetéséből nemzeti ügy kerekedik Magyarországon. A magyar média szinte naponta vádaskodik Törökország ellen, majd a helyzet kulminál: a magyarok Törökország európai uniós csatlakozásának támogatását a gyermek visszaadásától teszik függővé, Gyurcsány miniszterelnök pedig Budapesten Recep Tayyip Erdogántól kéri "Mehmet" kiadatását.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">A kis Mehmet azonban - aki már a Törökországba érkezése utáni héten megszerezte a török állampolgárságot - végtelenül boldog, hogy édesapjával lehet, s nem akar Magyarországra menni. Itt aztán vége a cikknek is, ki-ki törölgesse a könnyeit és gondolkozzon azon, vajon nem kellene-e ezt a történetet megfilmesíteni.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Mehmet Tüysüz - érthető módon - legalább két részletet elfelejtett megosztani a Zamannal.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Az egyik, azok a bizonyos jó magyar emberek, akiknek annyira megesett a szíve szegény kisfiún, hogy meg sem álltak vele Edirnéig. Nos, ellenük, meg más magyar segítőtársaik ellen ma büntetőeljárás folyik Magyarországon embercsempészés vádjával. Karcsika papája ugyanis - még mielőtt "rátalált volna" utcán játszadozó gyermekére - több magyar jóindulatát is megvásárolta némi pénzért, akik aztán Karcsika fényképével hamis útlevelet készítettek és kicsempészték - apjával együtt - az országból.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">A másik Karcsika török állampolgársága. Ha igaz, amit az apa állít, akkor a török hatóságok bajban vannak. A török jog szerint ugyanis az - amúgy magyar állampolgár - kisfiút anyja kifejezett hozzájárulása nélkül nem lehet Törökországban anyakönyvezni, márpedig nehezen feltételezhető, hogy az anya ehhez engedélyét adta.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">A Zaman mai cikke <a href="http://www.zaman.com.tr/?bl=haberler&alt=&trh=20050521&hn=175221">EZEN A LINKEN</a> található.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"><strong>Olvasnivaló:</strong></div><div align="justify"><br /></div><div align="left"><a href="http://www.nol.hu/cikk/363203/">"Szeretném, ha az ügyemben török bíróság döntene"<br />- mondja Mehmet Károly apja</a> Népszabadság, május 23.</div><div align="left"><a href="http://www.delmagyar.hu/cikk.php?id=70&cid=97044">Az édesanya szerint nem igaz a hír</a> Délmagyarország, máj. 21.</div><div align="left"><strong></strong></div><div align="left"></div><div align="left"><a href="http://www.online.rtlklub.hu/hirek/vilagunk/?id=0505200859">Hazakerülhet Karcsika</a> RTL KLlub május 21.</div><div align="left"><a href="http://www.nol.hu/cikk/363016/">Egy török újság megtalálta az "ellopott" Mehmet Károlyt </a>Népszabadság május 21.<br /><br /></div><div align="justify"></div><div align="justify"><strong><span style="font-size:130%;">2005. május 20.</span></strong></div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Amire a török hatóságok 10 hónapig nem voltak képesek, azt megtette a sajtó: Ahmet Dönmez, a Zaman napilap munkatársa Isztambulban "megtalálta" Karcsikát, az apa pedig - első ízben - elismerte, hogy tavaly júliusban megszöktette Magyarországról a kisfiút és azóta is bújtatja. A ma megjelent cikk és Karcsika fényképe <a href="http://www.zaman.com.tr/?bl=haberler&amp;amp;alt=&trh=20050520&hn=174930">EZEN A LINKEN</a> látható, éppen a vidámparkban múlatják - szigorú illegalitásban - az időt.</div><div align="justify"><br /></div><div align="justify">Karcsika - az újságíró szerint - nem akar hazamenni Magyarországra (ez szép, képzeljük el, hogy az ellenkezője jelenik meg a lap címlapsztorijában).</div><div align="justify"><br /></div><div align="justify">Az apja tájékoztatni akarja Erdogan miniszterelnököt a "valós helyzetről", mert szerinte Karcsika anyja félrevezetett mindkit, nemcsak őt, hanem a magyar bíróságot is, s Erdogant is félretájékoztatták. </div><div align="justify"><br /></div><div align="justify">Az apa sérelmezi, hogy miközben a magyar hatóságok egy éve "nemzeti ügynek" tekintik, hogy a kisfiú hazajuthasson Magyarországra, Törökország nem állt az apa és fia mellé (ez az eszmei mondanivaló). Nota bene, az apa magyar és török kettős állampolgár.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Azon meg különösen megbotránkozott, hogy Magyarországon kereszténnyé akarták nevelni a fiát, sőt, disznóhúst etettek vele. Így aztán, mondja ő, nem maradt más választása, mint megszöktetni a gyereket.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Az újságíró szerint a magyarok még Törökország uniós csatlakozásának támogatását is Karcsika visszaadásától teszik függővé, ez a cikk címe is egyébként. (Igaz, ami igaz, a két gyerekrablási ügy kezelése - Raskó Szofié és Karcsikáé - jócskán ronthatott - és még ronthat - a törökök megítélésén Magyarországon, nagy kár, hogy Ankarában ezt nem ismerték fel időben.)</div><div align="justify"><br /></div><div align="justify">Az apa török ügyvédje azt állítja, hogy a magyar fél politikai eszközökkel igyekszik megoldani egy jogi ügyet.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Szóval, ez a helyzet május 20-án. </div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Erdogan május 12-i budapesti látogatása után sok török újság megírta, hogy a magyar miniszterelnök kérte Karcsika felkutatását és visszaadását, amit a török miniszterelnök meg is ígért.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Ne gondoljuk, hogy a török újságíró ügyesebben nyomoz a rendőrnél - Karcsikát a hatóságok eddig egyszerűen nem akarták megtalálni.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify">A kisfiú apja és azok, akik neki korábban falaztak, most úgy gondolhatták, jobb, ha a török sajtó "megleli" Karcsikát és rárepül az ügyre. Valószínű, hogy a napokban a hangulatkeltés folytatódik, s megismerkedhetünk szegény kisfiú megkeresztelésének, bérmálásának és a disznóhússal folytatott hadakozásának további részleteivel, hadd tudja meg a török nép, mit kell gondolni egy olyan miniszterelnökről, aki ki akar adni egy derék mozlimot a gyauroknak.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">De ez már utóvédharc, új helyzet van. A török rendőrség többé nem hivatkozhat arra, hogy az apának fogalma sincs arról, hol a gyerek (márciusig még azt állították, hogy az apa sincs Törökországban). A török igazságügyi hatóságoknak - ha már egyszer a fiú előkerült - foglalkozniuk kell a hágai egyezmény alapján folyó magyar kiadatási kérelemmel, és meg kell akadályozniuk, hogy Karcsika ismét eltűnjön. A törököknek azt is biztosítaniuk kell, hogy a magyar nagykövetség találkozhasson Karcsikával és elláthassa érdekeinek védelmét, mivel ehhez joga van. </div><div align="justify"><br /></div><div align="justify">A kisfiú történetéről a blogon <a href="http://torokorszag.blogspot.com/2004/08/jabb-magyar-gyermekrabls-trkorszgban.html">EZEN A LINKEN</a> olvashatsz. A Raskó Szofi sztori pedig <a href="http://torokorszag.blogspot.com/2004/08/rask-szofi-trtnete.html">EZEN A LINKEN</a> van.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><em>Amúgy meg szerencsés vagy, ha a blogot olvasod, itt jelentek meg (eddig) először Magyarországon a Raskó Szofival és Mehmet Tüysüz Karcsikával kapcsolatos törökországi hírek.</em></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><strong>Olvasnivaló:</strong></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><a href="http://napihirek.fuggetlenhir.hu/modules.php?name=fhonline&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;func=hir&hir[nid]=32929&authid=ba31afcf9868449b434ac022a851ac34">Török apjánál van Karcsika - a keresztény nevelés volt a baj</a> Független Hírügynökség május 20.</div><div align="justify"><a href="http://index.hu/politika/bulvar/mehmet0520/">Megtalálták Törökországban Mehmet Karcsikát</a> Index május 20.</div><div align="justify"><a href="http://www.klubradio.hu/cikk.php?id=16&cid=15380">Megtalálták Törökországban az eltűnt magyar kisfiút</a> Klubrádió május 20.</div><div align="justify"></div><div align="justify">Karcsikával kapcsolatos előzmények <a href="http://www.blogger.com/post-edit.g?blogID=7074887&postID=109385449902022618">EZEN A LINKEN</a>. AKKOR MOST MI IS TÖRTÉNT EGY ÁLLÓ ÉV ALATT?</div><div align="justify"></div>
+false
+
+
+
+
+Efendi
+
+2005-03-09T09:18:00+01:00
+2005-03-11T16:17:39Z
+2005-03-09T08:24:35Z
+
+tag:blogger.com,1999:blog-7074887.post-111035667537321812
+In Memoriam dr. Fehér Géza
+
+
+
+Valamennyien búcsúzunk Tőle, akik szerettük - a tudóst, a Magyar-Török Baráti Társaság alapító, majd tiszteletbeli elnökét.
+
+
+
+
+ Február 21-én, 88. életévében elhunyt dr. Fehér Géza, a Magyar Nemzeti Múzeum nyugalmazott tudományos főmunkatársa, a magyarországi török emlékek nemzetközileg elismert kutatója, a magyar-török tudományos és kulturális kapcsolatok tevékeny előmozdítója.
+
+ A Balkán és a Kelet kultúrájával már gyermekkorában megismerkedett, hiszen édesapja, a kiváló régész a két világháború között többnyire Bulgáriában dolgozott, majd 1942-től 1947-ig Isztambulban élt, ahová fia is követte.
+
+
+
+
+
Hazatérte után Fehér Géza a Nemzeti Múzeumba került, ahol a hódoltság kori régészeti és művészeti emlékek feltárása és tudományos feldolgozása volt a feladata. Számos régészeti ásatást vezetett, közölte a múzeum török iparművészeti gyűjteményét – többek között a híres török sátort és bőrköpenyt is.
+
+
+
+
+
Tudományos munkásságának egyik kimagasló eredménye a magyar történelemre vonatkozó török miniatúrák alapos feldolgozása és közzététele, amellyel sajátságos új forráscsoportot vont be középkori történeti kutatásunk körébe.
+
+
+
+
Fáradhatatlanul dolgozott a török és a magyar szakemberek közti tudományos kapcsolatok elmélyítéséért, azokban az időkben is, amikor a két ország közt alig volt hivatalos kapcsolat.
+
+
+
+
+
Tekintélyes tagja volt a Török Történeti Társaságnak, állandó résztvevője és előadója a nemzetközi török történeti és művészeti kongresszusoknak. 1975-ben ő rendezte meg nagy sikerrel Budapesten a török művészeti kongresszust s szerkesztette az előadásokat közzétevő kötetet. Tudományos és tudományszervező tevékenységét a magyar és a török állam több kitüntetéssel ismerte el.
+
+ Halála nagy veszteség mind a magyar, mind a török tudományosságnak.
+ Fodor István
+
+
+false
+
+
+
+
+Efendi
+
+2005-03-08T21:21:00+01:00
+2005-09-23T10:48:12Z
+2005-03-08T20:21:33Z
+
+tag:blogger.com,1999:blog-7074887.post-111031329332108279
+Törökország és a blog barátainak találkozói
+
+
+ A blog és Törökország barátainak első találkozója a Kicsiavilág teázóban volt, 2005. március 5-én. A résztvevők nevét a képaláírásra klikkelve, a többi fotót pedig EZEN A LINKEN láthatod, hála Katicának. A második találkozó Évánál volt, április 24-én. A többit már nem számoljuk.
+
+
+
+
Ezen a poston folyik a találkozók technikai szervezése.
Sok látogatót érdekel a kapcsolatteremtés lehetősége azokkal, akiknek török barátjuk/partnerük/házastársuk van.
+
+
+
+Ebben a témában 2005. január 4. után a "Török házastárs - 2005." postban szólhatsz hozzá (azaz ebben a rovatban, amelyet most olvasol), míg a 2004. évi véleményeket EZEN A LINKEN olvashatod.
+
+
+
+
Ezt a postot bárki olvashatja a weben, ezért azt tanácsolom, hogy ha hozzászólsz, ne adj meg magadról sok személyes adatot, elég egy mélcím is ahhoz, hogy mások kapcsolatot teremthessenek veled. Ahogy a bevezető postban is írtam, a blog szerkesztőjeként biztosítalak arról, hogy a velem közölt személyes adataidat - hacsak arra törvény nem kötelez - senkinek nem hozom tudomására.
+
+
+
+
+Egy kedves magyar levelező, Ildi kért arra, hogy csináljak egy kis reklámot Göremében 2004. decembere végén megnyitott panziójának, amelyet török férjével működtet. Örömmel teszem, nemcsak neki, bárki másnak is, tehát, mielőtt Kappadókiába utaznál, keresd Ildi panzióját
+
+
+
+EZEN A LINKEN
+
+
+
+!
+
+
+
+
+false
+
+
+
+
+Efendi
+
+2004-12-04T05:54:44+01:00
+2004-12-07T19:18:44Z
+2004-12-04T16:58:57Z
+
+tag:blogger.com,1999:blog-7074887.post-110217953756673220
+Kurd linkajánló
+<div align="left"><strong><span style="color:#ff0000;">1. EMBERI JOGOK, POLITIKA, HÍREK:</span></strong>
<br />
<br /><a href="http://www.khrp.org/">Kurdish Human Rights Project</a>
<br />
<br /><a href="http://www.kurd.org/">Washingtoni Kurd Intézet</a>
<br />
<br /><a href="http://www.kurdistan.org/">American Kurdish Information Network</a> (AKIN)
<br />
<br /><a href="http://www.kncna.org/docs/main.asp">Kurdish National Congress of North America</a> (KNCNA)
<br />
<br /><a href="http://www.kurdishinstitute.be/cat.php?ID=3">Kurdish Institute of Brussels</a>
<br />
<br /><a href="http://www.institutkurde.org/tun3.htm">Institut Kurde de Paris</a>
<br />
<br /><a href="http://jindar.hypermart.net/">Kurdish Institute of Stockholm</a>
<br />
<br /><a href="http://www.kurdishlibrary.org/">Kurdish Library/Kitébxaneya Kurdi</a>
<br />
<br /><a href="http://www.kurdmedia.com/">Kurdish Media - United Kurdish Voice</a>
<br />
<br /><a href="http://home.cogeco.ca/~kurdistanobserver/news.html">Kurdistan Observer</a>
<br />
<br /><a href="http://www.xs4all.nl/~tank/kurdish/htdocs/">Kurdish Information Network</a>
<br />
<br /><a href="http://www.rojname.com/index.php">Rojname News Network</a>
<br />
<br /><a href="http://www.info-turk.be/homepage.htm">Info-Türk</a>
<br />
<br /><a href="http://www.ekurd.net/">Kurd Net</a>
<br />
<br /><a href="http://www.kurdishinfo.com/">Kurdish Info</a>
<br />
<br /><a href="http://hosting.afp.com/clients/ikp/francais/actu/index.html">AFP - Kurd hírek</a>
<br />
<br /><a href="http://www.hakpar.org.tr/anasayfa.asp">HAK-PAR</a>
<br />
<br /><a href="http://www.hadep.org.tr/">HADEP</a>
<br />
<br /><a href="http://www.institutkurde.org/cildekt/index.html">Leyla Zana - Comité International pour la Libératon des Députés Kurdes Emprisonnés en Turquie</a>
<br />
<br /><span style="color:#ff0000;"><strong>2. KÖNYV, TUDOMÁNY ÉS ILYESMI</strong></span>
<br />
<br /><a href="http://www.let.uu.nl/~martin.vanbruinessen/personal/publications/Aga_Seyh_Devlet.htm">Martin van Bruinessen: Aga, Seyh, Devlet</a>
<br />
<br /><a href="http://www.let.uu.nl/~martin.vanbruinessen/personal/publications/innerkurdische_herrschaft.htm">Martin van Bruinessen: Innerkurdische Herrschaftsverhältnisse: Stämme und religiöse Brüderschaften</a>
<br />
<br /><a href="http://www.let.uu.nl/~martin.vanbruinessen/personal/publications/Kurds,%20states,%20tribes.htm">Martin van Bruinessen: Kurds, states, and tribes</a>
<br />
<br /><a href="http://www.nadir.org/nadir/initiativ/kurdi-almani-kassel/aktuell/1999/juli99/bruinessen.htm">Martin van Bruinessen: Öcalans Balance zwischen den "Zivilisten" und den "Militärs"</a>
<br />
<br /><a href="http://www.let.uu.nl/~martin.vanbruinessen/personal/cv-text-eng.html">Kicsoda Martin van Bruinessen?</a>
<br />
<br /><a href="http://www.krg.org/reference/book-annotations.asp">A Modern History of the Kurds</a>, David McDowall, 2001
<br />
<br /><span style="color:#ff0000;"><strong>3. NET</strong></span>
<br />
<br /><a href="http://dmoz.org/Society/Ethnicity/Asian/Middle_Eastern/Kurdish/">DMOZ OPEN DIRECTORY</a> <em>az egyik önkéntes szerkesztőre 2004. novemberében első fokon 6 és fél év börtönbüntetést szabtak ki Törökországban az antiterrorista törvény alapján</em>
<br />
<br /><a href="http://directory.google.com/Top/Society/Ethnicity/Asian/Middle_Eastern/Kurdish/">Google Directory - Kurdish</a> </div><div align="left"> </div><div align="left"><a href="http://www.kurdishworld.com/toplist/">KurdishWorld Toplist</a>
<br />
<br /><a href="http://news.yahoo.com/fc?tmpl=fc&cid=34&amp;amp;amp;in=world&cat=kurdish_issues">Yahoo! Kurdish Issues</a>
<br />
<br /><strong><span style="color:#ff0000;">4. KULTÚRA, MŰVÉSZET</span></strong>
<br />
<br /><a href="http://www.turkfilm.net/kurdfilm.html">Kurd filmarchívum</a> </div>
+false
+
+
+
+
+Efendi
+
+2004-11-19T21:20:00+01:00
+2005-04-25T18:54:14Z
+2004-11-24T20:42:05Z
+
+tag:blogger.com,1999:blog-7074887.post-110132892520964293
+Kurdok Törökországban
+<p align="justify"><span style="color:#000000;">Húsz év múlva kétszer-háromszor annyi kurd lesz az Európai Unióban, mint ahány magyar - nem mindegy, tudjuk-e, kik ők, mit gondolnak Törökországról, az Unióról és rólunk, magyarokról. Azt már meg sem merem kérdezni, mit gondolunk mi, magyarok a kurdokról, hiszen valószínűleg a közelebbi környezetünkben élő nemzeteket - cseheket, szlovákokat, szlovénokat, románokat, horvátokat és másokat sem ismerjük igazán.</span></p><p align="justify">Pedig a kurdlakta térség ismeretének hosszabb távon komoly politikai és gazdasági jelentősége lehet Magyarország számára. Előbb-utóbb a magyar vállalkozók is odaérkeznek. </p><p align="justify"><span style="color:#000000;">Az Oszmán Birodalomban még "voltak" kurdok. Az első világháború és a Sevres-i diktátum utáni török felszabadító háború idején meg különösen szükség volt rájuk - együtt harcoltak a törökökkel és az ország más népeivel a megszállók ellen, aztán - a Lausanne-i szerződés 1923-as aláírása után rövid egy évvel - a kurd identitás és minden, ami kurd, hivatalosan megszűnt létezni, s véres, tragikus évtizedek következtek, egészen a XX. század végéig, amikor megtudhattuk, hogy mégiscsak léteznek kurdok Törökországban. Még nem is olyan régen volt, amikor "komoly" szaktekintélyek, akik a kurdokat hegyi töröknek minősítették, azt bizonygatták: a "kürd" elnevezés oka, hogy e hegyi - és természetesen török - népségek a havas bérceken kalandozva farkasokhoz ("kürt") hasonló üvöltésekben törnek ki. Légy szíves, ne nevess ezen, mert még sokkal szomorúbb történetek is vannak. </span></p><p align="justify"><span style="color:#000000;"><em><strong>Magyarországon eddig keveseknek volt mondandójuk a kurdokról, ami elérhető, itt olvashatod (ha találsz mást a neten magyarul, írd meg):</strong></em></span></p><p align="justify"><span style="color:#000000;"><a href="http://www.valosagonline.hu/index.php?oldal=cikk&cazon=155&lap=0"><strong>Husain Shorsh: A kurdok eredete, nyelve és vallása</strong></a> - Valóság, 2005. január</span></p><p align="justify"><a href="http://www.magyarszemle.hu/archivum/13_5-6/10Laszlo.htm">Lászlóffy Aladár: Pingvintánc a kurdok körül</a> - Magyar Szemle, 2004. június</p><p align="justify"><strong><span style="color:#ff0000;">Kurd témában a következőket találhatod a blogon:</span></strong></p><p align="justify"><strong><span style="color:#ff0000;">Ezen a poston:</span></strong></p><p align="justify"><span style="color:#ff0000;"><strong>1. Aktuális kurd információk</strong></span></p><p align="justify"><span style="color:#ff0000;"><strong>2. Kurd kulturális hírek</strong></span></p><p align="justify"><span style="color:#ff0000;"><strong>Van még a blogon kurd linkajánló </strong></span><a href="http://torokorszag.blogspot.com/2004/12/kurd-linkajnl.html"><span style="color:#ff0000;"><strong>EZEN A LINKEN</strong></span></a><span style="color:#ff0000;"><strong> , de a </strong></span><a href="http://torokorszag.lap.hu/"><span style="color:#ff0000;"><strong>torokorszag.lap.hu</strong></span></a><span style="color:#ff0000;"><strong> oldalon is találhatsz egy bő kurd linkgyűjteményt.</strong></span></p><p align="justify"><span style="color:#ff0000;"><strong>___________________________________________________________</strong></span></p><p align="center"><span style="color:#ff0000;"><strong>1. Aktuális kurd információk</strong></span></p><p align="justify"><span style="color:#000000;"><strong>Április 28-án 17.30-kor</strong> lesz Spath Eszter fotókiállításának megnyitója a Közép-Európa Egyetemen (CEU), a képek az iraki yezidikről szólnak meg az ottani kurd vidékekről. Ajánlom, hogy nézzétek meg, utána meg egy törökországi kurd együttesnek, a Sarikamisnak lesz a koncertje ugyanott. A kiállítás a Mediawave fesztivál része és ha a megnyitóra nem tudsz elmenni, kb. egy hónapig még nyitva lesz. Eszter hosszú ideig volt mostanában Észak-Irakban, és jókat írt ottani élményeiről a Népszabadságban, keress rá ott a nevére és láthatod az írásait.</span></p><p align="justify"><span style="color:#000000;"><strong><a href="http://web.amnesty.org/library/Index/ENGMDE240022005">Az Amnesty International jelentése és kampánya a szíriai kurdok ügyében</a></strong>, 2005. márc. 10.</span></p><p align="justify"><a href="http://www.hrw.org/reports/2005/turkey0305/">“Still critical”: Prospects in 2005 for Internally Displaced Kurds in Turkey</a> - a Human Rights Watch jelentése, 2005. márc. 7.</p><p align="justify"><span style="color:#ff0000;"><span style="color:#000000;"><a href="http://www.bianet.org/2004/12/28/51626.htm"><strong>Avrupa Birligi ve Kürtler</strong></a><strong> BIANET, 2004. dec. 28. </strong></span></span></p><p align="justify"><span style="color:#ff0000;"><span style="color:#000000;"><a href="http://www.bianet.org/2004/12/01_eng/news50893.htm"><strong>Kurdish Demands Ahead of EU Summit</strong></a></span><strong> </strong></span><strong><span style="color:#000000;">BIANET, 2004. dec. 14.</span><span style="color:#000000;"> <em>Teljes szöveg:</em> <a href="http://www.kurdmedia.com/reports.asp?id=2307">What do the Kurds want in Turkey?</a> </span></strong></p><p align="justify"><strong>A nyilatkozat egyes, Törökországban élő aláíróival kapcsolatban az ankarai főügyészség dec. 16-án vizsgálatot indított, miután Erdogan miniszterelnök a parlamenti frakció előtt előző nap rájuk húzta a vizeslepedőt (zavarosban halásznak, politikájuk "rákkeltő" (!), amúgy meg "lejárt a szavatossága", szóval, csupa kedves megállapítás). Erdogan beszédét </strong><a href="http://www.akparti.org.tr/haber.asp?haber_id=11824&kategori=8"><strong>EZEN A LINKEN</strong></a><strong> lehet elolvasni törökül - kínos, nagyon kínos. </strong></p><p align="justify"><a href="http://www.tesev.org.tr/etkinlik/baskin_oran.pdf"><strong>Baskin Oran: Türkiye'de azinliklar: Kavramlar, Lozan, ic mevzuat, ictihat, uygulama</strong></a><strong> 2004. - .pdf (Az év legmarkánsabb kiállása a kisebbségi jogok mellett, s egyben az esztendő botránya is Törökországban, mivel főbb megállapításai szerepelnek a török Miniszterelnöki Hivatal mellett működő Emberi Jogi Konzultatív Tanács 2004. októberi kisebbségi jelentésében is, amelyet igen rossz néven vett a nemzetállamon és a katonai puccsokon edződött elit, de a társadalom nacionalista csoportjai is. Azért 15-20 év múlva már sokan közülük is úgy emlékeznek mjad, hogy 2004-ben ők másként gondolkodók voltak.)</strong></p><p align="justify"><a href="http://www.khrp.org/news/pr2004/OSCE%20submission%202004%20Warsaw.doc"><strong>HUMAN RIGHTS VIOLATIONS AGAINST KURDS IN TURKEY</strong></a><strong> (Kurdish Human Rights Project, 2004. okt.) </strong></p><p align="justify"><a href="http://www.tesev.org.tr/etkinlik/demokratiklesme_cemaatler.php"><strong>Etyen Mahçupyan: Türkiye'de Gayrimüslim Cemaatlerin Sorunlari ve Vatandaş Olamama Durumu Üzerine</strong></a><strong> 2004. </strong></p><p align="justify"><a href="http://www.tesev.org.tr/etkinlik/azinlik_dilleri.php"><strong>CEMAATLER VE CEMAATLERIN HUKUKI SORUNLARI</strong></a><strong> 2004. </strong></p><p align="justify"><a href="http://www.kurdmedia.com/reports.asp?id=2302"><strong>Dr Kristiina Koivunen: Turkey’s EU negotiations from the Kurdish perspective</strong></a><strong> 2004. dec. 8.</strong></p><p align="justify"><a href="http://ethesis.helsinki.fi/julkaisut/val/sospo/vk/koivunen/"><strong>Kristiina Koivunen: The Invisible War in North Kurdistan</strong></a><strong> (2002.) </strong></p><p align="justify"><a href="http://www.radio.hu/index.php?cikk_id=78161&rid=PT1RTTRBVE0"><strong>Hazátlanok</strong></a><strong> ... Kurdok Magyarországon -2004. febr. 27. </strong></p><p align="justify">--------------------------------------------------------------------------</p><p align="center"><strong><span style="color:#ff0000;">2. Kurd kulturális hírek</span></strong></p><p align="justify"><span style="color:#ff0000;"><em><strong>2005. március 6. </strong></em></span><span style="color:#000000;">A török televíziót felügyelő testület (RTÜK) <a href="http://www.radikal.com.tr/haber.php?haberno=145584">betiltotta a Digitürk csomagjában lévő Primemax csatornákat</a>, mivel azok szerinte szakadár propagandát fejtettek ki azzal, hogy március elején sugározták a Németországban élő Yüksel Yavuz, "Kleine Freiheit" (Egy kis szabadság - Kücük Hürriyet) c. filmjét. A filmet lehetett látni tavaly az ankarai, az isztambuli, az antalyai és a Cannes-i filmfesztiválon, s törökországi forgalmazását a török Kulturális Minisztérium engedélyezte. A filmet bemutatták a <a href="http://www.kurd-filmfestival.com/fest2003/home01.html">2003. évi berlini kurd filmfesztiválon</a> is. Yüksel Yavuzról és filmjéről (németól) itt olvashattok: <a href="http://www.filmz.de/film_2004/kleine_freiheit/">1</a> <a href="http://www.kurd-filmfestival.com/fest2003/home01.html">2 </a><a href="http://www.peterstockhausfilm.de/Freiheit.html">3</a> <a href="http://www.filmzentrale.com/rezis/kleinefreiheit.htm">4</a> <a href="http://www.bfilm.de/kleine_freiheit/">5</a></span></p><p align="justify"><a href="http://www.radikal.com.tr/haber.php?haberno=145650&tarih=06/03/2005">Egy török napilap cikke szerint</a> a török mezőgazdasági minisztérium nyelvészeti problémákkal kezdett foglalkozni: megpróbálja a törökországi növények és állatok nemzetközi latin elnevezéseiből a kurdokra, örményekre, lázokra, a ponthusi (görög) királyságra és hasonló "kínos" dolgokra utaló jelzőket. A cikk szerint az első három áldozat a 'Vulpes vulpes <strong>kurdistanicum'</strong> nevő róka, az 'ovis <strong>armeniana</strong>' nevű vadon élő birka és az eddig 'capreolus capreoulus <strong>armenius</strong>' néven ismert őz. Nevük ezután: 'vulpes vulpes', 'ovis orien anatolicus' és 'capreolus capreolus capreolus'. </p><p align="justify">Az uniós felkészülés jegyében át lehetne keresztelni még az alábbi fajtákat is: <em>Bal?k: Alosa pontica, thorax armeniacus, glypto thorax kurdistanicus. Sürüngen: Lacerta armeniaca, timon princeps kurdistanicus. Memeliler: Crocidura lasia, tristrami intrapontus, galereolus ponticus. Çekirge: Bolivira kurda, poecilimonella armeniaca, gomp hoceros armenicos dimorphus, phytodrymadusa armenica, armenicus drap. Bitki: Aristolochia pontica, myosotis lazia, nonea armeniaca, onosma armenum, onnesma armeniacum, symphytum kurdicum, cirsium karduchorum... </em></p><p align="justify">Ez már szinte közelíti a Kárpátok Géniusza teljesítményét. Eszembe jutnak még a mankurtok, Ajtmatovtól, ha érdekel, nézz utána vagy kérdezd meg a magyar Tarkan Fan Club szerkesztőjét, ő az orosz irodalom szakértője, biztosan eligazít.</p><p align="justify"><span style="color:#ff0000;"><em><strong>2005. március 1. </strong></em></span><span style="color:#000000;">Ingyenes, internetes <strong>on-line kurd népzenét sugárzó rádiót</strong> találhatsz <a href="http://www.live365.com/stations/dengexelikan">EZEN A LINKEN </a>(Live 365 internet radio - Denge Xelikan) - az adás jó minőségű.</span></p><p align="justify"><strong><em><span style="color:#ff0000;">2005. jan. 27.</span> </em></strong>A most kezdődő Berlini Filmfesztiválon is bemutatják <strong>Bahman Ghobadi (1969) "A teknősbékák is repülhetnek"</strong> (Kaplumbagalar da ucabilir) c. filmjét, amelyet ebben az évben Oscar-díjra is jelöltek. Ghobadi iráni születési kurd, filmjét Szaddam megdöntése napjaiban forgatta Irakban a Szaddam-rezsim által Kirkukból száműzött kurdokról, azokról a gyerekekről, akik némi pénzért a gyalogsági aknák felszedésére vállalkoztak. A film Tokiótól Belgrádon át Montreálig besöpört már közel egy tucat díjat. </p><p align="justify"><strong>Kritika a filmről: Painful 'Turtles' follows Kurdish children in crisis</strong><br />Iraqi film made after collapse of Saddam is true portrayal of kids who find and sell mines to survive. By Roger Ebert / Chicago Sun-Times, Friday, April 22, 2005<br /><br />I wish everyone who has an opinion on the war in Iraq could see "Turtles Can Fly." That would mean everyone in the White House and in Congress, and the newspaper writers, and the TV pundits, and the radio talkers and you -- especially you, because you are reading this and they are not. </p><p align="justify">You may assume the movie is a liberal attack on George W. Bush's policies. Not at all. The action takes place just before the American invasion begins, and the characters in it look forward to the invasion and the fall of Saddam Hussein. The movie never betrays an opinion one way or the other about the war. It is about the actual lives of refugees, who lack the luxury of opinions because they are preoccupied with staying alive in a world that has no place for them. </p><p align="justify">The movie takes place in a Kurdish refugee camp somewhere on the border between Turkey and Iraq. That means, in theory, it takes place in "Kurdistan," a homeland that exists in the minds of the Kurds even though every other government in the area insists the Kurds are stateless. The characters in the movie are children and teenagers, all of them orphans; there are adults in the camp, but the kids run their own lives -- especially a bright wheeler-dealer named Satellite (Soran Ebrahim) who organizes work gangs of other children. </p><p align="justify">What is their work? They disarm land mines, so they can be re-sold to arms dealers in the nearby town. The land mines are called "American," but this is a reflection of their value and not a criticism of the United States; they were planted in the area by Saddam Hussein, in one of his skirmishes with Kurds and Turks. Early in the film, we see a character named Henkov (Hirsh Feyssal), known to everyone as The Boy With No Arms, who gently disarms a mine by removing the firing pin with his lips. </p><p align="justify">Satellite pays special attention to a girl named Agrin (Avaz Latif), who is Henkov's sister. They have a little brother named Risa, who is carried about with his arms wrapped around the neck of his armless brother. We think he is their brother, that is, until we discover he is Agrin's child, born after she was raped by Iraqi soldiers while still almost a child herself. The armless boy loves Risa; his sister hates him, because of her memories. </p><p align="justify">Is this world beginning to take shape in your mind? The refugees live in tents and huts. They raise money by scavenging. Satellite is the most resourceful person in the camp, making announcements, calling meetings, assigning work and traveling ceremonially on a bicycle festooned with ribbons and glittering medallions. He is always talking, shouting, hectoring, at the top of his voice: He is too busy to reflect on the misery of his life. </p><p align="justify">The village is desperate for information about the coming American invasion. There is a scene of human comedy in which every household has a member up on a hill with a makeshift TV antenna; those below shout instructions: "To the left! A little to the right!" But no signal is received. Satellite announces that he will go to town and barter for a satellite dish. There is a sensation when he returns with one. The elders gather as he tries to bring in a signal. The sexy music video channels are prohibited, but the elders wait patiently as Satellite cycles through the sin until he finds CNN, and they can listen for English words they understand. They hate Saddam and eagerly await the Americans. </p><p align="justify">But what will the Americans do for them? The plight of the Kurdish people is that no one seems to want to do much for them. Even though a Kurd has recently been elected to high office in Iraq, we get the sense he was a compromise candidate -- chosen precisely because his people are powerless. For years the Kurds have struggled against Turkey, Iraq and other nations in the region, to define the borders of a homeland the other states refuse to acknowledge. </p><p align="justify">From time to time the aims of the Kurds come into step with the aims of others. When they were fighting Saddam, the first Bush administration supported them. When they were fighting our ally Turkey, we opposed them. The New York Times Magazine ran a cover story about Ibrahim Parlak, who for 10 years peacefully ran a Kurdish restaurant in Harbert, Mich., only to be arrested in 2004 by the federal government, which hopes to deport him for Kurdish nationalist activities that at one point we approved. Because I support Ibrahim's case, I can read headlines on right-wing sites such as, "Roger Ebert Gives Thumbs Up to Terrorism." </p><p align="justify">I hope Debbie Schlussel, who wrote that column, sees "Turtles Can Fly." The movie does not agree with her politics, or mine. It simply provides faces for people we think of as abstractions. It was written and directed by Bahman Ghobadi whose "A Time for Drunken Horses" (2000) was also about Kurds struggling to survive between the lines. Satellite has no politics. Neither does The Boy With No Arms, or his sister, or her child born of rape; they have been trapped outside of history. </p><p align="justify"><strong>Hiner Saleem: Vodka lemon</strong> - Szép film egy Jereván melletti kurd falu életéről. A Filmkultúra írását <a href="http://www.filmkultura.hu/2004/articles/films/vodka_lemon.hu.html">EZEN A LINKEN</a> olvashatod. (Ha láttad, írj róla pár sort!)</p><p align="justify"><strong>Kurd filmekről magyarul még itt olvashatsz</strong>: <a href="http://www.filmkultura.iif.hu:8080/2001/articles/reviews/kurdfh.hu.html">Kurd filmhét Londonban</a> <a href="http://www.filmkultura.iif.hu:8080/2001/articles/profiles/kurdint.hu.html">Interjú Araz Rashid kurd filmrendezővel </a>.. és természetesen a legnagyobb film <strong>Yilmaz Güneyé, a "YOL" (Út),</strong> de erről már 20 éve annyit írtak, hogy magad is megtalálhatsz róla mindent a neten.</p><p align="justify"><strong><em><span style="color:#ff0000;">2004. nov. 20.</span></em></strong> Nemrég jelent meg <strong>Sehriban Özdemir, Gabriele Thierkopf, Mavis Güneser, Luise Blum és Sati Sanyar</strong> szép CD-je, <strong>"Lilith"</strong> címmel a Lizge kiadó <a href="http://www.lizge.org/">http://www.lizge.org/</a> gondozásában (Lilith - Gögün yarisi/ Halfte des himmels)<span style="color:#000000;"> a "Kadinlar, yarisini omuzlarinda tasidiklari gökyüzüne sahip olmalilar" mottóval, ami egy kínai közmondás. A CD-n kurd (kurmandzsi, zaza), bretagne-i, jiddis, romániai német, német és török népdalok vannak. <em>(Sajnos, a Lizge linkje valamiért hosszabb ideje nem működik. A lemezt azért sok török - és németországi - üzletben meg tudjátok venni. Szerintem fantasztikus, ne hagyd ki, ha hozzá tudsz jutni!)</em></span></p><p align="justify"><strong>"En Garde" - Ayse Polat filmje a Locarnoi Filmfesztiválon</strong></p><p align="justify">Folytatódik a Németországban élő török rendezők sikersorozata. Ayse Polat (34) török-kurd származású filmrendező második játékfilmje a 2004. augusztus 14-én véget ért fesztiválon Ezüst Leopárdot kapott, vagyis a második legjobb film díját nyerte el. A film két női főszereplője Pinar Erincin és Maria Kwiatkowsky, mindketten megkapták a legjobb női alakítás díját. A film ősszel kerül a mozikba, remélhetőleg Magyarországon is. Linkek: <a href="http://2004.pardo.ch/pardo/director.do?lang=e&id=79555">1</a> <a href="http://www.welt.de/data/2004/08/16/319858.html">2</a> <a href="http://www.german-cinema.de/archive/film_person_view.php?film_person_id=400">3</a> <a href="http://www.milliyet.com.tr/2004/08/04/pazar/paz02.html">4</a> <a href="http://www.radikal.com.tr/haber.php?haberno=125107&tarih=16/08/2004">5</a> <a href="http://movies2.nytimes.com/gst/movies/movie.html?v_id=251910">6</a> <a href="http://www.x-verleih.de/x-verleih/neu.jsp?news_id=145">7</a> <a href="http://www.radikal.com.tr/veriler/2004/08/16/haber_125108.php">8</a> 9 10</p>
+false
+
+
+
+
+Efendi
+
+2004-11-01T21:30:03+01:00
+2005-02-10T12:50:03Z
+2004-11-09T11:32:43Z
+
+tag:blogger.com,1999:blog-7074887.post-109999996314678583
+Vízum és tartózkodási engedély török állampolgároknak - tudnivalók
+
+
+
Elég sokan érdeklődnek, ismerőseik hogyan szerezhetnek magyar vízumot. Erre a postra megpróbálom összegyűjteni a vízuminformációkat. Jó volna, ha a közérdekű tapasztalatokat, tanácsokat Ti is megírnátok itt a "comments" linken.
+
+
+
+
+
A tartózkodási engedéllyel kapcsolatos kalandokról már összegyűlt némi anyag a "Török házastárs" poston, így azt nem hoznám át, tehát az engedély megszerzésével kapcsolatos tudnivalókat a jövőben is ott keressétek és oda írjatok.
+
+
+
+
+
+
+Fontos tudnivaló! Ez itt nem tekinthetö hivatalos vízuminformációnak, azt a magyar képviseleteken lehet beszerezni Ankarában vagy Isztambulban. "As is" alapon kezelendö, tehát semmilyen felelösséget nem vállalok azok pontosságáért, vagy azokért az esetleges károkért, amelyek ezen információk esetleges pontatlanságából származnak és a többi, és a többi. Bár természetesen igyekszem azokat frissíteni, és az elvárható gondossággal járok el összeállításuk során, stb., stb., semmi garancia nincs arra, hogy ez sikerül is, ezért elképzelhetö, hogy ez a post egyszercsak majd több éves, szakállas információkkal kerül a T. Látogató képernyöjére és pld. kiderül, hogy már rég nincs szükség vízumra.
+
+
+
+
+
+Vízumkéréshez nyomtatványt le lehet tölteni
+
+
+
+EZEN A LINKEN
+
+
+
+! (90 napot meg nem haladó tartózkodáshoz)
+
+
+
+
+
+
+
+
+
+
+Macar vizesi icin basvurma formu
+
+
+
+ISBU LINKTEN
+
+
+
+ indirilir! (90 günü gecmeyen seyahat icin)
+
+
+
+
+
+
+
Akkor most lássuk, mi kell a vízumhoz:
+
+
+
+
+
+
+
+
+Vize için Türk vatandaslarinca beyan edilmesi gereken evraklar asagida sunulmaktadir.
+
+
+
+
+
+
+Asagida belirtilen evraklarin birer fotokopisinin de bulundurulmasi önemle rica olunur.
+
+
+
+
+
+
+
+Turist vizesi basvurusu sahsen veya turizm acentasi kanaliyla yapilir.
+
+
+
+
+
+
+
+Turist vizesi icin:
+
+
+
+
+
+
+
+Bir yili asan geçerlilikte pasaport
+ 2 adet renkli vesikalik resim
+ Ise giris belgesi
+ Isveren tarafindan vize basvurusu yapanin çalistigina ve Macaristan’da bulundugu dönemde izinli olduguna iliskin belge
+ SSK aylik prim bildirgesi / Emeklilik belgesi
+ Çalistigi sirketin vergi levhasi, oda sicil kaydi, imza sirküleri, ticari gazete
+ Gayri menkul belgesi, banka hesabi
+ Maas bordrosu
+ Ögrenci durumunda, ögrenim gördügü kurumun ögrencisi olduguna ve halen ögrenimini sürdürdügüne iliskin belge ve ögrenci karti
+ Otel rezervasyonu
+ Uçak bileti -gidis/dönüs- rezervasyonu
+ Kaza ve saglik sigortasi.
+
+
+
+
+
+
+
+
+
+
+Egitim amaçli vize için:
+
+
+
+
+
+
+
+
+
+
+
+
+Bir yili asan geçerlilikte pasaport
+ 2 adet renkli vesikalik resim
+ Egitim kurumundan kabul belgesi veya kayit edildigine iliskin belge veya egitim veren arastirma yerinin kabul beyanati veya davetiyesi
+ Macaristan’daki ikamet adresi
+ Bursun derecesi
+ Müracaat edenin Macaristan’a egitim için gidecegine iliskin okulundan veya is yerinden belge
+ Uçak bileti -gidis/dönüs- rezervasyonu
+ Kaza ve saglik sigortasi
+ Türkiye’deki egitim derecesini bildiren belge
+
+
+
+
+Is vizesi için
+
+
+
+
+
+
+
+
+
+
+Bir yili asan geçerlilikte pasaport
+ 2 adet renkli vesikalik resim
+ Macaristan’dan is partnerinden orijinal davetiye veya Macaristan Cumhuriyeti Içisleri Bakanligi tarafindan onaylanmis davetiye
+ Ticaret Odasi kaydi, vergi levhasi, imza sirküleri, ticari gazete, is faaliyetine iliskin belge
+ Sirketin antetli kagidina (imzali kaseli) müracaat edenin firmadaki görevini belirten belge
+ Seyahatin amacini ifade eden beyanat
+ Macar firmayla münasebeti gösteren yazismalar
+ Otel rezervasyonu veya resmi konaklama belgesi
+ Uçak bileti -gidis/dönüs- rezervasyonu
+ Maas bordrosu
+ SSK aylik prim bildirgesi / Emeklilik belgesi
+ Ise giris belgesi
+ Kaza ve saglik sigortasi
+
+
+
+
+
+
+
+
+
+Tek giris vize ücreti 35 eurodur.
+
+
+
+
+
+
+Vizeler Macaristan Cumhuriyeti Ankara Büyükelçiliginden (adres: Sancak Mahallesi Kahire Cad. No 30 Yildiz/Çankaya, tel: (312) 442 2273, fax: (312) 441 5049) veya Macaristan Cumhuriyeti Istanbul Baskonsoloslugundan (adres: Prof. Dr. Müfide Küley Sok. No 35 Tesvikiye, tel: (212) 225 5519, fax: (212) 296 8248) alinabilir.
+
+
+false
+
+
+
+
+Efendi
+
+2004-11-01T13:26:18+01:00
+2004-11-10T17:06:18Z
+2004-11-01T23:30:11Z
+
+tag:blogger.com,1999:blog-7074887.post-109935181179567458
+Ösztöndíjjal Törökországba
+<div align="justify">A magyar-török kulturális és oktatási csereprogram alapján a török fél az alábbi ösztöndíjakat biztosítja magyaroknak:
<br />
<br /><span style="font-size:85%;">"ARTICLE 17
<br />
<br />The Turkish Party shall grant, on an annual basis, two post-graduate research scholarships for the duration of eight months each, and four Turkish language and culture summer course scholarships for the duration of two months each to study at the University of Ankara or the University of Istanbul.
<br />
<br />If the Sending Party so requires, the scholarships may be divided into two or more parts, but no scholarship for research may be shorter than two months."</span></div><div align="justify"><span style="font-size:85%;"></span>
<br /></div><div align="justify"><span style="font-size:85%;">Magyarán, évente két db 8 hónapos kutatói (posztgraduális) ösztöndíjat lehet igénybe venni, valamint 4 db 2 hónapos ösztöndíjjal lehet menni az Ankarai vagy az Isztambuli egyetem török nyelvvel és kultúrával foglalkozó nyári kurzusaira. A két kutatói ösztöndíj összesen 16 hónapját min. 2 hónapos ösztöndíjakra is fel lehet osztani.</span></div><p align="justify"><span style="font-size:85%;">Akit érdekelnek az ösztöndíjak és a pályázat részletei, keresse Szentirmai Dórát a magyar Oktatási Minisztériumban.</span></p><p align="justify"><span style="font-size:85%;">A Magyar Tudományos Akadémiának is van együttmüködési megállapodása a török partnerrel, és az ELTE-nek is az Ankarai Egyetemmel. Azok részleteiröl a két intézményben lehet érdeklödni.</span></p><p><span style="font-size:85%;"> </p><div align="justify">
<br />
<br /></div></span>
+false
+
+
+
+
+Efendi
+
+2004-10-05T23:25:38+02:00
+2005-01-28T22:53:38Z
+2004-10-05T21:32:49Z
+
+tag:blogger.com,1999:blog-7074887.post-109701196972464526
+Civil társadalom Törökországban
+
+
+
Ez a post a törökországi demokratikus civil és ifjúsági szervezeteket mutatja be. Azokat, amelyek képviselői nem (nyugalmazott) katonatisztek és nem állami rendszámú autókkal közlekednek (vagy legalábbis nem tudunk róla).
+
+
+
+
Az Európai Bizottság és a tagállamok 2005-től még erősebben fogják támogatni az úgynevezett társadalmi párbeszédet, a török civilek és a tagállamok non-profit szervezetei között, azért, hogy szűnjenek az európai társadalmakban meglévő, Törökországgal kapcsolatos előítéletek, hogy egymásra találjanak azok az európai és török emberek, akik agyilag még képesek az elfogulatlan, önálló, demokratikus, épeszű gondolkodásra, hogy Törökországban erősödjék a civil társadalom, amelynek fejlődését a korábbi évtizedekben ugyanúgy, ahogy annak idején Magyarországon is, a hatalom birtokosai - akik mindig jobban tudták, hogy mi kell az egyénnek - igyekeztek megakadályozni.
+
+
+
+
A török civilek helyzete még mindig nehéz. Az állam hosszú ideig nem szolgálni, hanem ellenőrizni akarta az állampolgárokat, "embert akart faragni belőlük", ahogy a civilek mondják. A demokratikus NGO-k még kevéssel ezelőtt is az "állam és a nép ellenségei" voltak. A civilek szerint a török emberek még most sem nagyon mernek élni jogaikkal, gondolkodásuk az elmúlt évtizedekben kissé "militarizálódott", s a jog alkalmazói is inkább a korábbi status quo-t, mintsem az emberi jogokat védik. A civilek úgy látják, hogy törökországi hagyományok szerint eddig az "állami" struktúrák (főleg a katonák) meghatározták az állami ideológiát, kijelölték a mozgásteret, a törvényhozói, a végrehajtói és a bírói hatalmi ágak pedig "a feladatokat végrehajtották". Két évvel ezelőtt például az egyetemistáknak még csak arra volt joguk, hogy az egyetemeken sportegyesületeket hozzanak létre, minden más szerveződést jogszabályok tiltottak.
+
+
+
+
Az elmúlt néhány év reformpolitikája ennek a helyzetnek a megváltoztatására irányul. Nevezhetjük ezt uniós harmonizációnak vagy akárminek, a lényeg az, hogy kísérlet történik egy demokratikus Törökország kialakítására. Ha sikerül, Törökország az európai közösség része, uniós tagállam lesz. Törökország uniós felvétele nem attól füg, milyen volt az Oszmán Birodalom, ostromolták-e Bécset és Budát, hanem attól, milyen ma, milyen lesz 10-15 év múlva, sikerül-e valóban demokratikus viszonyokat, jogállamot teremteni. Ma, 2004. december 15-én, biztos vagyok abban, hogy az Európai Unió tagállamai, köztük Magyarország, napokon belül olyan becsületes döntést hoz Törökország uniós csatlakozásáról, amely esélyt ad erre. Az, hogy mi lesz 2004. december 17. után, nemcsak a törökökön múlik, hanem rajtunk is.
+
+
+
+
Szeretném, ha ez a post segítne a magyar és a török civil társadalom közötti kapcsolatépítésben. Nagy szükség volna rá.
+
+
+
+
2005 nyarára-őszére az Európai Bizottság elkészít egy sokéves programot a Törökország és az uniós tagállamok civil szervezetei és társadalmai közötti kapcsolatok erősítéséről, lehetőséget biztosítva arra, hogy az uniós és a török állampolgárok jobban ismerjék és segítsék egymást. Jó volna, ha ebben mi, magyarok és magyar NGO-k is megtalálnánk a helyünket.
+
+
+
+
Ezen a poston három dolgot találhattok: híreket, partnereket, és segítő szándékot, ez utóbbi az enyém - keressetek, ha a civilek közötti kapcsolatépítésben támogatásra van szükségetek.
+
+false
+
+
+
+
+Efendi
+
+2004-09-26T15:58:04+02:00
+2005-01-08T22:49:04Z
+2004-09-26T14:00:59Z
+
+tag:blogger.com,1999:blog-7074887.post-109620725917565558
+Mardin/Tur Abdin/Mor Gabriel szír ortodox kolostor
+
+
+
A postban a Mardin tartományban élő szír ortodox keresztényeket szeretném bemutatni, de Mardint nem lehet nem megemlíteni - ha teheted, nézd meg, soha nem fogod elfelejteni.
+
+
+
+
+
Igazi múzeumváros, igazi Kelet! Az asszír birodalom óta (i.e. 3800 - 562) lakott település. Az óváros fantasztikus, csak gyalog járható - rögtön a középkorban érezheted magadat. Rengeteg a kőfaragással diszített szép épület. Ejtsétek útba a Sultan Isa Medreszét (1385), az Ulu Dzsámit, amelyet a szeldzsukok építettek a XI. században, a X. században épült várat, az V. századi Kirklar templomot, az Archeológiai Múzeumot, meg persze a piacokat. Nézd meg ezt az oldalt (MAREV), rengeteg kitűnő fotóval a városról!
+
+
+
+
+
Mardin egészen közel van a szíriai határhoz. A legközelebbi reptér Diyarbakirban és Sanliurfában van, a távolság az előbbitől 90, az utóbbitól 180 km, kocsival/busszal 1-2 óra. Isztambulból, Izmirből, Ankarából autóbusszal is elérhető (Varan, Ulusoy, Koc - ezek a legjobbak). Mardin - Isztambul ill. Izmir táv kb. 1500, Mardin - Ankara kb. 1000 km.
+
+
+
+
+
Néhány éve még rendkívüli állapot volt a tartományban, most is erős a katonai/csendőri jelenlét, időnként összeütközések is vannak a terroristákkal - főleg a Mardintól 22 km-re lévő Kiziltepe hírhedt ilyen szempontból. A hely most már nagyjából biztonságos, de azért Mardin városán kívülre csak világosban érdemes elindulni, s nem egyedül, illetve inkább utazási iroda kísérőjével vagy szervezett formában. A helyi idegenforgalmi hivatalt a(482) 2127406 telefonon lehet elérni. Érdemes próbálkozni a gaziantepi székhelyű Arsan utazási irodával. Szálláslehetőség: a legjobb szállás a 30 szobás Erdoba Evleri (tel. 482 - 2137787, 2127677, másik link itt) egy fő/éj reggelivel kb. 40 dollár (feltétlenül foglalj előre szobát), szóba jöhet még a mellette lévő Satana Evi vagy a Bilen Hotel (tel. 482 - 2125568), a többi szálláshelyet inkább érdemes elkerülni. Kiziltepében ugyan jó a Hotel Öztopraklar, oda viszont még ne menjetek.
Mardin környéke is csodálatos, várak, templomok, dzsámik mindenütt. A könnyen elérhető és kihagyhatatlan helyek közül az első kettő Midyat és Hasankeyf, meg persze a szír ortodox keresztény helyek - folytatom is velük.
+
+
+
+
+
Törökországban a kilencvenes évekig 20-40 ezer szír ortodox keresztény élt, jó részük Mardin tartományban (ez a valamikori Felső-Mezopotámia). Az egyház eredete a korai kereszténységig, a IV-VI. századig nyúlik vissza.
+
+
+
+
+
Ebben az időben Kelet-Törökországban két nagy keresztény közösség jött létre.
+
+
+
+
+
Az egyik az örmény: ők már a IV. században államvallássá tették a kereszténységet, (még azelőtt, hogy az 381-ben államvallás lett a Bizánci azaz Kelet-Római Birodalomban), s a Bibliát már 410-ben lefordították örmény nyelvre. (Az örmény Bagratida Kirányságról nézd meg az "Ani" posztot.)
+
+
+
+
+
+A másik keresztény közösség a szír ortodox volt, amelynek tagjai a sémi nyelvcsaládhoz tartozó arámi nyelvet beszélték. (Az arámi az i.e. VIII - i.e. IV. században a Közel-Kelet közvetítő nyelve volt, valószínűleg azt beszélte Jézus is. A Törökországban élő szír ortodox keresztények - akiket a törökök süryaninak hívnak - jó része ma is az arámeus nyelv keleti nyelvjárását használja.) Tagjai az Antiochiában (a mai Antakyában) i.sz. 37-ben Péter apostol által létrehozott, ugyanezt a nyelvet beszélő korai keresztény közösségből eredeztetik magukat. Antiochia ekkor Róma szíriai tartományának fővárosa volt. A következő évszázadokban a kereszténység elterjedt a Tigris (mai török nevén Dicle) és az Eufrátesz (mai nevén Firat) felső térségében. A mai Sanliurfa (az akkori Edessa) lehetett a szír ortodox kereszténység bölcsője. A térség ebben az időben a vallási hierarchiában az antiochiai püspökséghez tartozott, amely 325-ben patriarchátus rangjára emelkedett.
+
+
+
+
+
Az önálló szír ortodox keresztény egyház azonban csak a VI. században (ez Justinianus bizánci császár kora) jött létre. Nagy szerepe volt ebben Jacob Baradi monofizita püspöknek - ezért hívják az egyházhoz tartozókat jakobita keresztényeknek is. Miért is lett önálló egyházuk?
+
+
+
+
+
A monofiziták vitában álltak Bizánccal az Atya és Krisztus viszonyának megítélése kapcsán. A kereszténység teológiai vitáinak eldöntésére, mint tudjuk, hét egyetemes zsinatot tartottak, valamennyit a mai Törökország területén (bár a monofiziták csak az első négyet ismerik el egyetemesnek, mivel az utolsó hármon már nem vettek részt.) 325-ben a még meg sem keresztelt Nagy Konstantin bizánci császár elnökölte az első egyetemes (ökumenikus) zsinatot nicaea-i palotájában (a várost ma Iznik néven találod meg Törökországban a Márvány-tenger mellett).
+
+
+
+
A monofiziták a negyedik egyetemes zsinatig, azaz a 451. évig tartottak ki (a zsinat a mai Kadiköyben (Isztambul) volt, akkor még Khalkedonnak hívták). A Krisztus természetéről folytatott teológiai vitában ezen a zsinaton vereséget szenvedtek, a rájuk kényszerített nyugati felfogást az isteni természetről azonban nem voltak hajlandók elfogadni. 451-ben szakadás következett be az antiochiai patriarchátusban: létrejött a ma görögkeletinek nevezett ortodox egyház, illetve a szír ortodox egyház. Mindkét irányzat püspökei magukat akarták elfogadtatni a patriarchátus vezetőjének. A Justinianus által támogatott görögkeleti irányzat győzött: 518-ban a szír ortodox pátriárkát száműzték Antiochiából. Mardin 1293-tól 14 évszázadon át volt szír ortodox vallási központ, a pátriárka székhelye (Deyr-Ul-Zafaran kolostor). A pátriárkának politikai okokból 1933-ban kellett távoznia kellett, azóta Szíria, 1959. óta Damaszkusz az egyház központja.
+
+
+
+
A szír ortodox egyházon kívül ma is monofizita az örmény, az egyiptomi kopt és az etióp egyház, a maronita keresztények Libanonban, de élnek monofizita (nesztoriánus) közösségek Indiában, Iránban, Közép-Ázsiában is. Talán még annyit, hogy a jakobita és az örmény egyház 728-ban Manzikertben (a mai törökországi Malazgirt) kísérletet tett az egyesülésre, ám az erőfeszítés nem járt sikerrel.
+
+
+
+
+
A szír ortodox keresztények sok jó weboldalt működtetnek, egy linkgyűjteményt itt találhatsz. Kettőt külön kiemelek: érdemes tanulmányozni azokat, sok praktikus információt is tartalmaznak. Az egyik a Margoneetho (ez gyöngyöt jelent) SOR azaz Syriac Orthodox Resources, a másik pedig a Suryoyo On-line, Göttingenből.
+
+
+
+
+
Mardin térségében valaha 80 kolostor állt és 150 püspök tevékenykedett. A kolostorok közül ma három működik: a 396-ban épített Mor Gabriel vagy másik nevén Deyr-Ul-Umur (a Mardin tartománybeli Midyat járási központtól 22 km-re lévő Tur Abdinban), Mor Yakub (Nusaybinban, Salah, más néven Baristepe településen) és a 493-ban épült, Mardin városától 5 km-re, Eski kale településen található Deyr-Ul-Zafaran (a pátriárka volt székhelye). A kolostorok felbecsülhetetlen értékű korai keresztény dokumentumokkal rendelkeznek. Más kolostorok és templomok is megvannak még, ha nem is működnek, ezekről majd később.
+
+
+
+
Magam a Mor Gabrielben jártam, így arról - meg Mardin városáról -tudtam fotókat felrakni a postra.
+
+Tur Abdin metropolitája Mor Timotheus Samuel Aktas, róla itt olvashatsz.
+
+
+
+
+
+
+
+
+
+
+
+Tur Abdin
+
+ a felső-mezopotámiai fensíkon van, amely Mardintól Cizréig terjed, központja Midyat. Tur Abdin jelentése: 'Isten szolgáinak fennsíkja'.
+
+
+Sajnos, a nyolcvanas-kilencvenes évek terrorizmusa és a terrorizmus-ellenes hadjárat (Szíriában a határ térségében PKK-bázisok voltak) teljesen felborította a stabilitást: a szír ortodox közösség nagy része külföldre vagy Törökország más városaiba menekült, s Mardin tartomány kurd és más identitású lakosai közül is sokan elhagyták lakóhelyüket. Az 1999. óta eltelt békés öt év alatt egyelőre kevesen tértek haza: nagy még a bizalmatlanság, a károk helyreállítása messze nem fejeződött be, s a szír keresztények házainak egy részébe hívatlan vendégek, a kormány által a terroristákkal szemben alkalmazott úgynevezett faluőrök, egyfajta félkatonai szervezet tagjai költöztek be (a szervezetet máig sem számoltak fel, közel 60 ezer, államilag fizetett tagja és elég kétes híre van). Meg kell említeni Mardin újsütetű kormányzójának kedvező hozzáállását. A külföldről hazatért szír keresztények egy csoportja a faluőrök miatt nem tudott visszaköltözni házába, s a kormányzó bő fél évig sem szép szóval, sem cserelakás ígéretével nem tudta ez utóbbiakat kilakoltatni, így végül a csendőrséggel volt kénytelen jobb belátásra bírni a házfoglalókat.
+
+
+A szír keresztény egyház az elmúlt két évtizedben hívőkben, támogatókban meggyengült (
+
+erről itt olvashatsz
+
+ angolul és németül +
+
+itt angolul
+
+
+). A török törvények miatt nem folytathat oktatási tevékenységet, papképzést, így talpraállása nehéz. A helyzet azonban
+
+nem reménytelen
+
+.
+
+
+false
+
+
+
+
+Efendi
+
+2004-09-24T23:00:00+02:00
+2005-03-16T20:49:39Z
+2004-05-22T21:36:40Z
+
+tag:blogger.com,1999:blog-7074887.post-108526180053157077
+Törökország az Európai Unióban?
+<div align="center"><span style="font-size:130%;color:#ff0000;">2005.</span></div><div align="center"><br /><br /></div><div align="justify"></div><div align="center">A Magyar-Török Baráti Társaság rendezvénye: </div><div align="center"><span style="font-size:130%;">Tarik Demirkan - Törökország a EU küszöbén</span></div><div align="center">Márc. 31., csüt. 17.30. </div><div align="center">Bp.VI. Bajza u. 54. I. em. Nemzetek Háza</div><div align="center"><br /></div><div align="center"><em>(A Median februári felmérése szerint a magyarok kb. 58 százaléka ért egyet Törökország európai uniós csatlakozásával!)</em></div><div align="justify"><br /></div><div align="justify"></div><div align="center"><span style="font-size:130%;color:#ff0000;">2004.</span></div><div align="center"><strong><span style="font-size:130%;color:#ff0000;"></span><br /><br /></div><div align="justify"></div><div align="justify">Törökország 1999. óta tagjelölt az Európai Unióban. 2004. <span style="color:#ff0000;">október 6-án</span> az Európai Bizottság közzéteszi értékelését a török felkészülés elmúlt 3 évéről, majd ennek alapján <span style="color:#ff0000;">december 17-én </span>az Európai Tanács dönt arról, hogy a tagállamok megkezdik-e Ankarával a csatlakozási tárgyalásokat, és ha igen, mikor.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Az európai államok közvéleménye és döntéshozói megosztottak, s Törökországban is eltérőek a vélemények arról, kell-e az országnak az uniós tagság, vagy ennek a 70 milliós államnak más utakat keresve kellene inkább boldogulnia. Nyilvánvalóan nem a mai Törökország fog belépni az unióba, s belépésekor az Unió is nagyban más lesz, mint ma. A decemberi döntés sem a felvételről, hanem a csatlakozási tárgyalások megkezdéséről szól, s ez utóbbiak akár 10-20 évig is elhúzódhatnak.<br /></div><div align="justify"><br /></div><div align="justify">A Törökországgal kapcsolatos döntés a magyar érdekeket is érinti. Magyarország részt vesz az uniós döntéshozatalban, s a magyar kormány nyilván mérlegeli azt is, hogyan viszonyul a török csatlakozáshoz az ország lakossága, a magyar közvélemény. Egyelőre úgy tűnik, sehogy, mintha lenne elég bajunk enélkül is, ám ez változni fog. A török csatlakozás valamennyiünket érint.</div><div align="justify"><br /></div><div align="justify">Szeretném, ha ez a post segítene benneteket a tájékozódásban. Igyekszem belinkelni a legfontosabb olvasnivalókat, kommentálni a fejleményeket és válaszolni a kérdésekre. Tehát irány a "comments" link, rólad is szól a mese!</div><div align="justify"><br /></div><div align="justify">Az elmúlt hónapok törökországi uniós fejleményeiről <a href="http://torokorszag.blogspot.com/2004/09/nk-helyzete-trkorszgban.html">"A nők helyzete Törökországban"</a> postban olvashatsz, mivel - rajtunk kívülálló okokból - az volt napirenden (meg lesz is még). </div><div align="justify"><br /></div><div align="justify"><em><strong><span style="color:#ff0000;">okt. 5.</span> Holnap meglátjuk az Európai Bizottság országjelentését. Rágódhatunk rajta december 17-ig még eleget. Most már biztos, hogy bizonyos okokból novemberig nem tudok semmiféle eszmecserét animálni itt a blogon a török csatlakozás kérdésében, ezért néhány gondolatomat ma szeretném megosztani a látogatókkal.</strong></em></div><div align="justify"><em><br /><strong></strong></em></div><div align="justify"><em><strong>Törökországnak helye van az Unióban. </strong></em></div><div align="justify"><em><strong></strong></em><br /></div><div align="justify"><em><strong>De nem a mai Törökországnak és nem ma. </strong></em></div><div align="justify"><em><strong></strong></em><br /></div><div align="justify"><em><strong>Törökország az elmúlt három évben irgalmatlanul nagyot lépett előre, de egyelőre beváltatlan ígéret. Ha azt mondjuk, hogy teljesíti a koppenhágai politikai kritériumokat, ez nem jelent mást, mint az eddigi, pár éves teljesítménye alapján megelőlegezett bizalmat. Azt, hogy lehetséges a jogállamiság, a demokrácia megteremtése, a transzparencia, a csatlakozási tárgyalásokkal párhuzamosan. </strong></em></div><div align="justify"><em><strong></strong></em><br /></div><div align="justify"><em><strong>Esély, amelyet meg kell adni. </strong></em></div><div align="justify"><em><strong></strong></em><br /></div><div align="justify"><em><strong>Esély, s értékelni, mérni kell, hogyan élnek vele.<br /></strong></em></div><div align="justify"><strong><em></em><br /></strong></div><div align="justify"><em><strong>Törökország nem Isztambul, nem Antalya, hanem Hakkari, Kars, Erzurum, Sivas és Tunceli meg Diyarbakir. Szunniták és aleviták. Törökök, kurdok, meg még két tucat etnikum. Ugyanennyi élő nyelv. A 28 kurd lázadás országa. Az elmúlt 80 év sok zsákutcája és sok eredménye. Modern viszonyok az ország egy részében, törzsiek másutt. Ahogy az egységes szovjet nemzetet sem sikerült megteremteni, ugyanolyan kétes eredménnyel jártak az elmúlt 80 év egységes nemzetállami törekvései Törökországban is. Rengeteg múltbéli sérelem, amelyeket orvosolni kell. Rengeteg eltemetetlen halott, megbocsátandó bűn, elkerülhetetlen bűnbánás. Vannak utak, amelyeket a társadalomnak meg kell járnia, problémák, amelyeket nem lehet puccsokkal orvosolni, megoldások, amelyeket a társadalomnak magának kell kikínlódnia. </strong></em></div><div align="justify"><strong><em></em><br /></strong></div><div align="justify"><em><strong>Ehhez évtizedek szükségesek. Miként a társadalmi és gazdasági modernizációhoz is. Meg külső partnerek is, ezek volnánk mi, uniós tagállamok. Olyanok, amilyenek vagyunk, ha erre mindig nem is lehetünk büszkék. </strong></em></div><div align="justify"><strong><em></em><br /></strong></div><div align="justify"><em><strong>Jó megoldás fog születni, bízzunk benne, október 6-án, meg majd december 17-én is. </strong></em></div><div align="justify"><strong><em></em><br /></strong></div><div align="justify"><em><strong>Olyan, amely esélyt kínál és támogatást ad Törökország gazdasági-társadalmi modernizációjához, de esélyt ad Európának is a változásra, arra, hogy befogadja ezt a büszke, makacs, fafejű, most még hol szörnyen nacionalista, hol messzemenően toleráns, hozzánk hasonló kompországot - liberális értelmiségével, messianisztikus hadseregvezetésével, jobb- és baloldali meg etnikai szélsőségeseivel, - amelyek nemcsak plakátot ragasztgatnak -, az irticával, az ülkücükkel, a kemalista régi establishmenttel, Anadolu új oroszlánjaival, TÜSIAD-dal és MÜSIAD-dal, mindenfelől indoktrinált, ki- és felhasznált polgáraival. </strong></em></div><div align="justify"><strong><em></em><br /></strong></div><div align="justify"><em><strong>Akiket Ti is, én is, annyira kedvelünk, de akiket Magyarországon szinte egyáltalán nem ismerünk. Sok sikert tehát Botondnak és a Tilos Rádiónak.</strong></em></div><div align="justify"><strong><em></em><br /></strong></div><div align="justify"><em><strong>Szóval, türelem kell, józan ész, sok-sok munka, mindkét oldalon. Uzun ve ince yol, ahogy Turgut Özal mondta. Ha már nem is olyan uzun, mint volt '87-ben.</strong></em></div><div align="justify"><em><br /><strong></strong></em></div><div align="justify"><em><strong>A részletekre meg majd novemberben visszatérünk. Szeretném, ha elmondanátok, Ti mit gondoltok a török csatlakozásról.</strong></em></div><div align="justify"><strong><em></em></strong></div><div align="justify"><em><strong>Efendi.</strong></em></div><div align="justify"><strong><em></em></strong><br /></div><div align="justify"><strong><em></em></strong></div><div align="justify"><strong><span style="color:#ff0000;">okt. 6.</span> A <a href="http://www.eu2004.hu/index.php?op=hirek&id=1351&PHPSESSID=ed85ba09a568b86266c7c6759ffc53fd">Bizottság javaslata</a> korrekt: javasolja, hogy a tagállamok vezetői döntsenek decemberben a török csatlakozási tárgyalások megkezdéséről. Elvárja, hogy folytatódjék a reformfolyamat Törökországban, nevesíti a meglévő problémákat. Beépít fékeket a tárgyalási folyamatba, így ha bárki Törökországban megpróbálná rossz irányba vinni a dolgokat, a tárgyalásokat fel lehet függeszteni, plusz állandó ellenőrzés fog érvényesülni. Harmadszor, segíteni fogja a civil társadalom erősödését Törökországban, és a török, illetve az uniós állampolgárok párbeszédét, amire nagy szükség van. A döntő szót a tárgyalások megkezdéséről az uniós tagállamok vezetői fogják kimondani december 17-én.</strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong></strong></div><div align="justify"><strong>A bizottsági dokumentumokat itt olvashatod:</strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong></strong></div><div align="justify"><strong>Ajánlás <a href="http://europa.eu.int/comm/enlargement/report_2004/pdf/tr_recommendation_en.pdf">angolul</a> <a href="http://europa.eu.int/comm/enlargement/report_2004/pdf/tr_recommendation_de.pdf">németül</a> <a href="http://europa.eu.int/comm/enlargement/report_2004/pdf/tr_recommendation_fr.pdf">franciául</a></strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong>Országjelentés <a href="http://europa.eu.int/comm/enlargement/report_2004/pdf/rr_tr_2004_en.pdf">angolul</a> <a href="http://europa.eu.int/comm/enlargement/report_2004/pdf/rr_tr_2004_de.pdf">németül</a> <a href="http://europa.eu.int/comm/enlargement/report_2004/pdf/rr_tr_2004_fr.pdf">franciául</a></strong></div><div align="justify"><br /></div><div align="justify"><strong>Hatástanulmány Törökország csatlakozásáról <a href="http://europa.eu.int/comm/enlargement/report_2004/pdf/issues_paper_en.pdf">angolul</a> <a href="http://europa.eu.int/comm/enlargement/report_2004/pdf/isssues_paper_de.pdf">németül</a> <a href="http://europa.eu.int/comm/enlargement/report_2004/pdf/isssues_paper_fr.pdf">franciául</a></strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong>A korábbi uniós dokumentumokat Törökországról <a href="http://europa.eu.int/comm/enlargement/report_2004/">ezen a linken</a> találod meg. <a href="http://europa.eu.int/comm/enlargement/turkey/">Itt pedig láthatod</a> az Európai Bizottság minden lényeges háttérinformációját Törökországról és a török-EU kapcsolatokról.</strong></div><div align="justify"><br /><strong><span style="font-size:130%;color:#ff0000;">Olvasnivaló:</span></strong></div><div align="justify"><strong><span style="font-size:130%;color:#ff0000;"></span></strong></div><div align="justify"><span style="font-size:85%;"><a href="http://hvg.hu/vilag/20041215nemteljesitankara.aspx">Mit nem teljesített még Ankara?</a> - HVG, 2004. dec. 15.</span> </div><div align="justify"></div><div align="justify"><strong><span style="font-size:130%;color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="font-size:130%;color:#ff0000;"></span></strong></div><div align="justify"><span style="font-size:85%;"><a href="http://hrw.org/english/docs/2004/12/15/turkey9865.htm">A Crossroads for Human Rights? Human Rights Watch’s key concerns on Turkey for 2005</a> (EN, FR, DE) - 2004. dec. 15.</span></div><div align="justify"><br /></div><div align="justify"><span style="font-size:85%;"><a href="http://hrw.org/english/docs/2004/12/15/turkey9866.htm">Turkey: EU Green Light Would Bolster Rights Reform</a> (EN, FR, DE) - Human Rights Watch, 2004. dec. 15.</span></div><div align="justify"><strong><span style="font-size:130%;color:#ff0000;"></span></strong></div><div align="justify"></div><div align="justify"><strong><span style="font-size:130%;color:#ff0000;"></span></strong></div><div align="left"><span style="font-size:85%;"></span><br /></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:130%;"><strong>Törökország a kapuk előtt</strong></span></div><div align="justify"><span style="font-size:85%;">Népszabadság • Szent-Iványi István • 2004. október 1.</span></div><div align="justify"><span style="font-size:85%;"><br /></span></div><div align="justify"><span style="font-size:85%;"></span></div><div align="justify"><span style="font-size:85%;">Az igazság pillanata itt van. Az Európai Bizottság október 6-án teszi közzé jelentését Törökország felkészültségéről, s az Európa Tanács erre alapozva határoz majd decemberben a csatlakozási tárgyalások megkezdéséről. Nem Törökország felvételéről tehát, hanem arról, hogy meginduljon-e az a folyamat, amely a tagjelölt megfelelő teljesítménye esetén a tagsághoz vezet. Ez a procedúra mindkét fél részéről komoly elkötelezettséget jelent. Legfőbb ideje Magyarországon is megvitatnunk, van-e helye Törökországnak az EU-ban.</span></div><span style="font-size:85%;"><div align="justify"><br />Az EU külpolitikája számunkra csatlakozásunk előtt jobbára adott tényező volt, alakításában csak közvetetten és korlátozottan vehettünk részt. Akkoriban természetesnek tűnt, hogy elsősorban szűkebb régiónk ügyeinek vitelében vállalunk aktív és kezdeményező szerepet. Tagként azonban nem engedhetjük meg magunknak azt a fényűzést, hogy ne nyilvánítsunk véleményt az unió lényegét, célját és jövőjét érintő kérdésekben. <em><a href="http://www.nol.hu/cikk/334836/">folytatás</a></em></div><p align="justify"><em><strong>Petőcz András cikke: </strong></em></span><span style="font-size:85%;"><strong>A feketeleves még hátravan</strong> (Népszabadság, 2004. okt. 19.) </span></p><p align="justify"><span style="font-size:85%;"><em>(részlet az írásból:</em> Magyarország az egyetlen a jelenlegi Európai Unióban, mely a történelem során "szoros kapcsolatban" volt Törökországgal... Magyarország, szerintem érintett ebben a kérdésben. Meglepő, hogy miközben Raffarin francia miniszterelnök állást foglal, az új magyar miniszterelnök nem. Vajon a tanácsadói tájékoztatják-e az uniós államok megosztottságáról Gyurcsány Ferencet, és vajon nem lehetséges-e, hogy éppen a magyar parlamentben kellene a franciához hasonló vitát lefolytatni? És vajon a török csatlakozás mennyire elfogadható a magyar közvélemény számára?...)<a href="http://www.nol.hu/cikk/336942/"> </a></span><span style="font-size:85%;"><a href="http://www.nol.hu/cikk/336942/"><em>(a teljes írás itt olvasható)</em></a></span></p><p align="justify"><span style="font-size:85%;">EFENDI KOMMENTÁRJA - Dec. 14.<br />Kellenek-e a törökök az EU-ban?<br />A Magyar Nemzet On-line "Kellenek-e a törökök az EU-ban?" fórumában március óta 848 hozzászólás foglalkozott azzal, van-e Törökországnak helye az Unióban. Légy szíves, szánj rá egy órát, és olvasd el az összes hozzászólást <a href="http://www.mno.hu/index.mno?pg=3&action=showmsg&tid=15551">EZEN A LINKEN</a>. Tényleg kérlek, olvasd el az egészet, a korrekteket, a józanul kétkedőket, a gyomorfordító, a rasszista, a xenofób, az antiszemita, vagy az egyszerűen csak ostoba, primitív hozzászólásokat éppúgy, mint azokat a véleményeket, amelyek nacionalista, indoktrinált vagy naív török gondolkodást tükröznek és ahelyett, hogy dühöngenél, gondolj végig néhány dolgot:<br />Demokraták vagyunk-e?<br />Tudjuk-e, hogy az Európai Unió tagállamai, köztük Magyarország, miért akarnak esélyt adni Törökország tagságának és milyen feltételekkel?<br />Tudjuk-e, hogy a magyar politikai pártok és a politikai elit mit gondol Törökország potenciális tagságáról és az azzal kapcsolatos magyar érdekekről? Mit tett a magyar politikai elit azért, hogy a magyar közvélemény megismerhesse a december 17-i (magyar) döntés indítékait, következményeit? Ismersz-e Szent-Iványi István és Petőcz András publikációin kívül (lásd a török-EU postot a blogon) értelmes írásokat a török csatlakozással kapcsolatos dilemmáinkról? Vitatkozott-e erről valaha a magyar Országgyűlés, érdekelte-e a kormányt a parlament vagy a társadalom véleménye, mielőtt a december 17-i uniós csúcstalálkozón a magyar miniszterelnök így vagy úgy állást foglal?<br />Mit tudunk a mai Törökországról? Melyik magyar politikai párt tájékozódott az elmúlt 14, vagy legalább a török uniós tagjelölti státusz megadása óta eltelt 5 évben a helyszínen - Ankarában, Diyarbakirban, Mardinban, Erzurumban, Karsban, Vanban, Tunceliben vagy másutt a törökországi problémákról? Melyik politikai párt vagy civil szervezet találkozott ezekben a városokban a török demokraták, a kurd demokraták, az alevik, a jogfosztott keresztény felekezetek vagy a jogfosztott muszlimok képviselőivel, a jogfosztott civil társadalom szervezeteivel, a jogfosztott vagy az elégedett török állampolgárral? Amikor 2000-ben a magyar miniszterelnök Törökországban járt, találkozott-e bárkivel közülük? Miért kapta a legnagyobb magyar állami kitüntetést 2001-ben a török hadsereg vezérkari főnöke? Milyen civil szervezeteket segítettünk az elmúlt 15 évben mi, magyarok, miközben azok ténylegesen élet-halálharcukat vívták? Ma, 2004-ben melyik magyar NGO-nak vannak török kapcsolatai, egyáltalán, tud-e bárki bármit a török civilekről?<br />Miért tűnik természetesnek a magyar politikai osztály számára, hogy az Európai Alkotmányos Szerződésről nem kell/nem szükséges/nem indokolt népszavazást tartani és azt megelőzően késhegyre menő társadalmi vitát folytatni? Miért gondolja pillanatnyilag azt a magyar politikai elit, hogy a magyar társadalmat nem érdekli Törökország uniós csatlakozása?<br />A múlt hónapban láttam az Indexen egy szavazást, 12 ezer szavazóból közel 6 ezer úgy vélekedett, hogy Törökországnak nincs helye az Európai Unióban. Az MNO fórumán látott hozzászólások is arról győztek meg: már régen tisztességes társadalmi vitát kellett volna kezdenünk a török uniós csatlakozásról. Természetes, hogy abban helye lett volna minden érvnek - Mohácstól Bécs ostromáig, Buda felszabadításától Kossuth kütahyai alkotmányáig, Ratzinger bíboros érvelésétől Yunus Emre humanizmusáig, az örmény népirtás török tagadásától a Makarios érsek által szorgalmazott enozisig, a számunkra fontos uniós források féltésétől a török csatlakozás hozadékáig - , a fontos az lett volna, hogy kicsit okosabbak, toleránsabbak legyünk, s hogy tudjuk: a magyar miniszterelnök miért dönt úgy, ahogy majd dönt az Európai Tanács december 17-18-i ülésén a Törökországgal való csatlakozási tárgyalások megkezdéséről.<br />Kár a most elszalasztott esélyért - sajnos, ilyenek vagyunk. Bízzunk abban, hogy ha a török csatlakozási tárgyalások megkezdéséről most megszületik a döntés, lesz elég bölcsességünk ahhoz, hogy részt vegyünk a török-uniós társadalmi/kulturális/civil párbeszédben, s talán itthon is értelmes vita lesz a török csatlakozásról.<br />Változatlanul azt gondolom, amit október 5-én írtam a blogban, a török-EU postban:<br />"Törökországnak helye van az Unióban.De nem a mai Törökországnak és nem ma.Törökország az elmúlt három évben irgalmatlanul nagyot lépett előre, de egyelőre beváltatlan ígéret. Ha azt mondjuk, hogy teljesíti a koppenhágai politikai kritériumokat, ez nem jelent mást, mint az eddigi, pár éves teljesítménye alapján megelőlegezett bizalmat. Azt, hogy lehetséges a jogállamiság, a demokrácia megteremtése, a transzparencia, a csatlakozási tárgyalásokkal párhuzamosan.Esély, amelyet meg kell adni.Esély, s értékelni, mérni kell, hogyan élnek vele.Törökország nem Isztambul, nem Antalya, hanem Hakkari, Kars, Erzurum, Sivas és Tunceli meg Diyarbakir. Szunniták és aleviták. Törökök, kurdok, meg még két tucat etnikum. Ugyanennyi élő nyelv. A 28 kurd lázadás országa. Az elmúlt 80 év sok zsákutcája és sok eredménye. Modern viszonyok az ország egy részében, törzsiek másutt. Ahogy az egységes szovjet nemzetet sem sikerült megteremteni, ugyanolyan kétes eredménnyel jártak az elmúlt 80 év egységes nemzetállami törekvései Törökországban is. Rengeteg múltbéli sérelem, amelyeket orvosolni kell. Rengeteg eltemetetlen halott, megbocsátandó bűn, elkerülhetetlen bűnbánás. Vannak utak, amelyeket a társadalomnak meg kell járnia, problémák, amelyeket nem lehet puccsokkal orvosolni, megoldások, amelyeket a társadalomnak magának kell kikínlódnia.Ehhez évtizedek szükségesek. Miként a társadalmi és gazdasági modernizációhoz is. Meg külső partnerek is, ezek volnánk mi, uniós tagállamok. Olyanok, amilyenek vagyunk, ha erre mindig nem is lehetünk büszkék.Jó megoldás fog születni, bízzunk benne, október 6-án, meg majd december 17-én is.Olyan, amely esélyt kínál és támogatást ad Törökország gazdasági-társadalmi modernizációjához, de esélyt ad Európának is a változásra, arra, hogy befogadja ezt a büszke, makacs, fafejű, most még hol szörnyen nacionalista, hol messzemenően toleráns, hozzánk hasonló kompországot - liberális értelmiségével, messianisztikus hadseregvezetésével, jobb- és baloldali meg etnikai szélsőségeseivel, - amelyek nemcsak plakátot ragasztgatnak -, az irticával, az ülkücükkel, a kemalista régi establishmenttel, Anadolu új oroszlánjaival, TÜSIAD-dal és MÜSIAD-dal, mindenfelől indoktrinált, ki- és felhasznált polgáraival.Akiket Ti is, én is, annyira kedvelünk, de akiket Magyarországon szinte egyáltalán nem ismerünk. Szóval, türelem kell, józan ész, sok-sok munka, mindkét oldalon. " </span></p><p align="left"><span style="font-size:85%;"><a href="http://news.yahoo.com/news?tmpl=story&u=/ap/20041205/ap_on_re_as/turkey_eu_reforms_1">Turkey OKs EU-Backed Criminal Code Changes</a> AP, 2004. dec. 4.</span></p><p align="left"><span style="font-size:85%;"><a href="http://news.yahoo.com/news?tmpl=story&u=/ap/20041203/ap_on_re_mi_ea/turkey_problematic_patriarch_3">Turkey Policies on Minorities Spark Debate</a> AP, 2004. dec. 3. </span></p><p align="left"><span style="font-size:85%;"><a href="http://www.lrz-muenchen.de/~oeim/forostwp25.pdf">EU-Member Turkey? Preconditions, Consequences and Integration Alternatives</a> (EN .pdf) - Osteuropa Institut, München 2004. okt. <a href="http://www.bayern.de/Europa/Tuerkeistudie/Tuerkeistudie_dt.pdf">német kivonat</a> (.pdf) <a href="http://www.bayern.de/Europa/Tuerkeistudie/Tuerkeistudie_en.pdf">alternatív link</a> (EN .pdf)</span></p><div align="left"><span style="font-size:85%;"><a href="http://hvg.hu/hvg_friss_cikk.asp?oID=f8ce7223-a11b-4f7f-b45f-d289410ed106">Megint jőnek, kopogtatnak</a> HVG, Keresztes Imre, 2004. okt.6. </span></div><div align="justify"><span style="font-size:85%;"><a href="http://www.nol.hu/cikk/335484/">Török EU-csatlakozás: tárgytalan felhajtás</a> NSZ okt. 6.</span></div><div align="justify"><span style="font-size:85%;"><a href="http://hvg.hu/szemle/cikk.asp?oID=6F21CB43-2035-4A65-8CC8-35956654145A">Törökország Európába készül </a>HVG, 2004. szept. 27.</span></div><div align="justify"><span style="font-size:85%;"><a href="http://www.nepszava.hu/default.asp?cCenter=article.asp&nID=690854">A török barátom </a>Népszava, 2004. szept. 25. </span></div><div align="justify"><span style="font-size:85%;"><a href="http://www.eu2004.hu/index.php?op=hirek&id=1326">Szabad az út Törökország előtt</a> EU-vonal, 2004. szept. 24.</span></div><div align="justify"><span style="font-size:85%;"><a href="http://www.nol.hu/cikk/333772/">Magyar bizonytalanság a török csatlakozás ügyében</a> NSZ, 2004. szept.23.</span></div><div align="left"><span style="font-size:85%;"><a href="http://www.hrw.org/backgrounder/eca/turkey/2004/torture/">Folytatódnak a kínzások Törökországban</a> HRW, 2004. szept. 22. (EN, TR)</span></div><div align="left"></div><div align="justify"><span style="font-size:85%;"><a href="http://www.nol.hu/cikk/333476/">Ratzinger bíboros Törökország EU-tagsága ellen </a>NSZ, 2004. szept.20.</span></div><div align="justify"></div><div align="justify"><span style="font-size:85%;"><a href="http://www.radio.hu/index.php?cikk_id=106143&rid=PT1RTjJBVE0=">Törökország felvételével az iszlám veti meg a lábát az unióban</a> Magyar Rádió szept 12.</span><br /><span style="font-size:85%;"><a href="http://www.magyarhirlap.hu/cikk.php?cikk=87759">Idén eldől a török csatlakozás sorsa</a> Magyar Hírlap, 2004. szept. 13. </span></div><div align="justify"><span style="font-size:85%;"><a href="http://www.britishcouncil.org/brussels-independent_commission_on_turkey_report-english.pdf">Report of the Independent Commission on Turkey</a> 2004. szept.</span> <span style="font-size:85%;">(.pdf)</span><br /><span style="font-size:85%;"><a href="http://www.reuters.com/newsArticle.jhtml?type=worldNews&storyID=6165186">More Kurdish Rights Needed in Turkey - Verheugen</a> 2004. szept. 7.</span></div><div align="justify"><span style="font-size:85%;"><a href="http://www.dw-world.de/english/0,3367,1430_A_1319102_1_A,00.html">EU Enlargement Chief Sees Turkey's 'Moment of Truth</a> 2004.szept. 7.</span></div><div align="justify"><span style="font-size:85%;"><a href="http://euobserver.com/?aid=17208&rk=1">"Fears of Turkish migrant influx 'vastly exaggerated"</a> 2004. szept.7.</span></div><div align="justify"></div><div align="left"><span style="font-size:85%;"><a href="http://www.bild.t-online.de/BTO/news/2004/09/02/fischer__tuerkei/fischer__tuerkei.html">Joschka Fischer:„Die Türkei ist ein zentraler Baustein Europas“</a> </span><span style="font-size:85%;">Bild, 2004. szept. 2.<br /></span><a href="http://euobserver.com/?aid=17170&rk=1"><span style="font-size:85%;">Verheugen promises 'factual and fair' report on Turkey</span></a><span style="font-size:85%;"> 2004. szept.1.</span></div><div align="justify"><a href="http://story.news.yahoo.com/news?tmpl=story&u=/ap/20040825/ap_on_re_mi_ea/eu_turkey_1"><span style="font-size:85%;">Netherlands Panel Suggests Turkey-EU Talks</span></a><span style="font-size:85%;"> 2004. aug. 26.</span></div><div align="justify"><span style="font-size:85%;"><a href="http://euobserver.com/?aid=17146">Turkish EU talks should start within two years, Dutch report recommends</a> 2004. aug.26.</span></div><div align="justify"><a href="http://www.nytimes.com/2004/08/15/opinion/15sun3.html?ex=1093233600&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;en=79ecd79da849c9e2&ei=5006&partner=ALTAVISTA1"><span style="font-size:85%;">Saying No to Turkey</span></a><span style="font-size:85%;"> New York Times, 2004. aug. 15.<br /></span><a href="http://www.dawn.com/2004/08/12/int7.htm"><span style="font-size:85%;">Turkey should join Arab bloc: Cardinal Ratzinger</span></a><span style="font-size:85%;"> </span><span style="font-size:85%;">Le Figaro Magazine, 2004. aug. 12. </span></div><div align="justify"><a href="http://www.businessweek.com:/print/bwdaily/dnflash/aug2004/nf20040811_1716_db056.htm?gb"><span style="font-size:85%;">Turkey in Transition</span></a><span style="font-size:85%;"> Business Week, 2004. augusztus 11. </span></div><div align="justify"><a href="http://www.meforum.org/pf.php?id=624"><span style="font-size:85%;">Talking Turkey: She's a democracy - no qualifiers</span></a><span style="font-size:85%;"> </span><span style="font-size:85%;">Middle East Forum, 2004. aug. 6.</span></div><div align="justify"><a href="http://www.turkishdailynews.com/old_editions/08_03_04/burak.HTM"><span style="font-size:85%;">Tribal Turkey</span></a><span style="font-size:85%;"> Turkish Daily News, 2004. augusztus 3. </span></div><div align="justify"><a href="http://www.cdu.de/index_4209.htm"><span style="font-size:85%;">Beitritt der Türkei zur EU kostet 45 Milliarden Euro</span></a><span style="font-size:85%;"> 2004. aug.20.<br /></span><a href="http://eescopinions.esc.eu.int/EESCopinionDocument.aspx?identifier=ces\rex\rex172\ces965-2004_ac.doc&language=EN"><span style="font-size:85%;">Az Európai Gazdasági és Szociális Bizottság véleménye</span></a><span style="font-size:85%;"> 2004. aug. 7.</span></div><div align="justify"><a href="http://www.bianet.org/2004/07/01_eng/news40123.htm"><span style="font-size:85%;">Austria Shows Red Light To Turkey's E.U. Bid</span></a><span style="font-size:85%;"> 2004. aug.4.</span></div><div align="justify"><a href="http://www.bild.t-online.de/BTO/news/2004/08/02/erdogan/erdogan.html"><span style="font-size:85%;">Sind Sie Europäer, Herr Erdogan?</span></a><span style="font-size:85%;"> 2004. aug. 2.<br /></span><a href="http://euobserver.com/?aid=16962"><span style="font-size:85%;">Turkey rejects 'conditional yes' on EU membership talks</span></a><span style="font-size:85%;"> 2004. július 21.</span></div><div align="justify"><a href="http://www.nybooks.com/articles/17240"><span style="font-size:85%;">Will Turkey Make It?</span></a><span style="font-size:85%;"> 2004. július 15. </span></div><div align="justify"><a href="http://www.cdu.de/en/doc/Friends_of_Europe_Turkey.pdf"><span style="font-size:85%;">"Turkey and the EU: Just another enlargement?</span></a><span style="font-size:85%;"> (.pdf) 2004. június </span></div><div align="justify"><a href="http://index.hu/politika/kulhirek/?main:2004.06.05.&180961"><span style="font-size:85%;">Törökország még nem érett az EU-tagságra</span></a><span style="font-size:85%;"> 2004. június 5. </span></div><div align="justify"><a href="http://www.eu2004.hu/index.php?op=hirek&id=1116"><span style="font-size:85%;">Szigorodó EU-csatlakozási feltételek</span></a><span style="font-size:85%;"> 2004. május 24.</span></div><div align="justify"><a href="http://hvg.hu/hvg_friss_cikk.asp?oID=9659518b-4ab2-42b4-adf8-eac339639983"><span style="font-size:85%;">Francia ellenállás</span></a><span style="font-size:85%;"> 2004. május 12.</span></div><div align="justify"><a href="http://hvg.hu/hvg_friss_cikk.asp?oID=f591c7f2-de34-47e6-b431-98e8ce1a475d"><span style="font-size:85%;">Törököt fogtak</span></a><span style="font-size:85%;"> 2004. május 12.</span></div><div align="justify"><span style="font-size:85%;"><a href="http://www.bruxinfo.hu/cgi-bin/writeeu.cgi?filename=/20040415/rovat15/cikk41.html">A török tagság megcáfolja majd a 'civilizációk ütközését</a> 2004. ápr.15.</span></div><div align="justify"><a href="http://www.eu2004.hu/index.php?op=hirek&id=1007"><span style="font-size:85%;">A Parlament szerint Törökország még nem készült fel az EU tagságra</span></a><span style="font-size:85%;"> </span><span style="font-size:85%;">2004. ápr. 2.</span></div><div align="justify"><a href="http://bocs.hu/csi/03/03-2majus.html"><span style="font-size:85%;">Törökország: Félhold Európa fölött?</span></a><span style="font-size:85%;"> 2003. május</span></div><p><span style="color:#ff0000;"><strong>A legfontosabb linkek:</strong></span></p><div align="left"><span style="font-size:78%;"><strong>Az Európai Bizottság törökországi képviseletének honlapja</strong> </span><a href="http://www.deltur.cec.eu.int/english/main-e.html"><span style="font-size:78%;"><strong>EN </strong></span></a><span style="font-size:78%;"><strong></strong></span><a href="http://www.deltur.cec.eu.int/main-t.html"><span style="font-size:78%;"><strong>TR</strong></span></a></div><br /><div align="left"><span style="font-size:78%;"><strong>EUTURKEY (a török kormány uniós államtitkárságának honlapja) <a href="http://www.euturkey.org.tr/">EN</a> <a href="http://www.euturkey.org.tr/">TR</a></strong></span></div><br /><div align="left"><span style="font-size:78%;"><strong>ABHABER (Brüsszelben működő független török stáb honlapja) <a href="http://www.abhaber.com/english.asp">EN</a> <a href="http://www.abhaber.com/">TR</a></strong></span></div><br /></span></strong><div align="left"><strong><span style="font-size:78%;">Sok más, a török csatlakozással kapcsolatos linket a <a href="http://torokorszag.lap.hu/">torokorszag.lap.hu</a> oldalon találhatsz meg.</span></strong></div>
+false
+
+
+
+
+Efendi
+
+2004-09-22T23:13:24+02:00
+2004-09-22T22:20:24Z
+2004-09-22T22:20:24Z
+
+tag:blogger.com,1999:blog-7074887.post-109589162422046517
+Török étterem, kávézó, bolt Magyarországon
+
+
+
Összeírhatnánk itt, hol vannak török éttermek és kávézók Magyarországon, esetleg olyan boltok, amelyek török finomságokat árulnak. Lehetne néhány szót szólni a kínálatról is, miért érdemes odamenni vagy éppen messziről elkerülni.
Safranbolu a világörökség része, nevét a sáfrányról kapta. Kellemes, hangulatos kisváros, ahol legalább fél napot érdemes eltölteni, de nyugodtan lehet jó körülmények között éjszakázni is. A 2-300 éves házak jó részét helyreállították, bár sok még a romos épület.
+
+
+
+
Az Isztambul-Ankara autópályáról Geredénél kell letérni, az elágazás után bő egy óra még az út. Összeköthető fekete-tengeri kirándulással (Bartin, Amasra), az Abant-tó vagy a Yedigöller nemzeti park megtekintésével.
+
+
+
+
A városban sok szálloda és panzió van. Ajánlom a Hotel Safrant (Ebrulu Konak) - tel. (370) 7120714 -, amely a városközpontban van (képek itt). Éppen most felújított villa a XIX. század közepéről, jó egy tucat szobája van. Link itt. Kellemes a Turing Havuzlu Hotel (tel. 370 - 7252883) és a Kadioglu Sehzade Hotel (370 - 7125657) is. Helyi turista-információ: tel.(370) 7123863, itt ismerik a panziókat is.
+
+ A várostól 8 km-re található Yörük köyü (Kastamonu irányában), ahol a Sipahioglu Konagi nevű házat érdemes megnézni, hogy tudd, hogyan éltek a módos törökök 200 évvel - 8 generációval ezelőtt. A házat az örökösök két részre választották szét, mindkettő különböző. A bal oldali rész nappalijában Ali bey megmutatja a bektasi hagyományokat, bár most már mindenki szunnita és egyre kevesebb dologra emlékszik. Nem szabad kihagyni a falu másik nevezetességét, a bektasiak mosodáját (camasirhane).
+
+
+Efendi fényképeit ezen a linken nézheted meg.
+
+
+
+ Safranboluról a lehető legrészletesebb, angol nyelvű információkat ezen az oldalon, rövid, de részletes angol/német/francia nyelvű ismertetőt (MyMerhaba) pedig itt találsz. Ez a safranbolui önkormányzat oldala, még fejlesztés alatt.
+
+
+false
+
+
+
+
+Efendi
+
+2004-09-13T23:45:00+02:00
+2005-04-29T16:54:20Z
+2004-09-13T22:01:36Z
+
+tag:blogger.com,1999:blog-7074887.post-109511289600617572
+OLCSÓ REPJEGY!
+<div align="justify"><span style="color:#ff0000;"><strong>MINDIG NÉZD MEG A HOZZÁSZÓLÁSOKAT IS, LEHETNEK FRISS AJÁNLATOK OTT IS!</strong></span></div><div align="justify"><strong><span style="color:#ff0000;">--------------------------------------------------------------------------------------------</span></strong></div><div align="justify"><span style="color:#ff0000;"><strong></strong></span></div><div align="justify"><strong><span style="color:#ff0000;">2005. MÁJUS:</span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong> <br /></div><div align="justify"><strong></strong></div><div align="justify"><strong>Május 1-15. között MALÉV akciós jegyek Isztambulba, részletekért hívd a légitársaságot.</strong></div><div align="justify"><strong></strong> <br /></div><div align="justify"><strong><span style="color:#000000;"><div align="justify"><span style="color:#ff0000;"><strong>--------------------------------------------------------------------------------------------</strong></span></div><div align="justify"><span style="color:#ff0000;"><strong><span style="color:#000000;">Korábbi akciók (ezeket csak a linkek meg a tanulságok miatt hagyom fenn)</span></strong></span></div><div align="justify"> <br /><br /></div><div align="justify"></div></span></strong></div><div align="justify"><strong><span style="color:#000000;">FEBRUÁRI - MÁRCIUSI AKCIÓK:</span></strong><br /></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;">KLM Isztambul-Bécs retúr 169 USD! </span><span style="color:#000000;">Febr. 24. - márc. 14. között kell foglalni, utazni pedig febr. 24. - márc. 31. között lehet. Csak internetes foglalás esetén. <a href="http://www.klm.com/tr_en/index.jsp">LINK ITT!</a> (bal menüben "specials and offers")</span></strong></div><div align="justify"><span style="color:#ff0000;"><strong></strong></span></div><div align="justify"><div align="justify"><span style="color:#ff0000;"><strong><span style="color:#000000;"></span></strong></span></div><span style="color:#ff0000;"><strong></strong></span><br /></div><div align="justify"><strong><span style="color:#000000;">JANUÁRI-FEBRUÁRI AKCIÓK:</span></strong></div><div align="justify"><span style="color:#000000;"><strong></strong><br /></span></div><div align="justify"><strong><span style="color:#ff0000;"><span style="color:#000000;">MALÉV Valentin-napi akció febr. 12-20. között Isztambulból:</span> </span><span style="color:#000000;">2 főre Isztambul/Budapest 300 dollár, a jegyet febr. 12-ig meg kell venni. Információ: tel: (212) 232 48 39 Fax: (212) 230 20 34 mél: <a href="mailto:Ceviz.Yesim@malev.hu">Ceviz.Yesim@malev.hu</a></span></strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong><span style="color:#ff0000;">MALÉV DIÁK akció 30 ezer + adó + illeték </span><a href="http://www.malev.hu/BP/HUN/I_NEWS/2005-0107-1242-51AVSJ.asp"><span style="color:#ff0000;">LINK ITT</span></a><span style="color:#ff0000;"> jan. 10. - febr. 28.</span></strong></div><div align="justify"><strong></strong></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;"><strong>LUFTHANSA:</strong> Isztambul/Ankara/Izmirből Bécsbe és vissza: 198 dollár + illeték - érvényes 2005. január 10-ig csak internetes foglalás esetén </span><a href="http://cms.lufthansa.com/fly/tr/en/0,4974,0-0-1123357,00.html"><span style="color:#000000;">LINK ITT</span></a></div><div align="justify"><span style="color:#000000;"><br /></span></div><div align="justify"><span style="color:#000000;"><strong>Osztrák légitársaság:</strong> Isztambulból egész Európába dec. 31-ig 238 dollár </span><a href="http://www.aua.com/tr/eng/"><span style="color:#000000;">LINK ITT</span></a></div><div align="justify"><br /></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;">NOVEMBERI AKCIÓK:</span></div><div align="justify"><span style="color:#000000;"><br /></span></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;">MALÉV<br /></span></div><div align="justify"><span style="color:#000000;"><br /></span></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;">9900 forint, Budapest-Isztambul, megvásárolható nov.5-17. között, leutazható nov. 5. - dec. 20. között</span></div><div align="justify"><span style="color:#000000;"><br /></span></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;">Malév Páratlan Város akció:<br /></span></div><div align="justify"><span style="color:#000000;"><br /></span></div><div align="justify"><span style="color:#000000;">Október 15-étől indult új internetes akciónk, melyben kéthetente más-más városokba kínálunk 9900 forintért repülőjegyet a Malév weboldalán vásárlóknak. Az akció következő szakaszában november 5-étől Rómába, Bécsbe és Isztambulba utazhatnak akciós jeggyel az online jegyvásárlók. A fenti három városba akciós jegyek vásárolhatók 2004. november 5 - 17 között, a jegyek korlátozott számban állnak rendelkezésre. Utazási periódus november 5. - december 20. A jegy további feltételei: minimum egy szombat éjszakát kint kell tölteni, a repülőjegy maximum egy hónapig érvényes, nem visszatéríthető, nem módosítható, a foglalási alosztályok nem kombinálhatóak. 0-12 éves korig 25% gyerekkedvezmény érvényesíthető. Az ár budapesti kiindulással, egy útra érvényes, csak online foglalás esetén és nem tartalmazza a repülőtéri illetéket és egyéb díjat. </span><a href="http://www.malev.hu/bp/hun/I_BOOK/" target="_self"><span style="color:#000000;">Helyfoglaláshoz kattintson ide!</span></a><span style="color:#000000;"> (Az akciós jegyek csak november 5-től foglalhatók!)</span></div><div align="justify"><span style="color:#000000;"><br /><br /></span></div><div align="justify"><strong><span style="color:#000000;">Október 20. - nov. 12. között THY akciós retúr repjegy Bécsből Törökországba 129 euró, okt. 6. - nov. 11. között THY Isztambul - Budapest retúr vagy Ankara - Bécs retúr jegy 189 euró, részletek a THY irodákban és a </span></strong><a href="http://www.turkishairlines.com.tr/en/index.php"><strong><span style="color:#000000;">török légitársaság honlapján</span></strong></a><strong><span style="color:#000000;">.</span></strong></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;">MALÉV akciós jegy Isztambul-Budapest-Isztambul: kb. 250 dollár</span></div><div align="justify"><span style="color:#000000;">Elmadag Cumhuriyet Caddesi 141-147, Umac apt. Istanbul 80230 Tel: +90 212 232 4839 / +90 212 241 0909 Fax: +90 212 230 2034 Email: </span><a href="mailto:istanbul@malev.hu"><span style="color:#000000;">istanbul@malev.hu</span></a><span style="color:#000000;"> Malév Reptéri Iroda Tel: +90 212 465 4344 Tel/Fax: +90 212 663 0589</span></div><div align="justify"><span style="color:#000000;"><br /></span></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;">MALÉV akciós jegy Isztambulba! (Állítólag 12.500 Ft-tól)</span></div><div align="justify"><span style="color:#000000;"></span></div><div align="justify"><span style="color:#000000;">A jegyárak egy útra érvényesek adók és illetékek nélkül. A repülőjegyek 2004. szeptember 10 – október 15 között vásárolhatók meg az interneten és az utazási irodákban</span>. Az utazási periódus 2004. október 15 – december 15. (az utazást december 15-ig be kell fejezni.) Az akciós jegyárak 3 napos külföldi tartózkodás, vagy egy szombat éjszaka kint töltése esetén érvényesek, a foglalások módosítása nem lehetséges. A jegyvásárlás és az utazás között minimum 14 napnak kell eltelnie. <a href="http://www.malev.hu/BP/HUN/I_NEWS/2004-0909-1608-24MHAT.asp">LINK ITT!</a></div><div align="justify"><br /></div><div align="justify">KLM akciós jegy Isztambul-Bécs retúr szept. 28. - okt. 19. között (249 dollár) <a href="http://transactions3.klm.com/ASPActionFares/query.asp?cc=TR&lang=EN&prod=2931&dep=IST">LINK ITT!</a><br /></div><div align="justify">Ugyanez Air France-szal ugyanennyiért <a href="http://www.airfrance.com.tr/double6/TR/infolocale.nsf/(LookupPublishedWeb)/en-1OFSP-SO_AFKLM?OpenDocument#s1">LINK ITT!</a><br /></div><div align="justify">Török légitársaság Budapestről Isztambulba és más török városokba 40 ezerért <a href="http://www.turkishairlines.hu/akcio.php">LINK ITT!</a></div><div align="justify">Ugyanez Törökország nagyobb városaiból Isztambulba, onnan Budapestre és vissza kb 350 dollár</div><div align="justify"></div><div align="justify"><span style="color:#ff0000;">Csak szeptember 13-19. között</span> vehetsz kedvezményes jegyet a KLM holland légitársaság járataira Isztambul és 27 európai nagyváros között. Aki Magyarországra akar utazni, annak a legjobb az Isztambul-Bécs-Isztambul járat. Bécsből már vonattal, busszal, stb meg lehet oldani az utat haza.<br /><br /><span style="color:#ff0000;">Ár: 75 euro + reptéri illeték (30-35 euro körül szokott lenni)<br /></span><br />Az ajánlat:<br /><br />A jegy oda-vissza útra szól. Meg kell venni, ki kell fizetni Isztambulban szept. 13-19. között! Minimális tartózkodás 3 nap (szombati napnak benne kell lennie), maximális 8 nap. A repülés Amsterdam érintésével történik. Pl. az okt. 15-i járat Isztambulból 15.20-kor indul, 21.40-kor van Bécsben. Vissza pl. 16.20-kor indul Bécsből, 23.50-kor van Isztambulban. </div><div align="justify"></div><div align="justify">További jó hír, hogy minden 75. utazó, aki szeptemberben KLM-jegyet vesz, még egy ingyen retúrjegyet is kap Amszterdamba.</div><div align="justify"><br /></div><div align="justify"><strong>Elérhetőségek:</strong> </div><div align="justify">az akció linkje <a href="http://transactions3.klm.com/ASPActionFares/query.asp?cc=TR&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lang=EN&prod=2922&dep=IST?st=null">angolul</a> <a href="http://www.klm.com/tr_en/index.jsp">a KLM Isztambul angolul</a> <a href="http://www.klm.com/tr_tr/index.jsp">a KLM Isztambul törökül</a></div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">Ha Magyarországról utaznál, nézd a KLM budapesti Last Minute Ajánlatait </span><a href="http://www.klm.com/hu_hu/index.jsp"><span style="color:#ff0000;">ezen a linken</span></a><span style="color:#ff0000;"> minden héten (kb. 45 ezer Ft)</span></div>
+false
+
+
+
+
+Efendi
+
+2004-09-01T23:01:00+02:00
+2005-04-23T16:30:17Z
+2004-07-24T17:30:51Z
+
+tag:blogger.com,1999:blog-7074887.post-109069025160648086
+A nők helyzete Törökországban
+<div align="center"><img src="http://photos1.blogger.com/img/284/1037/400/siddetekirmizikart.jpg" /><br /></div><div align="center"><br /></div><div align="center"><div align="center"></div><div align="justify"><em><strong><span style="color:#000099;">A nők helyzetével kapcsolatos aktuális hírek </span></strong></em><a href="http://www.bianet.org/php/haberturuara.php?THaberTuru=KADIN"><em><strong><span style="color:#000099;">törökül</span></strong></em></a><em><strong><span style="color:#000099;"> és </span></strong></em><a href="http://www.bianet.org/php/haberturuara_eng.php?THaberTuru=KADIN"><em><strong><span style="color:#000099;">angolul </span></strong></em></a><em><strong><span style="color:#000099;">.<br /><br />Török szervezetek a nők jogaiért: </span></strong><a href="http://www.ucansupurge.org/newhtml/"><strong><span style="color:#000099;">Ucan Süpürge</span></strong></a><strong><span style="color:#000099;"> </span></strong><a href="http://www.ka-der.org.tr/"><strong><span style="color:#000099;">KA-DER</span></strong></a><strong><span style="color:#000099;"> </span></strong></em><a href="http://www.morcati.org/"><em><strong><span style="color:#000099;">Mor Cati</span></strong></em></a><em><strong><span style="color:#000099;"> </span></strong></em><a href="http://www.acev.org/"><em><strong><span style="color:#000099;">ACEV</span></strong></em></a><em><strong><span style="color:#000099;"> </span></strong><a href="http://www.tapv.org.tr/"><strong><span style="color:#000099;">TAPV</span></strong></a><strong><span style="color:#000099;"> </span></strong><a href="http://www.kssgm.gov.tr/"><strong><span style="color:#000099;">KSSGM</span></strong></a></em></div><div align="justify"><span style="color:#000099;"><em><strong></strong></em><br /></span></div><div align="justify"><em><strong><span style="color:#000099;"></span></strong></em></div><div align="justify"><em><strong><span style="color:#000099;"></span></strong></em></div><div align="justify"><em><strong><span style="color:#000099;">Európai Női Lobby: </span></strong></em><a href="http://www.womenlobby.org/index2.htm"><em><strong><span style="color:#000099;">European Women's Lobby/Lobby européen des femmes</span></strong></em></a></div><div align="justify"><br /><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="center"><span style="font-size:130%;"><strong>2005.</strong></span><span style="font-size:100%;"> </span><span style="font-size:130%;"><strong>évi hírek</strong></span></div><div align="justify"><br /><strong>Ápr. 21.</strong></div><div align="justify"><strong> <br /></strong></div><div align="justify"></div><div align="justify">A <a href="http://www.wwhr.org/_homepage_en">WOMEN FOR WOMEN'S HUMAN RIGHTS(WWHR)-NEW WAYS</a> véleménye arról, amit eddig sikerült elérni Törökországban:</div><div align="justify"> <br /></div><div align="justify"></div><div align="justify"><a class="thismenu" href="http://www.wwhr.org/id_917">Turkish Civil and Penal Code Reforms from a Gender Perspective: The success of two nationwide campaigns</a></div><div align="justify"> <br /></div><div align="justify"><span style="font-size:130%;"></span></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong>Márc. 9.</strong></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify">Európa tiltakozik az isztambuli nődemonstráció brutális szétverése miatt.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify">Nem szeretik, ha a török rendőr fejbe rúgja a földön fekvő nőt. Nem hiszik, hogy vagy száz tüntető nö veszélyt jelent, amelyet csak a legdurvább erőszakkal lehet elhárítani. Nem gondolják, hogy a nőnapot veréssel és könnygázzal kell ünnepelni. Kínos, hogy a nőket aznap verik a rendőrők, amikor a török uniós tagságról jönnek tárgyalni Európából. Nem igen hisznek Törökországnak: eddig azt látták, hogy a török rendőr/csendőr rapittyára lőhet terroristagyanús személyeket (nőket, fiatalkorúakat) - ettől még a vizsgálati időszakra sem függesztik fel az állásából. Sőt, a bűncselekménnyel vádolt rendőrt, csendőrt a testület sok esetben bújtatja addig, amíg a bűncselekménye el nem évül - ha kell, 6-8 évig is. Nagy kár, hogy - legalábbis jelenleg - török kormány és a belügyminiszter "maszatol" - azt mondják, hogy a tüntetők "provokálták" a rendőröket, meg különben is, szerte a világban a tüntetők kapnak a pofájukra. A török miniszterelnök megint a hazai sajtót hibáztatja, mert az "felhívta" Európa figyelmét az eseményekre. Azt azonban elfelejtik: a tüntetők követhetnek el hibákat, de a rendfenntartók nem, s a rendörségnek az utcán nem a megtorlás a feladata. Pedig a török belügyminiszter közel egy éve utasította a testületet, hogy nem alkalmazhatnak "aránytalan erőszakot" a tüntetőkkel szemben - ez az utasítás most becsődölt.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><div align="justify"></div><div align="justify"></div>Komoly következményei vannak az ügynek. Az Európa Parlament márc. 10-én <a href="http://www2.europarl.eu.int/omk/sipade2?SAME_LEVEL=1&LEVEL=4&NAV=S&LSTDOC=Y&DETAIL=&PUBREF=-//EP//TEXT+TA+P6-TA-2005-0073+0+DOC+XML+V0//HU">határozottan elítélte</a> a török rendőrség által tanúsított brutalitást, és kérte a Bizottságot, hogy készítsen teljes körű jelentést a történtekről a Parlament számára. A kérdést és a török nök helyzetét napirendre tüzik az EP-ben márc. 16-án. Nagy kár, hogy a török vezetés - amely már a házasságtörés büntethetősége kérdésében sem állt a helyzet magaslatán - rosszul fogta meg az ügyet.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong>Márc. 7.</strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong></strong></div><div align="justify"><a href="http://index.hu/eu/isztam0307/">Sokkolta az EU-t a török nődemonstráció szétverése</a></div><div align="justify"><a href="http://www.radikal.com.tr/haber.php?haberno=145729">Kadinlara 8 Mart dayagi </a>- helyzetjelentés és vélemények a brutális rendőri fellépésről</div><div align="justify"><a href="http://index.hu/politika/kulfold/0306muslims/">'Úgy élt, mint egy német kurva'</a> - ahogy Fatih Akin "Fallal szemben" c. filmjében már láthattuk. Törökországban 2005. januárjában volt olyan nap, hogy négy ilyen gyilkosság történt, részletek itt (bár ez ilyen gyakorisággal tényleg nem mindennapos jelenség): <a href="http://www.bianet.org/2005/03/01_eng/news53001.htm">Four Honor Killings in One Day Across Turkey</a>. Ugyanerröl: <a href="http://www.radio.hu/index.php?cikk_id=128087">Vallási eredetű belviszályok a berlini török közösségben</a>, Magyar Rádió, márc. 6.</div><div align="justify"><br /></div><div align="justify"><strong></strong></div><div align="justify"><strong>Febr. 4.</strong></div><div align="justify"><br /></div><div align="justify">A törökországi nők helyzetéről tájékozódott a helyszínen nemrég az Európai Parlament Nőjogi és Esélyegyenlőségi Bizottságának küldöttsége, amelyet <a href="http://wwwdb.europarl.eu.int/ep6/owa/whos_mep.data?ipid=0&amp;ilg=HU&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;iucd=23866&ipolgrp=&itempl=&imode=&ireturn=">Bauer Edit</a>, a szlovákiai Magyar Koalíció Pártjának alelnöke vezetett. A küldöttség ankarai sajtóértekezletén kedvezően szólt az elmúlt évi törökországi reformokról, de úgy vélte, hogy a legfontosabb azok gyakorlati megvalósítása. Az EP-képviselők szerint a legnagyobb problémát ma a nők foglalkoztatása, a politikában való részvétele és a családon belüli erőszak jelenti. Érdekesség, hogy az euro-honanyák javasolták Erdogan miniszterelnöknek, aki korábban lelkes focista volt, hogy a legnépszerűbb török játékosokkal és más politikusokkal együtt tartsanak egy meccset, s így hívják fel a török közvélemény figyelmét a nőkkel szembeni erőszakra. Erdogan állítólag beleegyezett. A többit majd Ali Baba sportrovatában... Meg persze az Európai Parlamentben, ahol - a nőjogi bizottságban - a küldöttség március 15-én ismerteti a törökországi helyzetrol szóló jelentését, amelyet nyáron az EP plenáris ülésen is megvitat.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Január végén az Egyesült Nemzetek Szövetségében is terítékre került a törökországi nők helyzete. Van ugyanis egy nemzetközi egyezmény a nők elleni diszkrimináció minden formájának megszüntetéséről (CEDAW), s annak Törökország is részese, így a kormánynak négyévente jelentést kell készítenie a nők helyzetéről. Azt <a href="http://daccessdds.un.org/doc/UNDOC/GEN/N03/464/38/PDF/N0346438.pdf?OpenElement">EZEN A LINKEN</a> lehet olvasni több nyelven (angol, francia, orosz, spanyol). Mivel a kormányok hajlamosak csak a szépre emlékezni, a civil szervezetek is elő szokták terjeszteni a sajat jelentesüket az ENSZ-bizottságnak. Ezt tették a török civilek is, jelentésük <a href="http://www.bianet.org/2005/01/01_k/golgetur.doc">ITT OLVASHATÓ</a>.</div><div align="justify"><br /></div><div align="justify">A török kormányjelentés szerint a (15 éven felüli) 23 millió török no 21.6 %-a (közel 5 millió fő) írástudatlan, míg a férfiaknál ez az arány csak 5.6 %. Az 550 fős parlamentben 24 honanya ül, a kormányban 1 női miniszter van. A prostitúció (vagy ahogy a jelentésben áll, sex work) Törökországban legális, de engedélyhez van kötve, s a nyilvánosházakban dolgozókra is kiterjed a társadalombiztosítás. Törökországban 81 tartományában összesen 8 olyan hely van (2000. évi adat), ahol a családon belüli erőszak elől a török nők menedéket találhatnak. 1995-ben a foglalkoztatottak 30.5 %-a volt nő, 2000-ben már csak 25.9 %-a.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">A kormányjelentés tavaly nyáron készült, azóta az ENSZ-bizottságnak lehetősége volt kérdéseket intézni annak készítőihez. A 31 kemény kérdés és a török kormány azokra adott válaszai <a href="http://www.un.org/womenwatch/daw/cedaw/reports/docs/Turkey/CEDAW-PSWG-2005-I-CRP.2-Add.7-Turkey-E.pdf">EZEN A LINKEN</a> olvashatóak. A válaszokból kiderül pl., hogy a parlament által tavaly elfogadott, de a köztársasági elnök által visszadobott helyhatósági törvény az 50 ezer lakosnál nagyobb településeken kötelezővé tenné a női menedekhelyek létrehozását.</div><div align="justify"></div><div align="justify"><br /></div><div align="justify">Érdekes a 17. kérdésre adott válasz. Az ENSZ-bizottság a korábbi török jelentés után úgy foglalt állást, hogy sürgősen szükség van a törökországi kisebbségekhez tartozó nők helyzetének figyelemmel kísérésére és a török hatóságoknak állandó erőfeszítéseket kell tenniük annak érdekében, hogy maradéktalanul biztosítsák számukra a CEDAW-ban megfogalmazott jogok érvényesülését. A 17. kérdés az ő helyzetükrol érdeklődott, beleértve a kurdokat is. Nos, a török fél nem tud arról, hogy lennének kisebbségek az országban, arról meg főleg nem, hogy bármilyen külön diszkrimináció volna velük szemben, sőt, mi több, a válasz szerint a török azt tekintenék diszkriminációnak, ha a lakosságról etnikai hovatartozás szerint vennének fel statisztikai adatokat. (Azzal persze jól elvannak, hogy a török személyigazolványokban kötelezően fel kell tüntetni tulajdonosa vallási hovatartozását.)</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">A 31. kérdésre adott válaszból megtudhatjuk, hogy az abortusz akkor nem minősül bűncselekménynek, ha a magzat kevesebb, mint 10 hetes, s az abortuszhoz szükség van a férj írásos hozzájárulására.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Kiderül az is, hogy az új BTK az ún. becsületbeli gyilkosságokat minősített bűncselekménynek tekinti, s az elkövetőket életfogytiglan tartó szabadságvesztéssel sújtják. (Ez már csak azért is üdvözlendő, mert volt olyan nap ez év januárjában, amikor Törökországban 4 ilyen gyilkosság történt.) </div><div align="justify"></div><div align="justify">Ezek pedig a CEDAW konklúziói: <a href="http://www.bianet.org/2005/03/01_eng/news54593.htm">Encourage Women For More Active Participation</a></div><div align="justify"></div><div align="justify"><br /></div><div align="center"><span style="font-size:130%;"><strong>2004. évi hírek</strong></span></div><div align="center"><span style="font-size:130%;"><strong><br /></div></strong></span><div align="justify"></div><div align="justify">Talán nem mindenki ismeri az Amnesty International emberi jogi szervezet 2004. június 2-án közzétett jelentését a nők elleni, családon belüli erőszakról Törökországban. Itt elolvasható <a href="http://www.amnesty-turkiye.org/sindex.php3?sindex=ozdais0206200403"><strong>törökül</strong></a><strong>, </strong><a href="http://web.amnesty.org/library/index/engeur440132004"><strong>angolul</strong></a><strong>, </strong><a href="http://web.amnesty.org/library/index/fraEUR440132004?Open&of=fra-TUR"><strong>franciául</strong></a><strong>. </strong>A nők elleni erőszakkal szembeni törökországi kampányról <strong><a href="http://www.amnesty-turkiye.org/sindex.php3?sindex=vifois0703200401">itt</a></strong> lehet olvasni.<br /></div><div align="justify"><br /></div><div align="justify">Az új Polgári Törvénykönyv két évvel ezelőtti elfogadása nagy lépés volt a női egyenjogúság megteremtése irányában, s igen komoly változások várhatóak, ha ebben az évben elfogadják az új Büntető Törvénykönyvet, s az majd - egy éves türelmi időszak után - hatályba lép.<br /><br />Jude és mások kétségei a postokban nem alaptalanok, de az is biztos, hogy a törökök - ahogy a többi náció is - sokfélék. Van, aki a tenyerén hordozza a nejét, s van, aki házasságkötés előtt elvégezteti - s erre egyelőre lehetősége van - a szüzességi vizsgálatot, majd az asszonyt bezárja a lakásába, ahol a rokonság felügyeli. 2003-ban kb. 40 olyan esetet regisztrálnak, amikor a család meggyilkolta a nőt, akinek a becsületén "folt esett", s ezeket a jelenségeket a társadalom egy része és gyakran a <strong><a href="http://www.bianet.org/2004/07/01_k/39488.htm">hatóságok</a></strong> is meglehetősen elnézően kezelik. Az új BTK talán fordulatot hoz a kérdésben. Egyelőre azonban nem véletlenül kampányolnak a nők a <strong><a href="http://www.bianet.org/2004/07/01_eng/news38333.htm">"Menedéket akarunk, nem sírt"</a></strong> feliratú transzparensekkel, arra utalva, hogy a hatóságoknak menedéket kellene biztosítaniuk a családon belüli erőszak elől menekülni kívánó nőknek, s nem kaján vigyorral hazaküldeniük őket a rendőrségről, hogy menj, yenge, békülj meg a férjeddel.<br /><br /></div><div align="justify"><br /></div><div align="justify"><a href="http://www.bianet.org/2004/08/01_eng/news41210.htm">Felgyújtotta feleségét egy török férfi - a nő hiába kért előzőleg segítséget a hatóságoktól</a> 2004. aug.23. A nők elleni erőszak újabb esete Törökországban. A szerencsétlen 21 éves nő belehalt sérüléseibe. Ez év első felében a bíróságok csak Denizli tartományban <a href="http://www.bianet.org/2004/08/01_eng/news40741.htm">146 férjet tiltottak el ideiglenesen </a>attól, hogy családjuk közelébe merészkedjenek. Az ok: rossz bánásmód a feleséggel vagy a gyermekekkel.</div><div align="justify"><br /></div><div align="justify"><a href="http://www.bianet.org/2004/08/01_eng/news41404.htm">Tiltakozás a szüzességi vizsgálatok ellen</a> 2004. aug. 26.</div><div align="justify"><br /></div><div align="center"><strong><span style="color:#ff0000;">Szegény embert az ág is húzza - a kormány rosszul ébredt és kitalálta, hogy ezentúl legyen bűncselekmény a házasságtörés</span></strong></div><div align="center"><strong><span style="color:#ff0000;"></span></strong><br /></div><div align="justify">2004. szept. 1.</div><div align="justify"><br /></div><div align="justify">Szép új reformvilág! Augusztus 31-én a kormánypárt változtatásokat javasolt a parlamentben szeptember második felében megvitatásra kerülő új Büntető Törvény már egyeztetett szövegében. Eszerint <span style="color:#ff0000;">bekerülne a BTK-ba a házasságtörés bűncselekménye.</span> <a href="http://story.news.yahoo.com/news?tmpl=story&u=/nm/20040901/od_nm/rights_turkey_adultery_dc_1">A török igazságügyminiszter az indítványt a társadalom részéről megnyilvánuló igénnyel magyarázta.</a> Erdogan miniszterelnök szintén támogatta a javaslatot. A kormánypárt szeretné azt is elérni, hogy kevésbé legyen szigorú a büntetése azoknak, akiket a jövőben elítélnek az ún- becsületbeli gyilkosságok miatt - lásd a fentiekben -, vagyis azoknak a derék férfiembereknek, akik a család nőtagját elteszik láb alól, ha "félrelép". Amúgy a házasságtörés 1998-ban került ki a BTK-ból, addig jórészt nőket ítéltek el ezzel a váddal. 1998-ig a házasságtörés<span style="color:#ff0000;"> büntetési tétele 6 hónaptól 3 évig terjedő szabadságvesztés volt</span>. Szóval, irány Európa - már csak arról kellene a népet megkérdezni, nem óhajtja-e esetleg a halálbüntetés visszaállítását (akarni szokta, ezért nem kérdezik). A török nőszervezetek körében a kormány indítványai miatt <a href="http://www.bianet.org/2004/08/01_eng/news42170.htm">nagy a felzúdulás</a>.<br /><a href="http://www.bianet.org/2004/09/01/42109.htm">Link</a> (TR)</div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">Szeptember 3-án az Európai Unió is beintett.</span> Az Európai Bizottság valahogy úgy foglalt állást, hogy a török kormány pár száz évvel el van maradva, amikor azt álmodja, hogy büntetni kellene a házasságtörést. Hülyeségek helyett foglalkozna inkább azzal, mondták Brüsszelben, hogy tovább csiszolgatja a BTK tervezetét, volna vele még elég teendő. Az Unió szerint a házastársak félrelépése a magánszférába tartozik, nem EU-konform viselkedés abból büntetőügyet csinálni. A bővítési biztos szóvivője meg azt mondta (ahogy én értelmezem): rossz fényt vet a török kormányra, ha az efendik és a hanimefendik alsóneműjében matat, az európaiak pedig ezután még jobban lelombozódnak, ha Törökország leendő uniós tagságára gondolnak. Úgyhogy pártunk és kormányunk most jól bekavart, kiváncsi vagyok, hogy fog kimászni a dologból. Verheugen bővítési biztos a jövő hét nagy részét Törökországban tölti, aztán már csak párat kell aludni és kezdődik a török parlament kéthetes vitája az új BTK-ról. </div><div align="justify"><br /></div><div align="justify">A törökül tanulók meg jó, ha megjegyzik: a "zina" (házasságtörés) címszó alatt kereshetik ki a BTK-ban, mennyit kell leülniük, ha házastársként, netán bűntársként (vagyis gaz csábítóként) alperesi minőségben idézik be őket a bíróságra.</div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">Szept. 7.</span></div><div align="justify"></div><div align="justify">A <a href="http://story.news.yahoo.com/news?tmpl=story&u=/nm/20040907/od_nm/turkey_adultery_dc_1">török miniszterelnök megint megvédi a kormány indítványát</a> a házasságtörés bűncselekménnyé nyilvánítására. Nagy hiba, messze nincs még vége az ügynek. Ilyenkor kellene lecserélni a tanácsadókat.</div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">Szept.9.</span></div><div align="justify">Tetőzni látszik a botrány, s a hír most már eljutott a magyar médiába is.</div><div align="justify"><br /></div><div align="justify"><strong>Verheugen a világi törvénykezés betartására figyelmeztette Ankarát<br /></strong><br />Isztambul, 2004. szeptember 9., csütörtök (MTI/AFP) - Günter Verheugen, az Európai Unió bővítési biztosa bírálta a török kormányt amiatt, hogy törvényesen büntetendővé akarja tenni a házasságtörést.<br /></div><div align="justify"><br />Négynapos törökországi látogatásának zárásaként Verheugen csütörtökön interjút adott az NTV török hírtelevíziónak, arra kérve a török kormányt, hogy gondolja át még egyszer ezt a tervét.<br /><br /></div><div align="justify">A házasságtörés elítélhetőségére vonatkozó törvénytervezet aggodalmakat váltott ki Európában, alig néhány héttel azelőtt, hogy az Európai Bizottság előterjesztené a Törökország áhított EU-tagsága szempontjából sorsdöntő országjelentését - magyarázta Verheugen. "Történelmi tréfa" lenne, ha Törökországnak végül a házasságtörés büntethetősége vagy az EU-tagság között kellene válaszolnia - fogalmazott a biztos, nyíltan hibának minősítve a törvénytervezetet.<br /><br /></div><div align="justify">Recep Tayyip Erdogan török miniszterelnök mérsékelt iszlám irányvonalú tömörülése, az Igazság és Fejlődés Pártja (AKP) a jövő héten készül benyújtani a parlamentben a büntető törvénykönyv olyan módosítását, amelynek értelmében a házasságtörést börtönbüntetéssel sújtanák. Erdogan ezzel konzervatív vallásos szavazótáborának szándékozik engedményt tenni, a törvénytervezetet azonban a török közvélemény nagy része elutasítja. Az AKP vezetősége egy szerda esti ülésén megerősítette, hogy ragaszkodik a házasságtörés büntethetőségének bevezetéséhez. Verheugen a Vatan című lapnak nyilatkozva azt mondta, hogy a kormány szándéka olyan benyomást kelt, mintha Törökország az iszlám jogot akarná bevezetni.<br /><br /></div><div align="justify">Az Európai Bizottság október elején terjeszti elő jelentését a törökországi reformokról, amely alapul szolgál majd az EU állam- és kormányfői decemberben meghozandó döntésének arra vonatkozóan, hogy megkezdjék-e a tárgyalásokat az ország uniós csatlakozásáról. Az emberi és kisebbségi jogok helyzete, a demokratizálás fontos részét képezik majd a török jelöltség megítélésének.</div><div align="justify"><br /></div><div align="justify"><a href="http://index.hu/eu/adultery5286/">Bebörtönöznék a házasságtörőket Törökországban,</a> Index, szept.9.<br /></div><div align="justify"><a href="http://www.turkishpress.com/turkishpress/news.asp?ID=26704">Turkish FM Strongly Criticizes Discussions On Adultery</a> AA szept.9. - a török külügyminiszter szerint a sajtó a hibás! (ez azért eléggé fantáziaszegény magyarázat...)</div><div align="justify"><br /></div><div align="justify">A kormánypárt elnöksége azért csütörtök este összeült, sokat már nem nagyon lehet izmozni ebben az ügyben. </div><div align="justify"><br /></div><div align="left"><span style="color:#ff0000;">szept.13.</span></div><div align="justify"><br /><span style="color:#ff0000;"><strong>Women's rights in Turkey<br /></strong></span>International Herald Tribune<br /><br />As part of a slate of reforms aimed at securing membership in the European Union, Turkey's ruling party has proposed a major overhaul of the country's criminal code. There is much value in the effort.</div><div align="justify"><br />Prompted by a coalition of women's groups, it includes stronger laws against rape, sexual assault and sexual harassment. Unfortunately, several other provisions affecting women are dangerously regressive, seeking to codify in law beliefs and practices that reflect the party's own conservative Islamic roots rather than the EU's vision of human rights.</div><div align="justify"><br />The most objectionable laws would criminalize adultery, penalize consensual sexual relations between teenagers aged 15 to 18, and neglect to explicitly ban and criminalize virginity testing. The adultery clause is especially backward, given that Turkey decriminalized adultery - for men, in 1996; for women, in 1998 - on the grounds that the law discriminated against women.</div><div align="justify"><br />A recent report by Amnesty International estimated that at least one-third of Turkish women are victims of domestic violence in which they are "hit, raped and, in some cases, killed or forced to commit suicide." Turkey must demonstrate a political willingness to end such abuses.</div><div align="justify"><br />The Turkish prime minister, Recep Tayyip Erdogan, should postpone sending the new penal code to Parliament, which he is scheduled to do this week, until his party officials revise it - deleting laws against consensual sex and including explicit protections for women. Otherwise, he is handing Europeans who scorn Turkey's European Union membership bid a big reason to vote no in December, when the union will decide whether to start formal accession talks with Turkey. In that unfortunate event, Erdogan would have no one to blame but himself.<br /><br /><strong><span style="color:#ff0000;">Az Európai Bizottság figyelmezteti Törökországot a házasságtörés büntethetősége ügyében</span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong><br /></div><div align="justify"></div><div align="justify">Brüsszel, 2004. szeptember 13., hétfő (MTI/AFP) - Az Európai Bizottság hétfőn megismételte Törökországhoz intézett figyelmeztetését a házasságtörést büntetendővé tevő törvénytervezet ügyében, utalva arra, hogy Günter Verheugen, az unió bővítési biztosa már intézett "baráti figyelmeztetést" Ankarához ezzel kapcsolatban.</div><div align="justify"><br />Jean-Christophe Filori bizottsági szóvivő mindamellett óvakodott attól, hogy "akadálynak" minősítse a törvénytervezetet a török EU-csatlakozás esélyeit illetően, szemben Karel De Gucht belga külügyminiszterrel, aki "komoly akadálynak" nevezte azt Törökországnak az unió felé vezető útján. "Szabad világban élünk. Ha valaki az akadály szót akarja használni, megteheti" - mondta a szóvivő.</div><div align="justify"><br />Verheugen a múlt héten Törökországban járva egyebek közt kijelentette: a házasságtörés tervezett büntethetőségét "úgy lehetne értelmezni, hogy Törökországban engedményt tesznek a társadalom legkonzervatívabb elemeinek, és ez megzavarhatná az unióban az emberek gondolkodását Törökországról".</div><div align="justify"><br />Az Európai Bizottság a tervek szerint október 6-án teszi le ajánlását az európai vezetőknek, hogy megkezdődjenek-e a csatlakozási tárgyalások Ankarával. A tagországok állam- és kormányfői december 17-i brüsszeli csúcsértekezletükön hozzák meg a döntést.</div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">szept.14.</span></div><div align="justify"><a href="http://www.euobserver.com/?sid=9&aid=17280">A kormány mégsem terjeszti be a házasságtörés büntethetöségére vonatkozó indítványt a parlamentben!</a></div><div align="justify"><br /></div><div align="justify">Akkor minek kellett feleslegesen lejáratnia magát? Mert az európai reakciókat azért előre lehetett látni, meg a <a href="http://www.bianet.org/2004/09/01_eng/news43062.htm">török nőszervezetek is egyre harciasabbak</a>. Most azért el lehet mondani a <a href="http://www.bianet.org/2004/09/01_eng/news43061.htm">választóknak</a>, hogy a rút európaiak megint betettek, pedig hogy igyekeztünk... Amúgy lenne még gyomlálnivaló a BTK-ban: a tervezet szerint fennmarad a szüzességi teszt, s büntetnék a 15-18. év közöttiek szexuális kapcsolatát, még akkor is, ha mindkét fél benne van a dologban. Persze, majd kiderül, ma összeült a parlament, rendkívüli ülésen, két hét van a BTK elfogadására. Volt idő mélázni az új büntető kódexen, hiszen az előzőt 1926-ban fogadták el.</div><div align="justify"><br /></div><div align="justify">Azon is lehetne gondolkodni, meddig lehet többnejűség Törökországban? Becslések szerint ugyanis minden ötödik férfinak egynél több felesége van - igaz, az esketés csak vallási keretek között bonyolódhat, a hit ugyanis tolerálja a 4 feleséget, míg a török jog nem. </div><div align="justify"><br /></div><div align="justify">A török miniszterelnök-jelölteknek viszont nem kell ajánlaniuk, hogy a dolgozó cserélje 60 éves feleségét 3 húszévesre.</div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">szept. 15.</span></div><div align="justify"></div><div align="justify"></div><div align="justify"><span style="font-size:130%;color:#ff0000;">Bűn a hűtlenség Ankarában?<br /></span>Népszabadság</div><div align="justify">Sz. E., 2004. szeptember 15. 00:00</div><div align="justify"><br /><br />Nagyon valószínűtlennek tartja egy neve elhallgatását kérő török politikus, hogy a kormány végül a parlament elé viszi a házasságtörés büntetéséről szóló javaslatát - jelentette a CNN. Az Európai Unió által hevesen bírált javaslat értelmében a török büntető törvénykönyvbe visszakerült volna a házasságtörés. Ezt a módosítást azonban csak a kormányzó Igazság és Fejlődés Pártja (AKP) támogatta. Az MTI szerint Deniz Baykal, a török parlamenti ellenzék vezére már közölte is: a kormány nem terjeszti be a parlament elé a sok vitát kiváltó tervezetet.</div><div align="justify"><br />Ankarai forrásunk a Népszabadságnak elmondta: a török parlament rendkívüli ülésszakra ült össze kedden, hogy a következő két hétben megvitassák az új büntető törvénykönyv tervezetét. Nyolcvan év óta ez lenne az első módosítás Törökországban, és célja, hogy elvégezze a török jog harmonizációját az uniós joghoz. Ezt a törekvést elhomályosította a házasságtörés kriminalizálására tett javaslat miatti felháborodás. A tiltakozó nőszervezetek keddre hirdettek tüntetést az ankarai parlament elé. Forrásunk szerint, bár a házasságtörést illetően elméleti esélyegyenlőség lenne - hiszen a törvény a férfiakra is vonatkozna -, a nőszervezetek állítják: a török társadalom nagy részében nem olyanok a viszonyok, hogy egy nő a férjével szemben bírósághoz fordulhasson.</div><div align="justify"><br />Az Európai Bizottság október 6-án adja ki Törökországról szóló országjelentését, melynek alapján az EU vezetői decemberben döntenek arról, megkezdődjenek-e Ankarával a csatlakozási tárgyalások. Így a törököknek fontos, hogy a jogharmonizáció addig elinduljon. Az EU vezetői többször figyelmeztették a török politikusokat: a házasságtörésről szóló javaslat hátráltathatja az EU-csatlakozást.</div><div align="justify"><br />A Reuters által megkérdezett iszlám jogi szakértők szerint felmerül a kérdés, a török kormány miért akarta egyáltalán visszaállítani a házasságtörés megbüntetését, mikor ez nyilvánvalóan vitákra ad okot Brüsszellel. Törökországban ugyanis az alkotmánybíróság 1996-ban a férfiak, 1998-ban pedig a nők esetében is hatályon kívül helyezte a házasságtörésre vonatkozó büntetőjogi passzusokat. Elemzők szerint a szélsőséges muzulmán gyökerekre építkező kormánypárt konzervatív választói kedvéért bejelentette ugyan a házasságtörés büntetéséről szóló kiegészítést, de végigvinni már nem akarja.</div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">Efendi kommentárja</span> a cikkhez: A jogharmonizáció nem most indul - igen komoly eredmények születtek már az elmúlt három évben e téren, a jogalkalmazás is folyik - söyle-böyle -, különben aligha lehetne december 17-én dönteni arról, hogy megkezdje-e az Unió a csatlakozási tárgyalásokat Törökországgal.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Aki tud németül, még olvasgasson <a href="http://www.sueddeutsche.de/ausland/artikel/19/38980/">itt</a> meg <a href="http://www.sueddeutsche.de/ausland/artikel/26/38987/">itt</a> meg <a href="http://www.sueddeutsche.de/ausland/artikel/254/39215/">itt</a> meg még (főleg) <a href="http://www.sueddeutsche.de/ausland/artikel/241/39202/">itt</a> is.</div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">szept.18.</span></div><div align="justify">Kitört a káosz. A Miniszterelnök megérkezett külföldről, kiderült, hogy mégsem vonják vissza az indítványt a házasságtörés BTK-ba foglalásáról. Az ellenzék rárepült a lehetőségre, s ellentmondott, így aztán a kormánypárt visszavonta a parlamentben az egész BTK-t, a rendkívüli parlamenti ülésszakot berekesztették, 18-án a képviselők elmentek szabadságra okt. 1-ig, a rendes ülészak kezdetéig, elfelejtve, hogy a BTK elfogadása céljából jöttek össze. Az Európai Bizottság bejelentette: az okt. 6-i török országjelentést eddig annak tudatában írtak, hogy lesz új BTK. Ha mégsem lesz, akkor a tárgyalásokat nem kezdik meg Törökországgal. Hogy a házasságtöréssel kapcsolatos passzust késöbb se lehessen becsempészni a BTK-ba, arról majd a bizottsági monitoring gondoskodik. Miniszterelnök szerint az Unió ne beszéljen bele az egészbe, "mi Törökország vagyunk", "nem akarunk mindenáron EU-tag lenni". Vagyis, van élet az Unión kívül is (ez már ismerősen cseng a magyar füleknek).</div><div align="justify"><br /></div><div align="justify">Káosz a kormánypártban, óriási török presztízsveszteség Európában, a további fejlemények a török-uniós kapcsolatokban pedig a törökök számára siralmas irányt vehetnek. Mi értelme volt az egésznek? Semmi. Így kell napok alatt mindent elszúrni. Aki szerint pedig a mai törökországi állapotok olyanok, hogy a török feleségek büntetőbírósághoz fordulhatnak és beperelhetik a férjüket házasságtörés miatt, az sürgősen józanodjon ki és kezdje újra a gondolkodást. </div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Nagyjából most lehet kezdeni búcsút venni a csatlakozási tárgyalások időpontjának kitűzésétől a december 17-i Európai Tanácson. </div><div align="justify"><br /></div><div align="justify">Link:</div><div align="justify"><a href="http://edition.cnn.com/2004/WORLD/europe/09/20/turkey.eu.adultery.reut/index.html">EU: No Turkey talks without reform</a></div><div align="justify"><a href="http://www.magyarhirlap.hu/cikk.php?cikk=88314">Ankara vesztésre áll Brüsszelben</a> MH, aug. 22.</div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">szept. 23.</span></div><div align="justify">A török miniszterelnök brüsszeli uniós megbeszélésein megoldotta a saját maga által kreált problémát: e hét végén összeül a parlament és elfogadja a büntető törvénykönyvet, a házasságtörés pedig mégsem kerül be a BTK-ba. Európa parlamenti vezető önmérsékletre szólította fel a török kormányt és az Európai Bizottságot is, mondván, vannak sokkal súlyosabb törökországi problémák, mint a mostani ügy, pl. a kurd és más kisebbségek helyzete. </div><div align="justify"><br /></div><div align="justify">Az elmúlt három hét tanulsága: nem jó üzlet az, amelynek eredményeként többet veszítünk, mint amennyit nyerünk. A török kormányfő demokratikus elkötelezettségén szeplő esett, politikai ellenfelei azon állításának, hogy a kormánypártnak iszlamista hátsó gondolatai vannak, ezután Európában is nagyobb hitelt adnak. Szóval, kár volt akciózni. Máris itt az új kérdés Európában: Törökország tagságot akar ugyan az Európai Unióban, de vajon a döntéshozók és a társadalom kész-e elfogadni a közös európai értékeket? Amíg ez eldől, ajánlom olvasásra <a href="http://www.turkishdailynews.com/old_editions/09_21_04/burak.HTM">Burak Bekdil írását, Erdogan Erdogan ellen.</a></div><div align="justify"><br /></div><div align="justify">Mivel most már tényleg várható, hogy a török parlament elfogadja a BTK-t, a török uniós csatlakozással kapcsolatos kommentárjaimat ezután a <a href="http://torokorszag.blogspot.com/2004/05/trkorszg-az-eurpai-uniban.html">"Törökország az Európai Unióban?" </a>postban írom, s itt "csak" a török nők társadalmi helyzetével kapcsolatos fejlemények ismertetésére szorítkozom.</div><div align="justify"></div><div align="justify"></div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">szept. 26.</span> A török parlament elfogadta az új BTK-t, 2005. április 1-től lesz hatályos.Ez jobb, mint ahogy eddig kinézett, ugyanis korábban csak 2 év múlva lépett volna a BTK hatályba. Házasságtörési passzus nincs benne. A környezetszennyezéssel kapcsolatos büntetések csak 2 év múlva lesznek alkalmazhatók, azt mondják, ha azonnal hatályba lépne, akkor az összes polgármestre mehetne a börtönbe. Pl. az önkormányzatok 60 %-ban nincs szennyvíztisztítás, minden megy a tengerbe vagy a természetbe. Az érdekesebb részletekre visszatérek, vagy itt, vagy az EU-poston. </div><div align="justify"><br /></div><div align="justify">A török nők civil szervezetei szerint a BTK nem rossz, <a href="http://www.bianet.org/2004/09/01_eng/news44113.htm">35 kívánságukból 30 szerepel benne. </a>Ez tényleg nem kedvezőtlen arány.</div><div align="justify"></div><div align="justify"><a href="http://www.bianet.org/2005/01/01_eng/news52124.htm"><strong>2004 was Good for Women, 2005 will Be Better</strong></a> - BIA , 2005. január 5.</div></div>
+false
+
+
+
+
+
+Efendi
+
+2004-09-01T21:29:00+02:00
+2005-02-28T11:37:29Z
+2004-09-01T19:37:06Z
+
+tag:blogger.com,1999:blog-7074887.post-109406742661893386
+AEGEE törökországi programjai
+<div align="center"><strong><em><span style="font-size:130%;color:#ff0000;">2005.</span></em></strong></div><div align="center"><strong><em><span style="font-size:130%;color:#ff0000;"></span></em></strong><br /></div><div align="center"><strong><em><span style="font-size:130%;color:#ff0000;"></span></em></strong></div><div align="justify"><strong><em><span style="color:#000000;">AUTUMN AGORA 2005, okt. 20-23. - AEGEE-Izmir, részletek <a href="http://www.aegee-izmir.org/html/">ITT</a></span></em></strong></div><div align="justify"><strong><em></em></strong><br /></div><div align="justify"><strong><em><span style="color:#000000;"></span></em></strong></div><div align="justify"><strong><em><span style="color:#000000;">EUROPEAN SCHOOL 2 ANKARA, </span></em></strong><strong><em><span style="color:#000000;">Advanced European Leadership Training, szept. 5-12. - AEGEE-Ankara, <a href="http://www.karl.aegee.org/calendar.nsf/EventuallyEdi/C512268F3B8DBD4CC1256F87007584A2?OpenDocument">LINK ITT</a></span></em></strong></div><div align="justify"><strong><em></em></strong><br /></div><div align="justify"><strong><em><span style="color:#000000;"></span></em></strong></div><div align="justify"><strong><em><span style="color:#000000;">TROY YOUTH FESTIVAL 2 & BALKANIA RM SPRING '05, ápr. 6-10. - AEGEE-Canakkale, <a href="http://aegee.comu.edu.tr/troyfest.html">LINK ITT</a></span></em></strong></div><div align="justify"><strong><em></em></strong><br /></div><div align="justify"><strong><em><span style="color:#000000;"></span></em></strong></div><div align="justify"><strong><em><span style="color:#000000;">CULTURAL COLOURS - FOLKLORE AND FOLK DANCES, márc. 14-17. - AEGEE-Tekirdag (Rodostó), részletek <a href="http://www.aegee-tekirdag.com/">ITT</a></span></em></strong></div><div align="justify"><strong><em></em></strong><br /></div><div align="justify"><strong><em><span style="color:#000000;"></span></em></strong></div><div align="justify"><strong><em><span style="color:#000000;">Winter University, márc. 12-16. - AEGEE-Erzurum részletek <a href="http://www.karl.aegee.org/calendar.nsf/EventuallyEdi/32B9A5B818F770D7C1256F81004D769A?OpenDocument">ITT</a></span></em></strong></div><div align="justify"><strong><em></em></strong><br /></div><div align="justify"><strong><em></em></strong></div><div align="justify"><strong><em>Winter University, márc. 7-13. - AEGEE-Kayseri (Kappadókia), részletek <a href="http://www.aegee-kayseri.org/wu4.html">EZEN A LINKEN</a></em></strong></div><div align="justify"> <br /></div><div align="justify"></div><div align="justify"><strong><em></em></strong></div><div align="justify"><strong><em>AZ ÖSSZES AEGEE-EUROPE PROGRAM <a href="http://www.karl.aegee.org/calendar.nsf/EventuallyEdi?OpenView&Count=500">ITT</a> LÁTHATÓ</em></strong></div><div align="justify"><strong><em>----------------------------------</em></strong></div><div align="justify"><strong><em></em></strong></div><div align="center"><strong><em><span style="font-size:130%;color:#ff0000;">2004.</span></em></strong></div><div align="center"><br /></div><div align="justify"><strong><em></em></strong></div><div align="justify"><strong><em>2004. okt. 30.: Az AEGEE tájékoztatója arról, hogyan sikerült az "Európa és az iszlám" és a "Törökország és az EU" konferencia:</em></strong></div><div align="justify"><br /></div><div align="justify">30.10.2004 - AEGEE Press Release on the Euroislam Project and the EU and Europe Project events in Turkey</div><div align="justify"><br /></div><div align="justify"><strong>Islam & Europe - students dig up common ground</strong><br /></div><div align="justify"><br />In the month of October the European Students Forum AEGEE organised in Turkey two remarkable events. First, at the beginning of the month, students of all faiths and none gathered in Ankara for a conference to build understanding between the European and Muslim worlds. Then, on the 21-24th of October, in Izmir, they gathered in a discussion over Turkey and its EU accession chances, opportunities and threats.</div><div align="justify"><br />The <strong>"Islam and Europe: Eye Contact"</strong> conference took place in the Middle East Technical University. Speakers including Prof. Dr. John Esposito, Dr. Henner Fürtig, Assist. Dr. Peter Mandaville, Ibrahim Al-Marashi and Ajmal Masroor provoked the students to heated debate, and led them to honest and open eye contact. The 60 participants were hosted by AEGEE-Ankara (the European Students' Forum in Ankara), with the support of Council of Europe, the European Commission, the Secretariat General for EU Affairs and the Ministry of Culture and Tourism.</div><div align="justify"><br /></div><div align="justify">Over six intensive days, the students outlined their common values, and set out a range of projects for building dialogue and understanding between their communities. Students of all faiths and none gathered in Ankara last week for a conference to build understanding between the European and Muslim worlds. Over six intensive days, the students outlined their common values, and set out a range of projects for building dialogue and understanding between their communities. In the process, whilst identifying NGO partners for these projects, the participants built new friendships across the cultural divide and overcame some of their own prejudices. Proposals included: further dialogue on women and the Hijab, on the compatibility of Muslim and European identity, and on Turkey's accession to the EU; media projects to reach a wider audience and overcome popular prejudices; work with the socially excluded in both communities; the developement of an NGO network to cooperate on these and other projects. Professor John Esposito warned the students "to compare real with real, ideal with ideal," and not to compare the best of their own culture with the worst of the other. At the end of the conference, Mahmoud Youness of Lebanon remarked, "I personally would live with this group forever. If we can createthis atmosphere among ourselves, the world can do the same."</div><div align="justify"><br /></div><div align="justify">The highlight of the <strong>"EU and Turkey"</strong> Conference in Izmir was the students-performed simulation of the Council of Europe November meeting, having to decide on the Turkish candidature to the European Union. Simulations are one of AEGEE's main learning-by-doing approach tools, allowing students to involve in valuable debates on the current issues of the main importance to the societies we live in. </div><div align="justify"><br /></div><div align="justify"><strong>Mi az AEGEE?</strong></div><div align="justify"><br /></div><div align="justify">AEGEE is one of Europe's largest interdisciplinary and voluntary student associations, operating without being linked to any political party, promoting a unified Europe, cross-border co-operation, communication and integration in academic environment, and at the same time striving to create an open and tolerant society by involving students and young graduates in valuable projects and discussions over the topics of importance for the communities they live in. It is represented in 260 university cities, in 42 countries all around Europe and has about 17000 members.</div><div align="justify"><br /></div><div align="justify">More information:Ewa Solarczyk</div><div align="justify">Vice-President / Director for Public Relations</div><div align="justify"><br /></div><div align="justify">European Students' Forum - AEGEE</div><div align="justify">Rue Nestor de Tiere 151030 Bruxelles</div><div align="justify">Phone: +32 2 245 23 00</div><div align="justify">Fax: +32 2 245 62 60</div><div align="justify">Web: <a href="http://www.aegee.org">www.aegee.org</a></div><div align="justify">Email: <a href="mailto:ewa.solarczyk@aegee.org">ewa.solarczyk@aegee.org</a></div><div align="justify"></div><div align="justify">------------------------------------------------------------------------------------------------</div><div align="justify"><br /></div><div align="justify"><a href="http://www.aegee-ankara.org/eyecontact/">AEGEE-Ankara: "Európa és az iszlám" konferencia</a> 2004. október 1-6. között. Jelentkezni lehet <span style="color:#ff0000;">szeptember 10</span>-ig.<br /><br /></div><div align="justify">Az AEGEE-Izmir és az International Politics WG "Törökország és az EU" c. konferenciája október 21-24. között lesz Izmirben. A jelentkezési határidő már lejárt. Info: <a href="http://www.karl.aegee.org/calendar.nsf/ID/IPW0410TUR4">link</a></div><div align="justify"><br /></div><div align="justify">AEGEE-Trabzon: </div><div align="justify"><a href="http://www.aegee.uni-karlsruhe.de/fect/?req=pagetrabzon">FIND EUROPE - Trabzoni fesztivál, 2004. október 4-9.</a> Jelentkezni lehet <span style="color:#ff0000;">szeptember 4</span>-ig.</div><div align="justify">Trabzon kiváló hely! Magyar testvérvárosa: Szigetvár.</div>
+false
+
+
+
+
+Efendi
+
+2004-08-30T10:24:00+02:00
+2005-05-20T10:19:17Z
+2004-08-30T08:28:19Z
+
+tag:blogger.com,1999:blog-7074887.post-109385449902022618
+Újabb magyar gyermekrablás Törökországban
+<p align="justify"></p><span style="font-size:130%;"><span style="font-size:100%;"><p align="center"> <br /><strong>"Személyesen járok utána a dolognak" </strong></p><p align="center"><strong>Magyarország a török csatlakozás mellett</strong></p><p align="center"><strong><span style="font-size:85%;">Magyar Hírlap, 2005. május 12.</span></strong></p><p align="center"><strong><span style="font-size:85%;">Sztankóczy András<br /></span></p></strong><p align="justify"><br />Magyarország támogatja Törökország uniós csatlakozását, Törökország pedig visszaadja Mehmet Karcsikát. S közben a magyar–török gazdasági kapcsolatok is szárnyalni kezdenek. Nagyjából ezt a forgatókönyvet vázolta fel a török és a magyar kormányfő a tegnapi budapesti tárgyalások után.</span></p><p align="justify"><span style="font-size:100%;">"Személyesen járok utána a dolognak" – ígérte meg Recep Tayyip Erdogan, aki azt mondta, hogy már eddig is tettek lépéseket Tüysüz Mehmet Károly felkutatására. </span></p><p align="justify"><span style="font-size:100%;">Az, hogy tettek lépéseket, nem újdonság, ugyanezt mondta tavaly ősszel a török külügyminiszter is, ám a nyolcéves gyerek azóta sem került elő, ami persze abból a szempontból nem meglepő, hogy például a horvát rendőrök is bárhogy igyekeznek, nem találják Ante Gotovinát, pedig Horvátország sokkal kisebb, mint Törökország, Gotovina pedig sokkal nagyobb, mint Karcsika. </span></p><p align="justify"><span style="font-size:100%;">A magyar állampolgárságú fiút tavaly rabolta el török édesapja magyar édesanyjától, s a nemzetközi egyezmények értelmében a török hatóságoknak fel kellene kutatniuk és vissza kellene adniuk édesanyjának a fiút. </span></p><p align="justify"><span style="font-size:100%;">Bár mindkét politikus hangsúlyozta, hogy a kapcsolatok kiválóak (ami igaz is), azért nem Karcsika az egyetlen gond. Például Magyarország szerint jó volna, ha végre magyar marha kerülhetne a török tányérokra, ám a török hatóságoknak ezt eddig egészségügyi előírásokra hivatkozva sikerült megakadályozniuk. Ankara viszont azt nehezményezi, hogy a magyar tranzitvízum csak 48 óra, míg a török 15 nap, ahelyett, hogy örülne annak, hogy Törökország ennyivel nagyobb. </span></p><p align="justify"><span style="font-size:100%;">Van némi elsimítandó probléma a tengerhajózással kapcsolatban is, már úgy értem azon kívül is, hogy nekünk nincs tengerünk. A törökök azt is szeretnék, ha könnyebben kapnának vízumot, és a magyar kormányfő ígért is különleges eljárást üzletembereknek. Erre azért is szükség volna, mert az eddigi magyarországi török befektetések az alig érzékelhető kategóriába tartoznak. Az alacsony kiindulópont az egyik titka annak is, hogy a gazdasági-kereskedelmi kapcsolatok százalékban mérve roppant látványos gyarapodásnak indultak. Pedig a távlatok tényleg nagyok, hiszen a török gazdaság fejlődése elképesztő. </span></p><p align="justify"><span style="font-size:100%;">Vannak területek, ahol a török fejlődés nem ennyire nyaktörő. "Az örmény népirtás ügye nem szerepelt és nem is szerepelhet a csatlakozási feltételek között" – mondta Erdogan. Illetve egészen pontosan a török nyelvújítás népszerű termékének számító "úgynevezett örmény népirtás" fordulatot használta. Ankara szerint ugyanis a másfél millió halott örmény a történelem első városi legendája, csak sokkal sikeresebben terjesztik, mint például azt, amely szerint a Mol azért épít kutakat Erdélyben, hogy a magyar harckocsik majd tudjanak hol tankolni. A török kormányfő megismételte javaslatát, hogy az üggyel inkább foglalkozzanak a történészek és a levéltárosok. A kormányfőnek láthatóan különösen rosszul esett, hogy egyes parlamentek elítélik az örmény népirtást (mármint az úgynevezettet): "Én is fölállhatok, hogy ítéljenek el valamit egy másik országban. Mindenki ítélje el a saját népirtását!"– adta ki a jelszót. A gond csak az, hogy a világ jelentős része pont ezt várja Törökországtól. </span></p><p align="justify"><span style="font-size:100%;">"Törökország számíthat ránk"– nyugtatott meg minden törököt egy kérdésre válaszolva Gyurcsány Ferenc, jelezve, hogy Magyarország, csakúgy, mint eddig, a jövőben is támogatja a török csatlakozást. Gyurcsány egy felmérésre is hivatkozott, amely szerint a magyarok kétharmada támogatja, hogy Törökország az Európai Unió tagja legyen. "A jövőben is közös lehet a történelem" – célzott a magyar kormányfő biztatóan a közös uniós tagságra, és mindketten elmerengtek a közös múlt legszorosabb fejezetein, amelyeknél a közös jövő azért remélhetőleg rózsásabb lesz. </span></p><p align="justify"><span style="font-size:100%;"><strong>2005. május 6.</strong> </span></p><p align="justify"><span style="font-size:100%;"><strong>Efendi kommentárja:</strong></span></p><p align="justify"><span style="font-size:85%;">A török hatóságok nem akarják megtalálni Karcsikát. </span></p><p align="justify"><span style="font-size:85%;">A törökök korábbi állításai ellenére - lásd lent a hírekben - Karcsika apja mégis Törökországban van. Vajon miért mondták márciusig, hogy nincs ott?</span></p><p align="justify"><span style="font-size:85%;">Minden híreszteléssel ellentétben van nemzetközi elfogatóparancs Karcsika apja ellen, január eleje óta (más kérdés, hogy ki lehetett volna-e adni azt korábban). Nemzetközi körözést pedig tavaly július végén adtak ki Magyarországon. </span></p><p align="justify"><span style="font-size:85%;">Karcsika apját ezért a török rendőrség ki is hallgatta (ha már egyszer Törökországban van). Mit állít? Hogy a kisfiú vígan él az anyjánál, Magyarországon. Jó a válasz, el is engedik.</span></p><p align="justify"><span style="font-size:85%;">Itt megállt a tudomány. </span></p><p align="justify"><span style="font-size:85%;">A török jog nem szankcionálja a gyermek jogellenes külföldre vitelét. Karcsika apja ellen - aki amúgy magyar állampolgár is - ma sem büntető-, sem polgári peres eljárás nem folyik Törökországban.</span></p><p align="justify"><span style="font-size:85%;">Ahogy már korábban is írtam, a gyermekek jogellenes külföldre vitelének polgári jogi vonatkozásairól szóló hágai egyezményt a gyermek visszaadása céljából egy éven belül lehet alkalmazni (vagyis július 11-ig). Utána majd a török családjogi bíróság úgy dönt, hogy a gyermek helye az apjánál van. </span></p><p align="justify"><span style="font-size:85%;">Nem volnék meglepve, ha Karcsikát már anyakönyvezték volna Törökországban. A török állampolgársági törvény szerint török szülő gyermeke automatikusan török állampolgár.</span></p><p align="justify"><span style="font-size:85%;">Itt tartunk. </span></p><p align="justify"><span style="font-size:85%;">Raskó Szofi apja is büntetlenül megúszta a gyermekrablást Törökországban, Németországban és Magyarországon is. Sőt, azóta már többször járt Magyarországon.</span></p><p align="center"><span style="font-size:85%;"><strong>Továbbra sincs nyoma a Törökországba hurcolt magyar kisfiúnak<br />Elfogták Karcsika édesapját<br />Blikk, 2005. március 18.</strong></span></p><p align="justify"><span style="font-size:85%;"><em>Szeged - Megtalálta és elfogta Isztambulban a török rendőrség a már 8 hónapja elrabolt és nyomtalanul eltűnt magyar kisfiú, Mehmet Karcsika (8) édesapját - értesült a Blikk.</em> </span></p><p align="justify"><span style="font-size:85%;">Pár nappal ezelőtt majdnem sikerült a csoda az isztambuli nyomozóknak: a nemzetközi repülőtéren elfogták a már 8 hónapja elrabolt Mehmet Karcsika török édesapját, Mehmet Tüysüzt. Úgy tudjuk, a férfi épp Németországba akart utazni. Vele volt két 10 év körüli kisfiú és egy kislány, valamint két hölgy, amikor elfogták.<br /><br />A férfi - mivel nemzetközi elfogatóparancsot adtak ki ellene a magyarországi szervek okmányhamisítás miatt - elméletileg sehova sem utazhat. A török rendőrök ezért őrizetbe vették Karcsika apját, majd 24 óra múlva kiengedték. Megkerestük a török rendőrséget is, ahol nem kívántak nyilatkozni. Egy névtelenségét kérő török rendőrtiszt azonban a Blikk kérdésére elárulta: a gyerekek személyazonosságát nem ellenőrizték, így elképzelhető, hogy az egyik fiú Karcsika volt. </span></p><p align="justify"><span style="font-size:85%;">Mint a Blikk többször is megírta: tavaly Karcsikát (8) egy hamis útlevéllel édesapja elrabolta. A mama hiába tett feljelentést a rendőrségen, a hatóságok azt hitték, a szegedi kisfiú csak elkóborolt. Nem sokkal később azonban kiderült, hogy egy 6 fős banda segédletével és hamis papírokkal Isztambulba vitték a gyereket. A magyar hatóságok csak hosszas levelezgetések és viták után rendelték el az apa és a fiúcska nemzetközi körözését. </span></p><p align="justify"><span style="font-size:85%;">Az isztambuli konzul, dr. Odavecz Ákos közölte: a család beleegyezése nélkül nem mondhat semmit az ügyről. Az édesanya, Papp Edina tudott az apa őrizetbe vételéről, de azt lapunktól tudta meg, hogy kisfia is ott lehetett a repülőtéren. - Úristen, biztos, hogy Karcsika volt az - zokogta el magát a mama. - Egyszerűen nem fér a fejembe, hogy a gyermekemet miért engedték el. A család jogi képviselője, dr. Rácz Roland közölte, járt bent a minisztériumban, ahol kiderült, idén januárban csak a törökországi Interpol Irodának lett megküldve Karcsika, illetve apjának a nemzetközi körözése. Ez pedig azért baj, mert a török rendőrség és ügyészség erről nem kapott hivatalos értesítést csak most, miután felhívtam az Igazságügy Minisztérium illetékeseinek a figyelmét erre. A minisztérium sajtóosztályának munkatársa, Tamás Eszter elmondta: kedden kaptak értesítést a török társminisztériumtól, hogy a papa megvan, de Karcsikáról semmi hír. - Azt a tájékoztatást kaptuk, hogy a gyermek Magyarországon, az édesanyjánál van - tette hozzá a sajtós.</span></p><span style="font-size:85%;"></span><p align="center"><br /><strong>Bársony András találkozója Törökország új budapesti nagykövetével</strong></p><p align="center"><strong><span style="font-size:85%;">2005. február 17.</span></strong></p><strong><p align="justify"><br /></strong></span><span style="font-size:100%;">Közös magyar és török érdek, hogy minél gyorsabban le lehessen zárni Mehmet Karcsika ügyét” – hangsúlyozta Bársony András, a Külügyminisztérium politikai államtitkára, amikor fogadta Törökország új budapesti nagykövetét.</span></p><p align="justify"><span style="font-size:100%;">A beszélgetésen, amelyen áttekintették a két ország együttműködésének kérdéseit, a külügyi vezető ismételten felhívta a figyelmet Tüysüz Mehmet Károly ügyére, akit török édesapja az édesanya beleegyezése nélkül még tavaly nyáron vitt illegálisan külföldre. Bársony hangsúlyozta: magyar megítélés szerint a török rendőrség nem tesz meg minden tőle telhetőt a gyermek tartózkodási helyének felkutatása érdekében. Bársony András jelezte, közös érdek elkerülni, hogy az ügy károsan hasson az egyébként sokoldalú és kiválóan fejlődő magyar-török kapcsolatokra.</span></p><p align="justify"><span style="font-size:100%;">A nagykövet, Umur Apaydin haladéktalan és hatékony intézkedést ígért. Reményét fejezte ki, hogy az ügyben rövid időn belül kedvező fordulat áll be.</span></p><p align="justify"><span style="font-size:100%;">Tüysüz Mehmet Károly ügyében a Női- és Gyermekjogi Kutató és Oktató Központ szerdán nyílt levelet adott át a török nagykövetnek, amelyben felhívták a figyelmét: a gyermekek jogellenes külföldre viteléről szóló hágai egyezmény értelmében sokkal határozottabb lépéseket kellett volna tenni az édesapja által Törökországba vitt nyolcéves magyar gyermek megtalálása érdekében.</span></p><p align="center"><strong><span style="font-size:130%;"></span></strong></p><p align="center"><strong><span style="font-size:130%;">A magyar hatóságok fél éve nem adtak ki elfogatóparancsot a Törökországba rabolt kisfiú ügyében</span></strong> </p><p align="center">Inforádió - Torda Júlia/<a href="http://www.pesticivil.hu/hirek/egyhir/469711.html">Pesti Civil</a>, </p><p align="center">2005. január 12.</p><p align="justify">Műsorvezető: - A Női és Gyermekjogi Központ igazgatója szerint a magyar hatóságok több jogszabályt is megsértettek azzal, hogy fél éve nem adtak ki nemzetközi elfogatóparancsot a Szegedről Törökországba rabolt kisfiú ügyében. Dr. Morvai Krisztina úgy véli: nem egyedi eset, hogy gyermekrablást követően az érintettek az államtól semmilyen segítséget nem kapnak. Torda Júlia interjúja. </p><p align="justify">Dr. Morvai Krisztina, a Női és Gyermekjogi Központ igazgatója: - Nincs egy olyan együttdolgozó team, ahol mindenki tudná, hogy kinek mi a pontos feladata egy ilyen gyerekeltűnési ügyben. Számos hatóság van akinek feladata van az ilyen ügyben, feladata van a rendőrségnek, feladata van az Igazságügyi Minisztériumnak az úgynevezett hágai egyezmény alapján. Ez a hágai egyezmény egy nemzetközi egyezmény a gyermekek jogellenes külföldre vitelével összefüggő állami teendőkről. Ennek a felelőse az Igazságügyminisztérium. A rendőrség felett ugye a Belügyminisztérium gyakorol felügyeletet. A nemzetközi elfogatóparancsokat a Legfőbb Ügyészség alárendeltségébe tartozó ügyészségek adják ki. A gyereknek is joga van ahhoz, hogy az állandóság az életében biztosítva legyen, és ezt az állam hát biztosítsa és kikövetelje. Át kell venni az európai uniós országoknak a tapasztalatát!</p><p align="justify">R.: - Nálunk is van egy kormányrendelet, ami előírja, hogy az eltűnt kiskorúak felkutatása úgynevezett kiemelt körözésnek minősül...</p><p align="justify">Dr. Morvai Krisztina, a Női és Gyermekjogi Központ igazgatója: - Így van. </p><p align="justify">R.: - És szükség esetén nemzetközi segítséget is kell kérni, tehát nemzetközi körözés kiadására is sort kell keríteni. </p><p align="justify">Dr. Morvai Krisztina, a Női és Gyermekjogi Központ igazgatója: - Így van. </p><p align="justify">R.: - Ez ugyanakkor a gyakorlatban mintha nem működne. </p><p align="justify">Dr. Morvai Krisztina, a Női és Gyermekjogi Központ igazgatója: - Ez a Szegedről elrabolt és Törökországba vitt nyolcéves kisfiú vonatkozásában fél év alatt nem sikerült kiadni ezt a bizonyos nemzetközi elfogatóparancsot, és a török hatóságok a vállukat vonják és azt mondják hogyha a magyar államnak ennyire nem fontos ennek a gyereknek, illetve az őt jogellenesen elvivő édesapának a kézrekerítése, akkor ők nem tudnak nemzetközi elfogatóparancs hiányában semmit sem tenni. Tehát a gyakorlatban ezt tapasztaljuk. </p><p align="justify">R.: - És ez nem is egyedi eset, ha jól tudom. </p><p align="justify">Dr. Morvai Krisztina, a Női és Gyermekjogi Központ igazgatója: - Attól tartok, hogy nem egyedi eset, hogy az államtól semmilyen segítséget nem kap a gyermek, akinek ehhez joga lenne, illetőleg az édesanya ahhoz, hogy újra megtalálják egymást. A kép és a benyomás, hogy nincs egy egyértelmű szakmai szabályrendszer arról, hogy milyen haladéktalan nyomozati cselekményeket kell ilyenkor azonnal elvégezni, mert ugye fél évvel később már nagyon nehéz. Na most amit egy alapítvány tehet, azt kérjük, hogy hasson oda a nyilvánosság, hogy az állami szervek azokat a kötelességeiket, amiket meg kellett volna tenni már fél évvel ezelőtt, illetőleg az elmúlt hónapok során, legalább most, félév elteltével hajtsák végre!</p><p align="center"><strong><span style="font-size:130%;">Magyar-török külügyi konzultáció: a török fél szerint sem Mehmet Károly, sem apja nincs Törökországban</span></strong></p><p align="center">2005. január 11. </p><p align="justify">Törökország képviselői a hét elején hivatalosan is jelezték, hogy nagy erőkkel igyekeznek felkutatni a fél évvel ezelőtt Magyarországról eltűnt kisfiú, Mehmet Tüysüz Károly hollétét - mondta a külügyi szóvivő keddi budapesti tájékoztatóján. </p><p align="justify">"A török konzuli delegáció vezetője megerősítette azt a korábbi információt, amely szerint sem a kisfiú, sem pedig édesapja nem tartózkodik Törökországban" - közölte Polgár Viktor. </p><p align="justify">A szóvivő kiemelte: annak ellenére, hogy a kisfiú eltűnésének ügye rendőrségi kérdés és elsősorban az Igazságügyi Minisztérium kompetenciájába tartozik, témaként szerepelt a hétfői budapesti magyar-török konzuli konzultáción. </p><p align="justify">"A török fél hangsúlyozta, hogy nagy erőkkel igyekeznek felkutatni a kisfiú tartózkodási helyét és ennek érdekében a török ügyészség, a rendőrség és az idegenrendészeti hatóságok komolyan dolgoznak" - mondta a külügyi szóvivő. </p><p align="center"><strong>*</strong></p><p align="justify"><strong><span style="color:#ff0000;">Efendi kommentárja:</span></strong></p><p align="justify">Van némi differencia a szóvivö mostani megállapítása ("<em>a kisfiú eltünése rendörségi kérdés</em>") és a szóvivöi iroda tavaly augusztus 26-i nyilatkozata között (ld. a Raskó Szofi postot a blogon). Utóbbi szerint "<em>A magyar állampolgárok alkotmányos joga a konzuli védelemhez való jog. A magyar konzuli szolgálat a külföldön bajba került magyar állampolgárok megsegítése érdekében a nemzetközi jog és a hazai jog keretein belül - a fogadó állam jogának tiszteletben tartása mellett - intézkedik. <strong>Kiemelt humanitárius kötelezettség áll fenn a kiskorú magyar állampolgárok védelme, a gyermekek jogainak biztosítása, életük, testi épségük megóvása kapcsán</strong></em>."</p><p align="justify">Nagyobb baj az, hogy az apa - állítólag - elhagyta Törökországot, ahol eddig minden kétséget kizáróan tartózkodott. </p><p align="justify">Még nagyobb baj, hogy nem tudjuk a magyar hatóságoktól, mi is a helyzet tulajdonképpen. Karcsika anyja jan. 7-én azt állítja, nincs nemzetközi körözés a gyermek apja ellen, egy napilap másnap pedig az ellenkezöjét. Az ügyészség - ha nem tévedek - elöször és utoljára szeptember 13-án nyilatkozott, mondván: nem indokolt a körözés. </p><p align="justify">A Népszabadság nov. 16-án adta hírül, hogy a magyar hatóságok megtalálták azt a hat magyar személyt, akik közremüködtek a kisfiú kijuttatásában Törökországba. Vajon a tölük kapott információk nem voltak elégségesek ahhoz, hogy vádat emeljenek Karcsika apja ellen vagy nemzetközi körözést adjanak ki ellene? Nem derült volna talán ki, hogy a magyar embercsempészek Törökországban kinek adták át a kisfiút? Nem kérhették volna azóta a magyar hatóságok a törököket, hogy kihallgassák az apát vagy azt a személyt, akinek Karcsikát átadták? </p><p align="justify">Mi a tényleges oka annak, hogy az apa ellen nem adtak ki eddig nemzetközi körözést? (Már ha tényleg nem adtak ki. Ha meg kiadtak, akkor a férfi hogyan hagyhatta el Törökországot?) Néhány eltérö vélemény: A Népszabadság szept. 13-i írása szerint "<em>a Csongrád Megyei Rendőr-főkapitányság írásban közölte lapunkkal, hogy ... eltűntként itthon és külföldön is köröztették a kisfiút, egyúttal kiskorú elhelyezésének megváltoztatásáért az apát is... A megyei főkapitányság ...annak idején előterjesztést tettek a városi ügyészségnek: adjanak ki nemzetközi elfogatóparancsot az apa ellen. A Szegedi Városi Ügyészség azonban <strong>nem tette</strong>, álláspontja szerint ugyanis "a hatályos nemzetközi szerződések rendelkezései szerint <strong>hazahozatalukra ezek alapján nem lenne mód</strong>". Törő Sándor megyei főügyészhelyettes szerint a Szegedi Városi Ügyészség helyesen járt el. Az apának tulajdonított bűncselekményt a törvény egy év szabadságvesztéssel fenyegeti, azaz <strong>nem olyan súlyú bűntényről van szó, amely nemzetközi elfogatóparancs kiadását</strong> <strong>indokolná</strong>. " </em></p><p align="justify">Szó, ami szó, nem túl meggyözö érvelés, úgy látszik, a "kiemelt humanitárius kötelezettséget" lehet másként is értelmezni.</p><p align="justify">És most, hogy a magyar-török állampolgárságú apa elhagyta Törökországot, ki fogja öt megtalálni, ha nincs ellene nemzetközi elfogatóparancs? Vagy mégiscsak ki fogják azt adni? De akkor miért nem tették hónapokkal ezelött?</p><p align="justify">Az idézett cikk azt írja, hogy Törö föügyészhelyettes szerint "<em>a jelenlegi helyzetben az Igazságügyi Minisztériumon keresztül intézhető a leggyorsabban Karcsika sorsa</em>". Vajon most is így gondolja a föügyészhelyettes?</p><p align="justify">A sokszor emlegetett hágai egyezmény szerint a gyermek jogellenes külföldre vitelétöl számított egy éven belül intézhetö a visszaadás a hágai egyezmény alapján, a 366. naptól már a - török - családjogi bíróság dönt a gyermek elhelyezéséröl. Ha a gyermek már egy éve az apánál lesz, könnyen lehet, hogy a bíróság a gyermek érdekére hivatkozva nála is fogja a kisfiút elhelyezni, mondván, az elmúlt évben ezt a helyzetet szokta meg.</p><p align="justify">Szóval, a dolgok rosszabbul állnak, mint amikor még a magyar hatóságok megpróbálhatták volna elérni Mehmet Karcsika apjának kihallgatását az embercsempészési ügyben Isztambulban.</p><p align="justify">Azért jó hallani, hogy "Az [origo] által megkérdezett minisztériumok állítják, komoly erőfeszítéseket tesznek az ügyben". </p><p align="justify">Talán majd egyszer az ügyészség meg mások is tájékoztatják a közvéleményt azok mibenlétéröl.</p><p align="justify">Ajánlott cikk - <a href="http://euroastra.hu/cgi-bin/index.cgi?page=showart&sid=QYJJSANMHHSTXBKW&id=4667">Kis János: Ki a felelős?</a> EuroASTRA internet magazin, 2005. jan. 9. </p><p align="center"><br /><span style="font-size:130%;"><strong>Nyom nélkül Törökországban</strong></span><br />Népszabadság • Varró Szilvia • 2005. január 8. </p><p align="justify"><strong><em>Az apa az anya tudta nélkül vitte Törökországba a kisfiút. Tavaly július óta senki nem tudja, hol van Karcsika.</em><br /></strong><br />Türpüz Mehmet Károly jövő vasárnap lesz nyolcéves. Édesanyja július 11-én látta utoljára: papucsot, fürdőruhát pakolt be neki az apja kérésére. A megbeszélt időre azonban a török-magyar állampolgárságú apa nem hozta vissza Karcsikát az édesanyához, akinél a bíróság elhelyezte.<br /><br />- Amikor felhívtam a volt élettársam, a mobilja már ki volt kapcsolva. Pár órával később jelentkezett Törökországból: ha nem fordulok a rendőrséghez, szeptemberben visszahozza Karcsikát. De bejelentést tettem - mondja Bogosné Pap Edina.<br /><br />A kisfiú az édesanya szerint Törökországban van, a török hatóságok azonban nem biztosak ebben. Egy dolgot elég gyorsan kiderítettek a magyar határőrök: Karcsika egy másik, vele egyidős kisfiú nevére kiállított, de saját arcképes útlevéllel lépett be Törökországba, majd még aznap ki is lépett onnan. Ezen túl minden bizonytalan: az édesanya szerint a büntető-, és a polgárjogi eljárás is lassan halad. Morvai Krisztina, a Női- és Gyermekjogi Kutató és Oktató Központ vezetője egyetért Edinával abban, hogy az állami mulasztások sorozata történt, a magyar hatóságok munkája mind ez idáig nem volt összehangolt, és általában sincs egy világos menetrendjük arra az esetre, ha egy gyermek eltűnik.<br /><br />Az általunk megkeresett hatóságok ezt visszautasítják: szerintük erőn felül teljesítettek az ügyben, a gyereket viszont csak a török hatóságok tudják megtalálni. Akik keresik is, de egyelőre sem az apát, sem Karcsikát nem találják, a nagyapa pedig az ügyészségen azt mondta: három éve nem látta unokáját.<br /><br />Ügyészségi információk szerint hamarosan vádemelés lesz kiskorú elhelyezésének megváltoztatása és embercsempészés ügyében. Nemzetközi elfogatóparancsot adtak ki Karcsika édesapja ellen. Az édesanya szerint a vonatkozó nemzetközi egyezmény ismeretében érthetetlen, miért késlekednek a török hatóságok: miért nem hoztak már határozatot Karcsika hazahozataláról, és miért nem rámenősebb a magyar igazságügy a törökökkel szemben. Brávácz Ottóné, az igazságügyi tárca nemzetközi magánjogi főosztályának vezetője szerint az édesanya olyan feladatokat kér számon a tárcán, amelyek kívül esnek lehetőségeiken. A török hatóságoknak mindenekelőtt azt kell megállapítaniuk, hogy a gyermek tényleg ott tartózkodik-e. - Nincs okunk, sem jogunk feltételezni, hogy a török hatóságok ne tennének meg mindent a felkutatása érdekében - mondta.<br /><br />Ha Karcsikát megtalálják, visszaadása a Hágai Egyezmény szerint sem automatikus: arról bíróság dönt, amelyet az apa megfellebbezhet.<br /><br />A magyar igazságügyi tárca legutóbb december 23-án tudakolta a török hatóságoktól, milyen további intézkedéseket terveznek, hogy megtalálják a gyermeket - választ egyelőre még nem kaptak.<br /><br />Lapunk megkereste a magyarországi török nagykövetséget, lapzártánk idején választ még nem kaptunk.</p><p align="center"><span style="font-size:130%;"><strong></strong></span></p><p align="center"><span style="font-size:130%;"><strong>Jogvédő háború egy kisfiú körül</strong></span></p><p align="center"><a href="http://www.origo.hu/itthon/20050107jogvedo.html">origo, 2005. január 7.</a></p><p align="justify"><em><strong>A mai napig nem került vissza édesanyjához az a nyolc éves kisfiú, akit édesapja fél évvel ezelőtt hamis útlevéllel csempészett ki Törökországba. Az anya és egy jogvédő civil szervezet szerint a magyar kormány nem tesz meg mindent a kisfiú hazakerülése érdekében, ráadásul cselekvési terve sincs hasonló esetekre. A Belügy- és az Igazságügyi Minisztérium állítja: komoly erőfeszítéseket tesznek az ügyben. A kisfiú megtalálása azonban a török rendőrség feladata, visszaadásáról pedig csak a török bíróság dönthet.</strong></em></p><p align="justify">"Nincsen cselekvési terve a kormánynak arra az esetre, ha egy magyar kisfiút külföldre csempésznek" - jelentette ki pénteki sajtótájékoztatóján Morvai Krisztina, a Női és Gyermekjogi Központ vezetője. A jogvédő civil szervezet azt kifogásolta, hogy a mai napig nem került vissza az édesanyjához Tüysüz Mehmet Károly, az a nyolc éves kisfiú, akit édesapja fél éve csempészett ki Törökországba.</p><p align="justify">A bíróság korábban az anyának ítélte a gyermeket, a török-magyar állampolgárságú apa azonban 2004 júliusában a láthatás után nem vitte haza a kisfiút, hanem hamis útlevéllel Törökországba vitte magával. Az anyának azóta semmilyen információja nincs a kisfiúról.</p><p align="justify">Morvai Krisztina elmondta: a kormánytól azt várják, hogy a belügyi, a külügyi és az igazságügyi tárca, valamint a legfőbb ügyész alakítson munkacsoportot annak érdekében, hogy a kisfiú minél előbb hazakerüljön. Ennek érdekében az anya és a civil szervezet decemberben nyílt levelet is intézett az érintett tárcákhoz, erre semmiféle választ nem kaptak. Morvai kifogásolta azt is, hogy a magyar hatóságok még nemzetközi elfogatóparancsot sem adtak ki az apa ellen.</p><p align="justify">A Női és Gyermekjogi Központ szerint az ügy megoldását az sem segítette, hogy mind Magyarország, mind pedig Törökország csatlakozott a "jogellenesen külföldre vitt gyermek visszaadásáról" szóló nemzetközi egyezményhez. Az egyezmény értelmében ugyanis a magyar kormány kérése után hat héten belül haza kellett volna kerülnie a kisfiúnak. Az anya, Bogosné Papp Edina a sajtótájékoztatón elmondta: a török hatóságok segítőkészek, hiányolják azonban a magyar kormány határozott fellépését.</p><p align="justify">Az [origo] által megkérdezett minisztériumok viszont állítják, komoly erőfeszítéseket tesznek az ügyben. Orodán Sándor, a Belügyminisztérium szóvivője elmondta: Somogyi Ferenc külügyminiszter novemberi törökországi látogatásakor személyesen lépett fel a kisfiú mielőbbi hazakerülésnek érdekében. A kicsempészés körülményeit pedig a határőrség nyomozói derítették fel - közölte Orodán.</p><p align="justify">Dr. Brávácz Ottóné, az Igazságügyi Minisztérium (IM) nemzetközi jogásza elmondta: a kisfiút csak török hatóságok kutathatják fel, a nemzetközi egyezmény alapján ugyanis azon ország hatóságainak kell gondoskodniuk a külföldre vitt gyermek megtalálásáról, ahová a gyereket elvitték. A gyermek visszaadásáról pedig csak az ottani bíróság dönthet - közölte. A minisztérium abban tud segíteni az anyának, hogy biztosítja a jogi képviseletét a török bíróságon.</p><p align="justify">Az igazságügyi tárca folyamatos kapcsolatban áll a török igazságügyi minisztériummal. A török rendőrség pedig jelenleg is keresi a kisfiút, ami nem egyszerű feladat, mivel a hatóságoknak sajnos egyelőre nincs információjuk a nyolc éves gyerek hollétéről.</p><p align="justify">--------------------------------------------------------------------</p><p align="justify"><a href="http://www.ajk.elte.hu/KarSzervezete/Alkalmazottak/223182012.html">Kicsoda dr. Morvai Krisztina?</a></p><p align="justify"><a href="http://www.sulinet.hu/tart/cikk/de/0/11342/1">Beszélgetés dr. Morvai Krisztina, büntetőjogásszal</a> - (nemcsak Törökországban probléma a családon belüli erőszak)</p><p align="justify"><strong>Női és Gyermekjogi Kutató Központ Alapítvány</strong> (aki ismeri a weblap címét, kérem, küldje meg!)</p><p align="justify"><a href="http://www.nane.hu/">NANE (Nők a Nőkért Együtt az Erőszak Ellen) Egyesület</a></p><p align="justify"><a href="http://www.nane.hu/linkek/index.html">Nők és gyermekek jogaival kapcsolatos linkek</a></p><p align="center"><span style="font-size:130%;"><strong>A Külügyminisztérium szóvivői irodájának közleménye</strong></span></p><strong><span style="font-size:130%;"></span></strong><p align="justify"><em>Budapest, 2005. január 7., péntek (OS) - Az Országos Sajtószolgálat az alábbi közlemény kiadására kapott felkérést:</em></p><p align="justify">A gyermekek elvitelével kapcsolatos ügyekben a vonatkozó hágai egyezmény alapján a Külügyminisztérium nem rendelkezik elsődleges hatáskörrel. A minisztérium ugyanakkor Mehmet Tüysüz Károly 2004. július 11-i eltűnése óta minden rendelkezésére álló eszközzel közreműködik a gyermek mielőbbi felkutatásában és édesanyjához történő visszajuttatásában. </p><p align="justify">A Külügyminisztérium konzuli és igazságügyi főosztálya, az ankarai magyar nagykövetség és az isztambuli főkonzulátus a hivatalos információk haladéktalan továbbításával segítik az ügyben elsődleges hatáskörrel eljáró magyar hatóságok - a rendőrség, az ügyészség, a határőrség, valamint az Igazságügyi Minisztérium - munkáját, valamint folyamatosan sürgetik a török központi és helyi hatóságok intézkedését. A megtett lépésekről, az ügy fejleményeiről Bogosné Papp Edinát, a gyermek édesanyját rendszeresen tájékoztatjuk.</p><p align="justify">Az ügy legutóbbi fejleményeihez tartozik, hogy Somogyi Ferenc külügyminiszter 2004. november 28-30. között lezajlott ankarai hivatalos látogatásán személyesen is közbenjárt török partnereinél, kérve, hogy haladéktalanul tegyenek meg mindent a gyermek mielőbbi felkutatása és visszatérése érdekében.</p><p align="justify">Átérezve az édesanya fájdalmát, a Külügyminisztérium az elkövetkezőkben is figyelemmel kíséri az ügy alakulását, és segíti az édesanyát gyermeke hazajuttatásában. Ennek jegyében a közeljövőben sorra kerülő magyar-török konzuli konzultáció napirendjén kérésünkre szerepelni fog Mehmet Károly ügye is.</p><p align="center"><span style="font-size:130%;"><strong>Hogyan tűnhet el nyomtalanul egy nyolcéves gyerek és miért tűri ezt a magyar állam?</strong></span> </p><p align="justify"><em><strong>Országos Sajtószolgálat, Budapest, 2005. január 6.</strong></em> - Hogyan tűnhet el nyomtalanul egy nyolcéves gyerek és miért tűri ezt a magyar állam? címmel sajtótájékoztatót tart pénteken a fél éve Szegedről elrabolt és szervezett bűnözők által Törökországba csempészett kisfiú édesanyja és a Női és Gyermekjogi Központ Alapítvány.</p><p align="justify">A miniszterelnöknek, a Legfőbb Ügyésznek, a Belügy- és az Igazságügy-miniszternek, s további állami vezetőknek írott nyílt levelében az anya magyarázatot vár arra, miért nem adták ki mind a mai napig a nemzetközi körözést és mit óhajt tenni a magyar állam saját elveszett állampolgárának, egy kisgyermeknek a felkutatására. A sajtótájékoztató a Centrál kávéház galériáján lesz január 7-én pénteken 11 órakor. (Kiadó: Női és Gyermekjogi Kutató és Oktató Központ)</p><p align="center"><span style="font-size:130%;"><strong>Törökországba hurcolt kisfiúról tárgyalt a magyar külügyminiszter</strong></span></p><p align="justify"><strong>MTI, 2004. november 30.</strong> - <em>A török külügyminiszter reményei szerint hamarosan megoldódhat a nyáron anyja akarata ellenére Törökországba hurcolt Tüysüz Mehmet Károly ügye. A magyar kisfiú sorsáról Somogyi Ferenc külügyminiszter tárgyalt Ankarában.</em></p><em></em><p align="justify">Az anyja akarata ellenére nyáron Törökországba vitt magyar kisfiú ügyét is felvetette Somogyi Ferenc külügyminiszter Ankarában, amikor török partnerével, Abdullah Güllel tárgyalt. A török külügyminiszter válasza szerint "lépéseket tettek" a kiskorú Tüysüz Mehmet Károly felkutatása érdekében. Gül bízik az ügy kedvező kimenetelében. A hét és fél éves kisfiút török állampolgárságú apja még a nyáron az anya, Papp Edina akarata ellenére Szegedről Törökországba vitte, majd arra kérte az asszonyt, mondjon le a gyermekről. A szegedi rendőrkapitányság augusztusban indított nyomozást az ügyben. A kisfiú hollétéről azóta sincs biztos információ.</p><p align="justify">Polgár Viktor utalt egy közelmúltbeli hasonló esetre, amikor a hároméves Raskó Szofi és édesanyja, Raskó Emese hazatérési igazolványuk ellenére augusztustól októberig nem jöhettek vissza Törökországból, és két hónapot az ankarai magyar nagykövetségen töltöttek. A szolnoki kislányt az év elején török állampolgárságú apja szintén az édesanya tudomása és engedélye nélkül vitte Törökországba.</p><p align="center"><br /><strong><span style="font-size:130%;">Álszülők segítették gyermeke kiszöktetésében a török apát</span></strong></p><p align="center"><em><strong>Fekete Gy. Attila, Népszabadság, 2004. nov. 16.</strong></em></p><p align="justify"><em>Krimibe illő módon csempésztette ki az országból egy török férfi a hétéves kisfiát, akit a magyar bíróság az édesanyjánál helyezett el. A székesfehérvári házaspár saját gyerekének mondta Mehmet Karcsikát.<br /></em><a href="http://ad.adverticum.net/click.prm?zona=18213" target="_top"></a><br />Miként lapunk is beszámolt róla: a hét- éves Mehmet Károlyt július 10-én török édesapja, Tüysüz Mehmet (31) nem vitte vissza a láthatásról édesanyjának, akinél a bíróság jogerős végzésével elhelyezte. Másnap Törökországból hívta fel az asszonyt, hogy a gyerek vele van, s ha nem szól a rendőrségnek, idővel talán még láthatja. Később török ügyvédje az isztambuli magyar konzulátus útján kérte volna a kisfiú iskolai iratainak kiküldését. Kérését a konzulátus megtagadta. Abban azonban már nem segített a konzulátus az édesanya által felfogadott Sándor István nyugalmazott rendőr alezredesnek, hogy régi török kapcsolatainak segítségével "hazalopja" a gyermeket. A kétségbeesett anyának azt tanácsolták, a magyar Igazságügyi Minisztériumon keresztül kérje a török hatóságok segítségét.</p><p align="justify">Kezdettől kérdéses volt, hogyan vihette gyermekét külföldre útlevél és az anya tudta nélkül az elvált férj?</p><p align="justify">A Határőrség Kiskunhalasi Igazgatósága bűnügyi felderítő osztályának nyomozói a történtek óta kiderítették: Tüysüz Mehmet hetekkel a kisfiú megszöktetése előtt megbízott el algyői férfit, kerítsen egy családot, amelynek a fiáéval azonos korú fiúgyermeke van, és pénzért hajlandók segíteni, hogy Karcsikának "hamis útlevelet" készíttessenek. Az illető azonban továbbadta a megbízást egy dunaújvárosi ismerősének, aki (miután nem talált a feladatra alkalmas családot) megbízta a feladattal egy székesfehérvári barátját, aki egy másik székesfehérvári férfinak továbbította a megrendelést. Végül ő találta meg a szintén székesfehérvári házaspárt, akik vállalták: saját gyermekük születési anyakönyvi kivonatával és Mehmet Karcsika fotójával elmennek a helyi okmányirodába, és benyújtják az útlevélkérelmet. Miután az igénylés szabályos volt, a két szülő személyesen és egybehangzóan nyilatkozott, hogy a fotón látható fiú az ő gyermekük, s minden szükséges iratot benyújtottak, az okmányiroda elkészíttette a hamis adatokat tartalmazó útlevelet.</p><p align="justify">Július 10-én Karcsika, az útleveléhez a nevét adó álédesapjával, az édesapja által megbízott algyői kapcsolattartóval és annak barátnőjével elhagyta az országot.</p><p align="justify">A határőrség embercsempészet megalapozott gyanújával folytatja az eljárást a kisfiú Törökországba szöktetésében közreműködő hálózat hat tagja ellen.</p><p align="justify"><strong>LINK: <a href="http://www.mkogy.hu/irom37/11350/11350.pdf"><span style="font-size:130%;">Tóth Gábor országgyűlési képviselő kérdése a belügyminiszterhez (2004. szeptember 13.)</span></a></strong></p><p align="center"><br /><span style="font-size:130%;"><strong>"Nem olyan súlyú bűntény"</strong><br /><strong>Hónapokig tarthat Mehmet Károly hazahozatala</strong></span></p><div align="center"><strong>Fekete Gy. Attila, Népszabadság, 2004. szept. 13.</strong></div><div align="justify"><span style="font-size:130%;"><br /></span></div><div align="justify"><span style="font-size:100%;"></span></div><div align="justify">A török bíróságnak kell majd döntenie a hét és fél éves Mehmet Károly visszaadásáról, akit édesanyja tudta nélkül vittek Törökországba.</div><div align="justify"><br />Kedden beszámoltunk a hét és fél éves Mehmet Károly kálváriájáról, akit édesanyja tudta és beleegyezése nélkül, miden jel szerint egy meghamisított útlevéllel vitt Törökországba édesapja Tüysüz Mehmet (31). Amikor a szülők elváltak, a bíróság az anyának ítélte a gyermeket, az apa azonban a július 10-i láthatás után nem vitte vissza a megbeszéltek szerint. Másnap Törökországból telefonált: "ha lemond a fiáról, és nem fordul a rendőrséghez, nem lesz semmi baj". A család és kérésükre a gyermek felkutatásában segítségükre siető Sándor István nyugalmazott alezredes, akit más ügyek kapcsán, Papa fedőnéven ismerhetett meg a közvélemény, közvetlenül az eset után közölték a sajtóval: a rendőrség előbb csak Magyarországon köröztette a kisfiút, mivel ők úgy tudják, az apa és a gyermek is még Magyarországon van. Bár ezt az állítást az ORFK szóvivője cáfolta, a Csongrád Megyei Rendőr-főkapitányság írásban közölte lapunkkal, hogy a rendőrség a maga részéről mindent elkövetett felkutatására. Eltűntként itthon és külföldön is köröztették a kisfiút, egyúttal kiskorú elhelyezésének megváltoztatásáért az apát is. Két hónappal az eset után a megyei főkapitányság fontosnak tartotta közölni, hogy annak idején előterjesztést tettek a városi ügyészségnek: adjanak ki nemzetközi elfogatóparancsot az apa ellen. A Szegedi Városi Ügyészség azonban nem tette, álláspontja szerint ugyanis "a hatályos nemzetközi szerződések rendelkezései szerint hazahozatalukra ezek alapján nem lenne mód".</div><div align="justify"><br />Törő Sándor megyei főügyészhelyettes szerint a Szegedi Városi Ügyészség helyesen járt el. Az apa török-magyar kettős állampolgár, a neki tulajdonított bűncselekményt a törvény egy év szabadságvesztéssel fenyegeti, azaz nem olyan súlyú bűntényről van szó, amely nemzetközi elfogatóparancs kiadását indokolná. Nem hagyható figyelmen kívül, hogy Tüysüz Mehmet török állampolgár is. A gyakorlat az, hogy egyik ország sem adja ki saját állampolgárát.</div><div align="justify"><br />A főügyészhelyettes megerősítette, hogy a Sándor István által kivitt iratokra tekintettel a török hatóságok rövid időre őrizetbe vették Tüysüz Mehmetet. Nem zárta ki, hogy a Magyarországon kiadott elfogatóparancs esetleg nagyobb nyomatékot adott volna a gyermek után kutató nyugdíjas magyar rendőr szavainak. Álláspontja szerint azonban a jelenlegi helyzetben az Igazságügyi Minisztériumon keresztül intézhető a leggyorsabban Karcsika sorsa.</div><div align="justify"><br />Törökország csatlakozott a "jogellenesen külföldre vitt gyermek visszaadásáról" szóló nemzetközi egyezményhez, ami - a gyermekek érdekében - viszonylag gyors eljárást ír elő a részes államok számára. A kérdés csak az, hogy a török apa nem szerzi-e meg hamarabb törökös nevű gyermekének a török állampolgárságot, mint amennyi idő alatt lezajlik a visszaadási procedúra. Brávácz Ottóné, az Igazságügyi Minisztérium nemzetközi magánjogi főosztályvezetője kérdésünkre leszögezte: ilyen esetekben nincs jelentősége az állampolgárságnak. Az egyezmény azt írja elő, hogy a jogellenesen külföldre vitt gyermekeket vissza kell vinni a "szokásos tartózkodási helyére", oda, ahol addig élt.</div><div align="justify"><br />Törökországban a magyar fél (akit közvetlenül is képviselhet török ügyvéd, de kérésre a magyar Igazságügyi Minisztérium is részt vesz a jogérvényesítésben) bíróság előtt kérheti az egyezmény alapján az eredeti helyzet visszaállítását. Bár mozlim országok ez irányú bírósági gyakorlatát a magyar hatóságok nem ismerik, Brávácz Ottóné szerint nincs okunk feltételezni, hogy az ottani bíróságok nem a gyermek érdekei szempontjából legjobb döntést hozzák meg. Ez azonban hónapokig is eltarthat, attól függően, hogy az ellenérdekű fél (jelen esetben a török apa) különböző praktikákkal meddig húzza el az eljárást.</div><div align="justify"><br /></div><div align="center"><strong><span style="font-size:130%;">Mehmet Karcsika hazatér?<br /></span>A török apa iratokat kért a magyar konzulátustól</strong></div><div align="center"><strong>Fekete Gy. Attila, Népszabadság, 2004. szept. 7.</strong></div><div align="justify"><br /></div><div align="justify">Hamarosan visszatérhet Magyarországra a hét és fél éves Mehmet Karcsika, akit július 10-én rabolt el török édesapja - állítja Sándor István nyugalmazott rendőr alezredes, akit a kisfiú édesanyja kért fel: segítsen gyermeke felkutatásában.</div><div align="justify"><br />Sándor István nyugalmazott rendőr alezredes szerint Törökországban sikerült annyira ellehetetleníteni Tüysüz Mehmet (31) életét, hogy a férfi már késznek látszik visszaadni hét és fél éves kisfiát volt feleségének, akinek a váláskor a magyar bíróság odaítélte. A Papa fedőnéven ismertté vált egykori operatív tiszt lapunknak azt mondta: tudomása szerint őrizetbe vették a török hatóságok a gyerekrabló apát, miután (tőle, illetve a nála lévő hivatalos magyar iratokból) megtudták, hogy gyakorlatilag elrabolta a gyermeket édesanyjától, s hamis útlevéllel utaztatta be Törökországba. Sándor elmondása szerint Tüysüz Mehmet ügyvédje a közelmúltban különböző magyar hatósági igazolásokért járt a magyar konzulátuson, azok hiányában ugyanis az apa nem tudja beíratni a gyermeket a török iskolába.</div><div align="justify"><br />Mehmet Karcsikát július 10-én láthatásra elvitte az édesapja, de a megbeszélt időre már nem vitte haza. Másnap már Törökországból telefonált volt feleségének, hogy amennyiben nem szól a rendőrségnek, és lemond a válásukkor neki ítélt kisfiúról, nem lesz semmi baj. Az édesanya, Papp Edina azonban feljelentést tett a rendőrségen. A szegedi rendőrök azonban kiskorú elhelyezésének megváltoztatása miatt csak Magyarországon köröztették a kisfiút, mondván: ők úgy tudják, Karcsi az édesapjával együtt még Magyarországon van. Garamvölgyi László, az ORFK szóvivője ezzel szemben az Interpol Magyar Nemzeti Irodájának tájékoztatására hivatkozva lapunknak azt mondta: a kisfiú eltűnésének bejelentésekor elrendelték a nemzetközi körözését, igaz, csak eltűntként. Később, amikor felmerült, hogy a gyermek Törökországban tartózkodhat, külön is kérték az ottani hatóságokat, állapítsák meg Mehmet Károly tartózkodási helyét. Választ még nem kaptak.</div><div align="justify"><br />Sándor István ezzel szemben Isztambulba utazott, és megtalálta az apát és Karcsikát. Állítja: pontosan tudja, ki az a kecskeméti férfi, aki a saját fia útlevelével Röszkénél átcsempészte Karcsikát a határon.</div><div align="justify"><br />Törökországban Sándor István felmelegítette egykori rendőrségi kapcsolatait, megtalálta a "gyerekrabló" apát, és kiderítette, hol találhatják meg a helyi hatóságok Karcsikát. Az állítja, ha a konzulátus kicsit "rugalmasabb" lett volna, Karcsika már rég az édesanyjával lehetne. A kisfiú útlevele ugyanis náluk volt, s ha sikerült volna beutazó vízumot szerezni bele - és szerinte sikerült volna -, Karcsika "simán hazaautózhatott volna" a nyugalmazott magyar rendőrtiszttel.<br /><br />Sándor István optimizmusa dacára a török apa még mindig elérheti, hogy gyermekét ne kelljen visszaadni magyar édesanyjának. Ő az édesapa, s a gyermeknek török neve van, így könnyen megkaphatja az állampolgárságot. Édesanyja csak abban bízhat, hogy a török rendőrség lépései és a sajtóhírverés hatására ez mégsem sikerül neki. A magyar hatóságok azonban még nem tettek érdemi lépéseket a jogerős bírói döntés ellenére külföldre hurcolt, s még magyar állampolgárságú kisfiú hazahozatala érdekében.</div><div align="center"><span style="font-size:130%;"><strong></strong></span><br /></div><div align="center"><span style="font-size:130%;"><strong>Törökországba csempészett gyermek - elfogatóparancsot sürget az ügyvéd </strong></span></div><span style="font-size:130%;"><strong><div align="justify"></strong></span><br /><strong>Szeged, 2004. augusztus 31., kedd (MTI)</strong> - Nemzetközi elfogatóparancs kiadását tartja szükségesnek annak a szegedi nőnek az ügyvédje, akinek hét és fél éves kisfiát a gyermek török származású apja a nyáron engedély nélkül Törökországba vitte.</div><div align="justify"><br />Rácz Roland kedden az MTI-nek azt mondta, hogy az apa ellen ki kellene adni a nemzetközi elfogató parancsot, mert úgy gondolják, ahol az apa, ott van a gyerek is. "Erre azért van szükség, hogy a török hatóság lássa: a gyermeket Szegedről jogellenesen vitték el" - közölte az ügyvéd. </div><div align="justify"><br />Elmondta: az anyával együtt jelenleg arra várnak, hogy az Igazságügyi Minisztériumhoz benyújtott kérelmüket - amelyben a kisfiú haza hozatalához kérnek segítséget - a tárca török nyelvre lefordítva eljuttassa a török hatóságokhoz.</div><div align="justify"><br />A kérelmet az ügyvéd is lefordíttatta, és egyúttal megküldte a török igazságügyi tárcának is. Rácz Roland elmondta, hogy az idő múlása nem kedvez az ügynek. A gyermek magyar állampolgár, a török-magyar állampolgárságú apa viszont minden bizonnyal meg akarja szerezni elsőszülött fiának a török állampolgárságot is. Ha ez sikerül, még nehezebb lesz haza hozatni a gyermeket - mondta.</div><div align="justify"><br />Az ügyvéd szerint az apa az anyjától - akivel korábban élettársi viszonyban élt - július 10-én vitte el láthatásra a kisfiút, de nem mentek vissza időre. Az anya bejelentést tett a rendőrségen. Később telefonált az apa, és azt mondta: Törökországban van a gyermekkel együtt, majd kérte az asszonyt, mondjon le a kisfiúról.</div><div align="justify"><br />A gyermek külföldre csempészésének módjáról az ügyvéd és az anya is a sajtóból értesült. "A kisfiút elaltatták, és idegen útlevéllel vitték át a határon" - közölte az ügyvéd.</div><div align="justify"><br />A szegedi rendőrkapitányság augusztus 4-én sajtóközleményt adott ki arról, hogy nyomozást folytat kiskorú elhelyezésének megváltoztatása vétség megalapozott gyanúja miatt az apa, Tüysüz Mehmet ellen.</div><div align="justify"><br />Rácz Roland elmondta: azt a tájékoztatást kapta, hogy már korábban kiadták a kisfiú eltűnésével kapcsolatban a nemzetközi körözést. Az apát közben a török rendőrség elfogta és kihallgatta, majd elengedte. A kisfiút szintén megtalálták, az ügyvéd és az anya információi szerint talán a török nagyszülőknél van.</div><div align="justify"><br />Az anya, Papp Edina az MTI-nek elmondta, szeretné minél előbb visszakapni a fiát, akiről július 10-e óta csak annyit tud, hogy megvan. "Magyar állampolgár a fiam, a magyar bíróság nálam helyezte el" - közölte.<br /><br /></div><div align="center"><span style="font-size:130%;"><strong></strong></span></div><div align="center"><span style="font-size:130%;"><strong>Isztambulba lopták ki Karcsikát</strong></span></div><div align="center"><strong>Színes Mai Lap, 2004. augusztus 30.</strong></div><br /><div align="justify">A szegedi Papp Edina végső kétségbeesésében fordult előbb Sándor Istvánhoz, Papához, majd a sajtóhoz. Török-magyar állampolgárságú volt élettársa, Tüysüz Mehmet július 10-én elvitte magával hét és fél éves kisfiukat, Karcsikát azzal, hogy másnap visszaviszi. A férfi azonban eltűnt a gyerekkel együtt.</div><div align="justify"><br />Egy nap múlva Törökországból hívta Edinát. „Ha nem szólsz a rendőröknek, és lemondasz Karcsikáról, nem lesz baj”, mondta volt párjának Tüysüz. Az asszony azonnal rohant a rendőrségre, és feljelentést tett.</div><div align="justify"><br />A szegedi rendőrkapitányság kiskorú elhelyezésének megváltoztatása miatt büntetőeljárást indított az apa ellen, elrendelve a férfi és a gyerek körözését – de csak Magyarországon. Az asszony két hete fordult az ORFK egykori Központi Bűnügyi Igazgatóság (KBI) letartóztatott, bíróság elé állított, majd felmentett fedett nyomozójához, Sándor Istvánhoz. Az egykori fedőnevén Papaként közismert Sándor Isztambulban találta meg az apát és fiát.</div><div align="justify"><br />– Felháborító a magyar hatóságok hozzáállása! – háborgott lapunknak a ma magánynyomozó Papa. – Szegeden közölték velem, hogy azért nem adnak ki nemzetközi elfogatóparancsot Tüysüz Mehmet ellen, mert úgy tudják, fiával együtt Magyarországon bujkál. Az isztambuli konzul épp most közölte velem, a török férfi ügyvédjével együtt megjelent nála, hogy adjon ki egy hivatalos igazolást, mivel török személyi igazolványt akar csináltatni a fiának. </div><div align="justify"><br />A rendőrség egyébként kérte az apa és fia nemzetközi körözését, ám az ügyészség nem terjesztette az indítványt a bíróság elé, mondván: nincs értelme. A török apát nem adják ki a törökök, a gyerek kiadatására viszont nemzetközi egyezmény kötelezi.</div><div align="justify"><br />Papa egykori török kapcsolatai ma is élnek. Nem véletlen, hogy a török rendőrség úgy fogadta, mintha ma is rendőr lenne. A török rendőröknek Papa letette a „Mehmet-dossziét”. Kinyomozta ugyanis, hogy melyik isztambuli lakásban húzta meg magát Tüysüz. Itt rejtegette a kisfiút is. A török rendőrség el is fogta az apát és annak testvérét emberrablás miatt, ám a bíró végül nem tartóztatta le őket.</div><div align="justify"><br />– Pontosan tudom, hogy ki az a kecskeméti férfi, aki a saját fia útlevelével, saját piros Ladáján úgy csempészte ki Röszkénél a gyereket, hogy az apával közösen bealtatózta a fiút. A határőröknek nem tűnt fel, hogy az útlevélben szereplő gyerek nem azonos a hátsó ülésen alvó gyerekkel. Megtaláltam azt a szervizt is Isztambul közelében, ahol a lerobbant Ladát megjavították – árulta el Papa. – A magyar hatóságok még arra sem veszik a fáradtságot, hogy elszámoltassák ezt a kecskeméti férfit, nemhogy emberrablás miatt elfognák.</div><div align="justify"><br />A török hatóságok első körben késznek mutatkoztak a magyar gyerek hazajuttatására, ám ehhez hivatalos papírokat kértek. Dr. Rácz Roland, az anya ügyvédje ezért az Igazságügyi Minisztériumhoz fordult, hogy kérjék a gyerek kiadását.</div><div align="justify"><br />Karcsikát egyébként a Szegedi Bíróság már 2003 májusában az édesanyának ítélte.</div><div align="justify"><br />Isztambuli forrásból megtudtuk, hogy egyáltalán nem biztos a gyerek kiadatása. Amennyiben a magyar kérelem hithű bíróhoz kerül, az iszlám szerint fog ítélni, és lévén a gyerek elsőszülött fiú, apja után muszlimnak számít, ezért nem fogja kiadni.</div><div align="justify"><br /></div><div align="center"><a href="http://axel.hu/cikk/axel.hu/38388"><strong><span style="font-size:130%;">Saját gyermekét rejtegeti a szegedi Tüysüz Mehmet</span></strong></a></div><div align="center"><strong>axel.hu, 2004. augusztus 05.<br /></strong></div><div align="justify">Kiskorú elhelyezésének megváltoztatása miatt nyomoz a rendőrség Tüysüz Mehmet 31 éves szegedi lakos, török-magyar kettős állampolgár ellen, aki megalapozottan gyanúsítható azzal, hogy gyermek-láthatás ürügyén magával vitte 7 esztendős kisfiát, akinek azóta nyoma veszett.<br /><br /></div><div align="justify"></div><div align="justify">A gyermeket július 11-én kellett volna visszavinnie az édesanyának, ám ennek nem tett eleget, és azóta is ismeretlen helyen rejtegeti – áll az Objektív Hírügynökség jelentésében. </div><div align="justify"><br /></div><div align="justify"><a href="http://web.b-m.hu/belugy/hir2002.nsf/bee84140eca294f0c1256b3900000adb/9f79b4a8b18071c7c1256ee60047f66d?OpenDocument">A szegedi rendőrség keresi apát és fiát</a> - <strong>2004. aug. 4.</strong></div>
+false
+
+
+
+
+
+Efendi
+
+2004-08-27T11:03:52+02:00
+2005-01-07T22:59:52Z
+2004-08-27T09:06:40Z
+
+tag:blogger.com,1999:blog-7074887.post-109359760002803868
+Raskó Szofi története
+<span style="color:#000000;"><div align="center">Problémás vegyesházasságok</div><div align="center"><strong><span style="font-size:130%;"><a href="http://www.hetek.hu/index.php?cikk=47304">Törököt fogott, nem engedte</a></span></strong></div><div align="center">Hajdú Sándor, Hetek, 2004. nov. 19.</div><div align="justify"></div><div align="justify">
<br />Szolnok egyik külső kerülete Szandaszőlős. A buszmegállóban fiatalok igazítanak útba, amikor a Raskó családot keresem. „Tóbiás a kocsma neve, ott érdeklődjön bátran” – mondja egy fiatal srác, és lerajzolja, hogy miként jutok a „helyszínre”. Az alagsori mulatót messziről felismerni, mert üvölt a zene. A pultnál ordítva közlöm, kit keresek, mire a raktárból előjön egy fiatal srác, Tamás, Emese testvére. A zaj miatt az udvaron mutatkozom be, és mondanám, mi a jövetelem célja, de már félbe is szakít: „Hazaérkezésünk után a bulvársajtó szinte mindent kiteregetett rólunk, ezért nem állunk szóba senkivel.”</div><div align="justify">
<br />Pedig az eseményről csak szűkszavú hírek jelentek meg: Nemrég tért haza a hároméves szolnoki illetőségű Raskó Szofi és édesanyja, Emese, akik Ankarában, a magyar nagykövetségen bújtak el a gyermek török apja, Özbas Fatih elöl. Az egykori birkózóbajnok az év elején az anya tudta nélkül csempészte Törökországba Szofit. Az anya márciusban kiutazott utánuk, de Özbas elvette mindkettejük útlevelét. Az asszony gyermekével külképviseletünkre menekült a fenyegetőző apa elől, s hónapokig ott tartózkodott. Ennyi, ami a hivatalos híradásokból kiderült.
<br />
<br />Hiába próbálkozunk, nem fog senkivel szóba állni Emese, ez a tuti – vetette oda a mellettem álló fiatal srác a Tóbiás „étteremben”. Az újságírók nem éppen népszerűek errefelé mostanában – tette hozzá még, és hiába próbálok érvelni, elutasítás a válasz. Abban maradunk, majd telefonon folytatjuk, de sajnos többszöri érdeklődésünk után kiderült, Emese így sem, a történtek után több héttel sem akar nyilatkozni senkinek. Mindössze a család egyik közeli ismerősével sikerült beszélgetnünk, aki elmondta, hogy Emese Németországban ismerte meg a török sportolót. Mint mesélte, számukra meglepő volt olykor a férfi viselkedése, mivel hol úgy viselkedett, mint egy átlag „világi”, hol pedig úgy, mint egy vallásos mohamedán. Amikor jó passzban volt – azaz olyan volt, mint a többiek–, lehetett vele szórakozni, sörözni, de volt hogy előjött belőle a „török vér”, és olyankor előfordult, hogy agresszívvá vált, és érthetetlen módon kezdett viselkedni. „Az az egészben a legszomorúbb, hogy mikor újra együtt éltek, ismét fogant egy kisbaba, aki most fog decemberben megszületni, és ez a felhajtás nem hiányzik nekik. Mondják errefelé a népek, hogy nem kellett volna szóba állni ezzel a törökkel újra, de hát a szerelem és az ész nem mindig vannak összhangban” – tette hozzá kezét széttárva a rokon.
<br />
<br /></div><div align="justify">Bársony András, a Külügyminisztérium politikai államtitkára szerint ez egy jogi értelemben nem rendezett családi kötelék volt a török férfi és a magyar hölgy között abban az értelemben, hogy nem éltek házassági kötelékben. Minden információ azt támasztotta alá, hogy sem a magyar, sem egyéb törvények szerint házasságkötésre nem került közöttük sor. A kapcsolatuk gyümölcse a kislány, Szofi. Az édesapa egy magyarországi látogatása során a német útlevelébe bejegyeztette a gyermeket, és ezzel az útlevéllel a kicsit „hóna alá kapva” elhagyta az országot. Az édesanya utána utazott, hogy a kislányt hazahozza. Elvitte Szofi magyar útlevelét, és megpróbálta a gyermeket Törökországból hazahozni. A török hatóságok azonban feltartóztatták, mert nem volt regisztrálva a magyar útlevélbe, hogy a gyermek mikor lépett be Törökországba, ezért nem engedték ki a kislányt az országból. Az államtitkár elmondta, hogy ezt követően az ankarai nagykövetségen helyezték el az édesanyát és gyermekét. A gyerek iratai azonban a férj családjánál voltak, akik jogellenesen maguknál tartották a Magyar Köztársaság tulajdonát képező okmányokat.„ A török hatóságok több megkeresésre – amelyet a magyar diplomácia a szokásos diplomáciai csatornákon keresztül megtett – sem reagáltak. Illetve azt közölték, hogy miután Törökországban büntetőeljárás folyik az ügyben, ezért a Külügyminisztériumnak semmilyen befolyása nincs a dologra, azaz meg kell várniuk, amíg a török igazságszolgáltatás ebben az ügyben majd állást foglal. Közeledett az időpont, amikor az újabb gyermek megszülethetett, ezért bekérették a minisztériumba a török nagykövetet” – magyarázta Bársony András. A török fél magatartása ugyanis számtalan tekintetben ütközött a nemzetközi joggal, a Hágai Konvencióval, amely a gyermekek mozgásának jogellenes korlátozásáról szól. A magyar diplomácia véleménye szerint ugyanis a gyermeket jogellenesen csempészték ki Magyarországról.</div><div align="justify">
<br /></div><div align="justify">A török hatóságok ezután röviddel kezdeményezték a bíróságon a fiatalasszony és a gyermek eltávozását. Mondván, hogy az ügyészségi eljárás, amely tulajdonképpen megakadályozta az ő hazatérésüket, nem felelt meg a török jog előírásainak, ezért megsemmisítette az ügyészség ilyen irányú határozatát, és lehetővé tette, hogy gyermek és édesanyja elhagyják Törökországot.</div><div align="justify">
<br /></div><div align="justify"></div><div align="justify">Bársony András azt is elmondta, hogy általában az arab országokba házasodó polgártársaink esetében fordul elő, hogy a házastársi kapcsolat megromlását követően súlyos konfliktus és jogi vita alakul ki a közös gyermek elhelyezése kapcsán. </div><div align="justify">
<br /></div><div align="justify"><span style="color:#ff0000;"><strong>Efendi megjegyzése:</strong> Hajdú Sándor bevezetője szerint a"hivatalos híradásokból" (ki tudja, mik ezek) éppen, hogy valami kiderült Raskó Szofi történetéről. Ha elolvassa az alábbi cikkeket, nyilvánvalóan más volna a véleménye. Azért az jó volna, ha az újságíró olvasná is, s nemcsak írná a híreket. Mindamellett tiszteljük Hajdú Sándort, hogy jóval Szofi hazatérése után is érdekli őt a család sorsa és a szerencsétlen történet körülményei. Ami pedig a "jogi értelemben nem rendezett családi köteléket" illeti:ez az állítás tévedés - amint Raskó Emese nyilatkozatából is kiderül, Szofi anyja és apja viszonya jogilag rendezett volt, mindkét fél szülői felügyeleti joggal rendelkezett, ez azonban nem jelenthette azt, hogy az apa jogszerűen tartósan külföldre vihette a kislányt. </span></div><div align="center"></div><div align="center">
<br /><span style="font-size:130%;"><strong>"Bennem van a félelem"</strong></span></div><div align="center">
<br /></div><div align="center"><em><strong>A Törökországból hazatért, bujkáló szolnoki anya vallomása</strong></em> </div><div align="center">
<br /></div><div align="center"><em>Népszabadság, Doros Judit, 2004. október 15.</em></div><div align="justify"></div><div align="justify">
<br /></div><div align="center"><em>Ankarából hazajutva Magyarországon bujkál volt török élettársa elől a szolnoki Raskó Emese és hároméves kislánya, Szofi. Attól félnek, ha kiderül a tartózkodási helyük, akkor az édesapa újból megpróbálja elrabolni a gyereket. Raskó Emese - akinek sorsát több hete követi nyomon lapunk - közvetítők segítségével interjút adott a Népszabadságnak: beszámolt egyebek között arról, milyen fenyegetéseket kapott a családja, s meddig képes egy hároméves kisgyerekkel titokban, bujkálva élni.</em></div><div align="justify">
<br /><em>- Mire számít, mit tesznek azért, hogy ne kelljen félelemben élniük?</em></div><div align="justify">
<br />- Az, hogy titokban kellett hazajönnünk, meghatározza a mostani életünket, és így egyelőre a bujkálásra kellett berendezkednünk. Nem tudom, ez meddig fog tartani, de azt gondolom, ha Fatih tudná, hol vagyunk, újra megpróbálná magával vinni Szofit. A következő időben biztonságos életünket ügyvédi és egyéb segítséget igénybe véve szeretném kialakítani, hogy ne kelljen nap mint nap félelemben élni.</div><div align="justify">
<br /></div><div align="justify"><em>- Próbált-e egyezségre jutni a gyerek ügyében az utóbbi hetekben Fatih Özbassal?</em></div><div align="justify">
<br /></div><div align="justify">- Fatih szeptember közepén kölcsönös megegyezést ajánlott fel, így akkor szüneteltettünk minden hivatalos intézkedést. A megállapodásban azonban nem fogadta el a látogatások korlátozásait, vagyis azt, hogy nem jöhet hozzánk bármikor, és csak felügyelettel lehet Szofival. A megegyezés aláírását így többször elhalasztotta, végül megtagadta. Közben többször megfenyegetett azzal, hogy ez itt Törökország, itt az fog történni, amit ő akar, s ha rajta múlik, soha nem fogunk kijutni az országból. Több alkalommal kérte: menjünk vissza hozzá. Miután világossá vált számára, hogy ezt nem tudom teljesíteni, mindent megtett azért, hogy ne hagyhassuk el az országot. Hazugságokat állított a helyi újságok, a rendőrség és az ügyészség előtt, például azt, hogy házasságban éltünk, huzamosabb ideig laktunk együtt, majd közös megegyezéssel telepedtünk le Ankarában. Azt is állította, hogy a gyerek felett a felügyeleti jogot kizárólag ő gyakorolja, mivel én arról lemondtam. Ez természetesen nem igaz.</div><div align="justify">
<br /></div><div align="justify"><em>- Ilyen körülmények között hogyan érvényesíthetők egyáltalán az apa jogai, a kapcsolattartás?</em></div><div align="justify">
<br /></div><div align="justify">- Megegyezésünk pontosan arról szólt volna, hogy mindkettőnknek megszabja a kötelességeit és jogait. Az elmúlt hónapokban Ankarában nekem nem voltak jogaim, csak kötelességeim. Fatih elvárta volna, hogy magyarországi látogatásai a gyerek elrablása előtti módon folytatódjanak. De én ezek után hogyan adhatnám oda a gyerekemet, akár csak néhány órára is, rettegés nélkül?</div><div align="justify">
<br /></div><div align="justify"><em>- Amíg Ankarában tartózkodtak, önt és családját többször is megfenyegették.</em></div><div align="justify">
<br /></div><div align="justify">- Szeptember 22-én egy magyarul jól beszélő férfi hívott fel mobiltelefonon. Közölte velem: ő Fatih jó barátja, és nagyon bízik abban, hogy kedvező döntést hozunk. Hozzátette: ha nem, az rám nézve szomorú következményekkel járhat. Két nappal ezután, valószínűleg ugyanaz a férfi, az édesapámat is felhívta, és őt is megfenyegette. A telefonszámainkat egyedül Fatihtól tudhatták meg. Ezután Fatih többször küldött a telefonomra olyan üzeneteket, amelyekből egyértelműen kiderült: családunk tagjai veszélyben vannak. Amíg együtt éltünk Ankarában, többször megfenyegetett, megvert, azt ígérte, ha nem úgy viselkedem, ahogy neki tetszik, a szüleim koporsóban visznek haza. Miután hazajöttünk, az ügyeink képviseletével megbízott török ügyvédnőmet is megfenyegette.</div><div align="justify">
<br /></div><div align="justify"><em>- Milyen megoldást lát arra, hogy végre nyugalmuk legyen?</em></div><div align="justify">
<br /></div><div align="justify">- A megegyezéssel - ha aláírja - módot találhattunk volna a normális kapcsolattartásra. De most már nem látok semmi esélyt arra, hogy valaha is rá merjem bízni a gyerekemet. Mi a garancia arra, hogy akár évek múlva nem történhet valami hasonló? Fatih előre megtervezte Szofi elrablását. Én nem írtam alá az apai elismerő nyilatkozaton túlmenően semmilyen, a gyerekem külföldi állampolgárságával, külföldi anyakönyvezésével kapcsolatos nyilatkozatot, iratot, és ezekhez semmilyen más módon nem adtam hozzájárulásomat. Akkor hogyan kaphatott mégis német személyi igazolványt, és hogy kerülhetett bele apja útlevelébe?! Nem bízom már Fatihban, és nem akarok kockáztatni semmit, a tettei kiszámíthatatlanok. Ügyvédhez fordultunk. Amíg nem látjuk, milyen lehetőségeink vannak, nem tudunk tervezni. Otthon, Szolnokon bármikor számíthatnánk zaklatásra, nem lennénk biztonságban. De bárhol is vagyunk, minden percben bennem van a félelem.</div><div align="justify">
<br /></div><div align="justify"><em>- Ezt nem lehet sokáig bírni, így nem lehet élni, dolgozni, gyereket nevelni.</em></div><div align="justify">
<br /></div><div align="justify">- Kell, hogy legyen megoldás, és bízom abban, hogy meg is fogjuk találni. Azt gondolom, hogy tizennyolc éves kora után minden gyerek maga dönthet a sorsáról, de addig az én felelősségem a lehető legkedvezőbb körülményeket megteremteni neki. Az, hogy itthon lehetünk, még ha rejtőzködve is, óriási előrelépés a korábbi állapothoz képest. Hálás köszönettel tartozom a magyar külügyminisztériumnak és az ankarai magyar nagykövetség összes munkatársának, akik, úgy érzem, messze a hivatali kötelességükön túlmenően léptek fel értünk, gondoskodtak rólunk. Ezt soha nem tudom meghálálni nekik.</div><div align="justify"></span>
<br /></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;">Efendi két megjegyzése (2004. okt. 6.):</span></strong></div><div align="justify"><span style="color:#ff0000;">
<br /></span></div><div align="justify"><span style="color:#ff0000;"></span></div><div align="justify"><strong><span style="color:#ff0000;">1. A reklám helye</span></strong></div><div align="justify">
<br /></div><div align="justify"></div><div align="justify">Raskó Emese ügyvédje Dilek Midik török ügyvédnő (Ada Hukuk Bürosu azaz Ada Jogi Iroda) volt. Úgy tudom, jól látta el a dolgát, a szükséges empátiával és igyekezettel. Családjogi ügyek mellett más büntetőügyekhez is ért. A török mellett németül beszél. Ha bárkinek problémája van, megkeresheti (törökül és németül) a (90 312) 438 94 90) telefonszámon vagy a (90 312) 438 94 91 fax-számon. E-mail: <a href="mailto:adahukukburosu@yahoo.de">adahukukburosu@yahoo.de</a> vagy <a href="mailto:dilekmidik@mynet.com">dilekmidik@mynet.com</a>. Ne legyen rá szükségetek, meg pénzbe is kerül.</div><div align="justify">
<br /></div><div align="justify"></div><div align="justify"><strong><span style="color:#ff0000;">2. WANTED!</span></strong></div><div align="justify">
<br /></div><div align="justify"></div><div align="justify">(Fatih Özbas a Raskó család egyik tagjának önkényesen magánál tartott autójával kószál, lehet, hogy éppen Magyarországon. Ezért lehetőleg NE vásárolj olcsó pénzen ....) <em>ez már aktualitását veszítette, a kocsi közben visszakerült, hála a török rendőrségnek!</em></div><div align="justify"> </div><div align="center"><strong>Másfél hónapos fogságban Ankarában
<br /></strong><em>Mindent elkövetett a magyar külügyminisztérium, hogy visszakapjuk a kislányt</em></div><div align="center"><em>Népszava, Forró Evelyn, okt. 6.</em></div><div align="justify"></div><div align="justify">
<br />Mindenképpen Magyarországon szeretnék szülni - ezt ismételgette Emese, amikor terhességéről beszélgettünk. Akkor már egy hónapja volt három éves lányával és édesanyjával, Krisztinával az ankarai magyar nagykövetségen. Akkor egyáltalán nem volt bíztató a helyzet, a török bíróság nem siette el a dolgokat, vagyis gyakorlatilag nem csinált semmit. Kilátástalanul teltek a napok, nem enyhítette idegeskedésüket az sem, hogy a nagykövetség épületében lakók szinte lesték kívánságukat. Az egyik család elvállalta a piszkos ruhák mosását, a másik bevásárolni járt nekik, a harmadik a vasalót adta kölcsön, a negyedik néha vigyázott Szofira, amikor már mindkét felnőtt kidőlt.</div><div align="justify">
<br />És közben csak jöttek az sms-ek Fatihtól, a kislány és a jövendő gyermek apjától. Eleinte kemény hangú üzenetek, később a férfi enyhébb hangnemben megegyezést ajánlott. Emese minden felkínált szalmaszálba belekapaszkodott, csak engedjék már hazamenni. Fatih szinte naponta tolta ki a megegyezés határidejét. A lány családjának kocsiját ő használta, azzal is próbált zsarolni. Még elmegyek edzőtáborba, még egy fontos utam van Trabzonba, még… Vég nélküli kifogások, miért nem adja vissza az autót. </div><div align="justify">
<br /></div><div align="justify">Fatih számára a megegyezés nem csak a gyerekről, az asszonyról, hanem az autóról is szólt. Szeptember vége volt a végső határidő, a férfi azt ígérte, elmehet az anya is, gyereke is haza, Magyarországra. Néhány nappal a határidő előtt sűrűsödtek az sms-ek, egyértelműsítve, hogy nem lesz megállapodás. Ismerlek - írta - ha elengedlek, soha nem fogom látni a gyerekeimet. </div><div align="justify">
<br /></div><div align="justify">Aztán újra a fenyegetések. Már nem csak nekik, hanem a Magyarországon lévő vállalkozó nagypapának is. </div><div align="justify"></div>
<br /><div align="justify">Miért kellett a második gyerek, ha nem sikerült helyreállítani a kapcsolatot, kérdeztem, de Emese, mint akinek sürgős dolga van, kiment a szobából. Helyette édesanyja, Krisztina válaszol. </div><div align="justify">
<br /></div><div align="justify">Németországban ismerkedtek meg, Emese ott dolgozott, gyerekfelügyelőként, Fatih Özbas a hazájában, Törökországban ismert birkózó pedig akkor éppen Németországban élt. Mint később kiderült, megkapta az állampolgárságot is. Találkozgattak, aztán a lány visszament Magyarországra, tanítóképzőt végzett. A férfi többször felkereste, és Emese egyszer csak terhes lett. Fejébe vette, mondja Krisztina, hogy addig nem szed fogamzásgátlót, amíg nem születik két gyereke. Szeretetben neveltük Szofit, igen, így anyakönyvezték, ahogy kiejtjük, az apja néha meglátogatta, adott pénzt, hozott ruhát, játékot neki - folytatja Krisztina. Tavaly év végén, ahogy az máskor is lenni szokott, elvitte néhány órára. Nem hozta vissza időre, telefonált néhányszor, hogy mindjárt érkeznek, de valami közbejött. Aztán kikapcsolta a mobilját. Az automata jelentkezett, hogy hívjuk később, pillanatnyilag nem kapcsolható, előbb magyarul, majd szerbül. Kivitte a gyereket az országból, belerakatta a német útlevelébe, ráadásul nem Raskó, hanem Özbas néven. </div><div align="justify">
<br /></div><div align="justify">Emese néhány hét múlva utánuk jött Törökországba, a gyerek érdekében még egyszer meg akarta próbálni vele az együttélést. Nem sikerült, és közben újra terhes lett. Amikor elhatározta, visszamegy Szofival Magyarországra, a férfi elvette az útlevelét.</div><div align="justify">
<br /></div><div align="justify">A történet többi része már szinte a nyilvánosság előtt zajlott, a konzultól kapott ideiglenes iratokkal megpróbált elmenni, a férfi rokonsága a repülőtérre is követte, és fellármázta az ottani hatóságokat, azzal, hogy el akarják rabolni a gyereket. Ekkor kerestek és kaptak menedéket a nagykövetségen, ahol végül is másfél hónapot töltöttek. Akkor már velük volt Emese édesanyja is. Krisztina türelmes, jólelkű asszony. Aggódott nagyon a lányáért, meg azért is kesergett, hogy kijön a gyakorlatból, kozmetikus és gyógymasszőr. Kérlelte az ott lakó nőket, legalább egyszer vessék alá magukat egy alapos masszírozásnak. Mondhatom, jót tett mindannyiunkkal, megfestette a szempillánkat, kimasszírozta a vállunkból a csomókat, és közben jókat beszélgettünk.</div><div align="justify">
<br /></div><div align="justify">Emese a másfél hónap alatt egyetlen egyszer hagyta el az épületet, a legnagyobb titokban orvoshoz vitték, kontrollra, megtudni, hogyan fejlődik a baba. Szofi is szívesen ment volna ki, de a napi sétája az volt, hogy levitte nagymamájával a szemetet, és néha kiült az erkélyre. Hogy benne mit tett a kényszerű fogság, majd csak később derül ki. Jókedvét megőrizte, nevetett, játszott akkor is, amikor arra vártak, hogy külön busszal kivigyék őket az osztrák légitársaság Bécsbe induló gépére, a földi utaskísérő ölébe telepedett, és a "tóki-wóki"-ját nyomogatta.</div><div align="justify">
<br /></div><div align="justify">Ez a történet hetek óta megírásra várt, de nem tehettem, mert a családnak ígéretet tettem, addig egyetlen sort sem közlök, amíg el nem hagyják Ankarát. Október másodikán, azután, hogy az ügyészség visszavonta beadványát, amelynek értelmében nem hagyhatták el az országot, Raskó Emese, lánya Szofi, és édesanyja Krisztina elhagyta a nagykövetség épületét, és egy Bécs felé tartó osztrák gépen elutazott Törökországból.</div><div align="justify">
<br /></div><div align="justify"></div><div align="justify">
<br /></div><div align="center"><strong></strong></div><div align="center"><strong>A Külügy közleménye:
<br />Hazatért a Raskó család </strong></div><div align="center"><strong>2004. okt. 4.</strong></div><p><strong></strong></p><p><strong></p><div align="justify"></strong>Mintegy tíz hónapos távollét után – az ankarai magyar nagykövetség és a Külügyminisztérium többszöri fellépése után – 2004. október 2-án, szombaton hazaérkezett a hároméves Raskó Szofi és édesanyja, Raskó Emese. A magyar állampolgárok hazatérését egy ankarai kerületi bírósági határozat tette lehetővé.
<br />
<br />A szolnoki kislányt az év elején apja, a török állampolgárságú Özbas Fatih az édesanya tudomása és engedélye nélkül vitte Törökországba. Raskó Emese a helyzet békés tisztázása és gyermeke hazahozatala céljából márciusban Ankarába utazott, ahol azonban Özbas mindkettejük útlevelét elvette és a mai napig nem adta vissza, miközben több alkalommal erőszakosan lépett fel. Raskó Emesét és rokonait az Özbas család több ízben életveszélyesen megfenyegette.
<br />
<br />Augusztus közepén az ankarai magyar képviselet – útlevél hiányában – hazatérési igazolványt állított ki Raskó Emese és Szofi számára, akik elutazását azonban a török hatóságok arra való hivatkozással utasították el, hogy a beutazás más okmányokkal történt. A sikertelen hazautazási kísérletet követően anya és gyermeke az ankarai nagykövetségen talált menedéket.
<br />
<br />Augusztus óta – azt követően, hogy az édesanya személyes próbálkozásai rendre kudarcot vallottak – az ankarai nagykövetség, valamint a Külügyminisztérium folyamatosan eljárt a török hatóságoknál. Több alkalommal jegyzékben jelezte, hogy a gyermek és az édesanya biztonsága Törökországban nem garantált és kérte a jogtalanul visszatartott családanya és gyermeke elutazásának engedélyezését. Szalay Zsolt ankarai magyar nagykövet személyes találkozót kért az ügyben a török igazságügyi minisztertől. Minthogy a korábbi erőfeszítések nem bizonyultak elégségesnek, szeptember 28-án Bársony András, a Külügyminisztérium politikai államtitkára hivatalába kérette Törökország budapesti nagykövetét. Nyomatékosan kérte, hogy a török hatóságok tegyék lehetővé Raskóék hazatérését. Ezt végül az október 1-i dátumú ankarai bírósági határozat – amely egy korábbi török ügyészségi döntést érvénytelenített – tette lehetővé.
<br />
<br />Tekintettel az édesapa korábbi többszöri erőszakos fellépésére, magyarországi hazatérése óta anya és gyermeke ismeretlen helyen tartózkodik.
<br />
<br />A Külügyminisztérium köszönetét fejezi ki a török hatóságoknak, hogy jogszerű eljárás keretében lehetővé tették Raskó Emese és kiskorú gyermeke hazatérését.
<br />
<br /><span style="color:#ff0000;">Efendi kommentárja:</span></div><div align="justify"><span style="color:#ff0000;">
<br /></span>Raskó Emese és Raskó Szofi kálváriája közel 50 napig tartott az ankarai magyar nagykövetségen.</div><div align="justify">
<br />Az ügy tanulságai?</div><div align="justify">
<br />A Külügynek sikerült megoldania a Raskó-család hazahozatalát. Nem a hágai egyezmény alapján született jogi megoldás, de visszaállt a tavaly decemberi kiindulóhelyzet: Raskó Szofi visszakerült oda, ahol születése óta édesanyjával élt, azaz Magyarországra. Létrejöttek a feltételek a kislány érdekeit szem előtt tartó tisztességes megoldáshoz.</div><div align="justify">
<br />Szóval, Szofi hazahozatala miatt némiképpen erősött bizalmunk a magyar bürokráciában.</div><div align="justify">
<br />A második tanulság, hogy a török hatóságok nem álltak a helyzet magaslatán, amikor egy nemzetközi szerződés előírásainak kellett (volna) érvényt szerezniük.</div><div align="justify">
<br />A hágai egyezmény éppen azért jött létre, hogy a jogellenesen külföldre vitt gyerekek ügyében - a kiskorúak érdekében - a bírósági eljárás ne tartson évekig.</div><div align="justify">
<br />Raskó Emese augusztus 19-én nyújtotta be keresetét a török Igazságügyi Minisztériumhoz. Az eljárás az lett volna, hogy az IM továbbítja a keresetet a török családjogi bírósághoz, az pedig határozatot hoz arról, visszadja-e Szofit Magyarországra vagy sem. Az egész procedúrára 6 hét állt rendelkezésre- ám Raskó Emese ügye ez idő alatt el sem jutott a bírósághoz. Raskó Emesének szeptember 30-án már a török bíróság határozatával kellett volna rendelkeznie, ám Szofi papírjait még mindig a török IM bürökratái tologatják.</div><div align="justify">
<br />Ez, sajnos, rossz fényt vet az Európai Unióhoz csatlakozni kívánó Törökországra, nem erősíti a bizalmat a török államigazgatásban és az igazságszolgáltatásban.</div><div align="justify">
<br />A harmadik tanulság a német hatóságok magatartása. Mint tudjuk, Szofi apja német állampolgár, aki a kislány édesanyjának tudta és hozzájárulása nélkül elérte német útiokmány kiállítását Németországban, s a Magyarországról elrabolt Szofit azzal vitte január első napjaiban - azaz 9 hónapja - Törökországba.</div><div align="justify">
<br />Mivel járultak hozzá az elmúlt másfél hónapban a német hatóságok Szofi ügyének megoldásához és a család hazautazásához Törökországból? Semmivel. Felháborító és elfogadhatatlan.</div><div align="justify">
<br />Még egy utolsó tanulság. A magyar média elég sokat foglalkozott Szofi és családja törökországi megpróbáltatásaival, tehát a magyar közvélemény bizonyos részéhez eljutottak a Raskó-családdal kapcsolatos hírek.</div><div align="justify">
<br />Az elmúlt másfél hónap alatt azonban sem Törökország, sem Németország képviselői nem tartották fontosnak, hogy a magyar közvélemény előtt megszólaljanak a Raskó-ügyben. Vajon miért?</div><div align="justify">
<br />Bónusz kérdés: hol van és mikor kerül haza a 7 éves Mehmet Karcsika, akit török-magyar apja három hónappal ezelőtt rabolt el Magyarországról?</div><div align="justify">
<br /></div><div align="center">
<br /><span style="font-size:130%;"><strong>Későn kezdtek el intézkedni az ankarai hatóságok</strong></span></div><div align="center">Népszava online (Forró Evelyn, Ankara), okt. 4.</div><div align="justify">
<br /></div><div align="justify">Az osztrák légitársaság Ankara-Bécs közötti menetrendszerinti járatán utazott el az a magyar család, amely másfél hónapon keresztül az ankarai magyar nagykövetségen talált menedéket. A neves török birkózó, Fatih Özbas tavaly év végén elrabolta Magyarországról kislányát, Szofit. Az édesanya, Raskó Emese tavasszal utánuk jött, és megpróbálták helyreállítani kapcsolatukat. Miután kiderült, hogy erre nincs esély, a nő a gyerekkel vissza akart menni Magyarországra, de Özbas ezt megakadályozta azzal, hogy elvette a nő útlevelét. A gyerek a férfi útlevelében szerepelt, ráadásul az egy német dokumentum volt, mert a birkózó német és török állampolgár.
<br />
<br />Az asszony és a gyerek augusztus közepén a magyar hatóságoktól kapott okmányokkal el akart utazni, de a férfi rokonsága fellármázta a repülőtéri rendőrséget, azzal, hogy az apa nem járult hozzá a gyerek távozásához. A török hatóságok visszatartották őket, végül a helyszínen lévő magyar diplomaták az ankarai magyar nagykövetségre vitték az anyát, a gyereket, és az őket kísérő nagymamát. A dolgot bonyolította, hogy az anya ismét terhes, túl van a hatodik hónapon. Az apával nem sikerült megállapodásra jutni, a család a bírósági döntésre várt, ami nem sok jóval kecsegtetett. Hosszas halogatás után a török hatóságok csak akkor kezdtek intézkedni, amikor Bársony András külügyi államtitkár magához kérette a budapesti török nagykövetet, és felszólította az ügy rendezésére. Ezt követően vonta vissza az illetékes ügyészség azt a döntését, amelynek értelmében Raskóék eddig nem hagyhatták el az országot. Komoly biztonsági intézkedések közepette vitték őket szombaton délután az ankarai repülőtérre, és tették fel az osztrák légitársaság Bécsbe tartó járatára.
<br /></div><div align="justify">
<br />
<br /></div><div align="justify">Szofi még nem térhet haza
<br /><strong><span style="font-size:130%;">Nem tudni, hogyan szerzett német papírokat a török apa</span></strong></div><div align="justify">Népszabadság, 2004. október 1.</div><div align="justify">
<br /></div><div align="justify">Az orvosok szerint minél előbb nyugodt körülmények közé kellene kerülnie a hat hete az ankarai magyar nagykövetségen menedéket kérő hét hónapos terhes Raskó Emesének - tudta meg lapunk.</div><div align="justify">
<br />Az édesanya hároméves kislányával várja, hogy a török igazságügyi minisztérium döntsön arról, hazahozhatja-e gyermekét, akit az apja, Özbas Fatih egykori birkózó olimpikon januárban az anya tudta nélkül vitt Törökországba.</div><div align="justify">
<br />Emese és Szofi a nagymamával együtt a nagykövetség vendéglakásában laknak augusztus közepe óta. A körülmények jók ugyan - fürdőszoba, konyha, hálószobák állnak a rendelkezésükre - de a bizonytalan helyzet veszélyeztetheti az élettársától februárban ismét teherbe esett asszony egészségét. Telefonon többször életveszélyesen megfenyegették a Raskó családot, így nem merik a nagykövetség épületét elhagyni egy pillanatra sem. A bevásárlást így a követség alkalmazottai végzik.</div><div align="justify">
<br />A Külügyminisztérium politikai államtitkára a héten behívatta Törökország Budapesti nagykövetét. Bársony András nyomatékosan kérte a török diplomatát, hogy a török hatóságok mielőbb hozzák meg döntésüket a kislány kiutazási tilalmának feloldása érdekében. Az édesanya kérésére a magyar konzul hazatérési igazolást állított ki, ám azzal Szofi mégsem hagyhatta el az országot.</div><div align="justify">
<br />A török fél szerint ugyanis Szofi német papírokkal érkezett az országba, így azt csak azokkal hagyhatja el. Nem világos azonban, hogy a Németországban is élő Özbas hogyan érte el, hogy a kislánynak német papírjai legyenek, amikor ehhez az édesanya hozzájárulása kell. Raskó Emese korábban elmondta: sosem járult hozzá, hogy lányának más állampolgársága is legyen a magyaron kívül. Berlinben azonban nem sikerült választ kapni a német hatóságoktól arra, hogy Szofi német iratai valódiak-e.</div><div align="justify">
<br />A török igazságügyi minisztériumnak tegnapig kellett volna döntést hoznia, ám ez egyelőre nem történt meg.</div><div align="justify">
<br /></div><div align="justify"></div><div align="center"><span style="color:#ff0000;"><strong>" Diplomáciai probléma a válogatott birkózó magyar felesége miatt"</strong></span></div><div align="center"><span style="font-size:85%;color:#333333;">Hürriyet, 2004. szept. 30.</span></div><div align="center">
<br /></div><div align="left"><span style="color:#ff0000;"><strong></strong></span></div><div align="justify"><span style="color:#333333;">A magyar Külügy a budapesti török nagykövetettöl kérte, hogy a török fél a lehető legrövidebb időn belül engedélyezze Raskó Emese és kislánya hazatérését és vonja vissza a rájuk vonatkozó kiutazási tilalmat. Azt is szóvá tették, hogy a török hatóságok augusztus óta nem értek el eredményt a Raskó-ügy megoldásában. A cikk szerint a magyar fél úgy véli, Özbas és családja rosszul bánt Raskó Emesével és Szofival, s a török hatóságok megalapozatlanul tiltották meg kiutazásukat.</span></div><div align="justify"><span style="color:#333333;"></span>
<br /></div><div align="center"><span style="color:#ff0000;"><strong>Lányom nélkül soha - magyar nő Ankarában</strong></span></div><div align="center"><span style="color:#ff0000;"><strong>Haladéktalan intézkedést vár a Külügyminisztérium Ankarától Raskó Emese ügyében</strong></span></div><div align="center"><span style="color:#333333;"><a href="http://ma.hu/page/cikk/ab/0/100721/1">ma.hu szept. 29.</a></span></div><div align="justify"><span style="color:#333333;"></span>
<br /></div><div align="justify">A szolnoki nő márciusban utazott ki Törökországba, hogy hazahozza 3 éves kislányát. Ez azóta sem sikerült neki. A Külügyminisztériumba kérette Törökország budapesti nagykövetét Bársony András politikai államtitkár és közbenjárását kérte Raskó Emese és kislánya Törökországból való kiutazási tilalmának feloldása érdekében. A keddi budapesti megbeszélésen Bársony András nyomatékosan kérte Aydan Karahant, hogy a török hatóságok az ügy fontosságának és jelentőségének megfelelően működjenek közre abban, hogy az anya és kiskorú gyermeke haladéktalanul hazautazhasson Magyarországra. A 3 éves Raskó Szofit ez év januárjában édesanyja tudta és engedélye nélkül német úti okmányokkal vitte édesapja Törökországba. "Az édesanya márciusban érkezett Ankarába. Özbas, akkor magyar útlevelét, valamint a kislány magyar útlevelét elvette, azokat a mai napig nem adta vissza és megakadályozta, hogy anya és gyermeke visszautazzon Magyarországra" - szerepel a tárca közleményében. Szofi és édesanyja az édesapa és családjának erőszakos magatartása miatt, az ankarai magyar nagykövetségen keresett védelmet - közölte a minisztérium szóvivője. Az édesanya kérésére a magyar konzul hazatérési igazolványt állított ki számukra, ám a török hatóságok nem engedték őket elutazni. "A magyar nagykövetség augusztus közepe óta többször kérte a török hatóságok intézkedését annak érdekében, hogy a magyar állampolgárok mielőbb hazautazhassanak. E kérések mindmáig válasz, illetve érdemi reagálás nélkül maradtak" - hangsúlyozta Polgár Viktor.</div><div align="justify">
<br />Apja lánya? A szolnoki Raskó Emese három évvel ezelőtt, házasságon kívüli kapcsolatból szülte meg lányát, akit szülei szolnoki házában egyedül nevelt. A kislány apja a Törökországban népszerű Fatih Özbas, egykori birkózó olimpikon, Európa-bajnok, akivel az asszony Németországban ismerkedett meg - olvasható a nol.hu-n. Az apa többször is meglátogatta Magyarországon a gyereket, majd tavaly szilveszterkor elszöktette a lányát, és valószínűleg hamis német útlevéllel Törökországba vitte. Innen próbálta meg augusztus 19-én hazamenekíteni gyermekét a magyar asszony, ám nem járt sikerrel. Az útlevélkezelők nem engedték őket felszállni a repülőgépre, mondván: a kislány német útlevéllel lépett be az országba, ezért magyar papírokkal nem távozhat. Szofi és édesanyja ezt követően az ankarai magyar nagykövetségen kért és kapott menedéket. Az asszony augusztus közepén a török igazságügyi minisztériumhoz fordult, hogy engedélyezzék gyermeke kiadatását. Dokumentumokkal igazolta, hogy Szofi magyar állampolgár, Szolnokon nőtt fel, s hivatalos gondviselője egyedül az édesanyja. A Népszabadság emlékeztet: a török minisztériumnak a törvények szerint hat hét áll rendelkezésére, hogy döntsön az ügyben - ez a határidő szeptember 30-án jár le.</div><div align="justify"><span style="color:#333333;"></span>
<br /></div><div align="center"><span style="color:#ff0000;"><strong></strong></span></div><div align="center"><span style="color:#ff0000;"><strong>A Külügyminisztériumba kérették a török nagykövetet Raskó Emese és kislánya hazautazása érdekében </strong></span></div><div align="center"><span style="color:#ff0000;"><span style="font-size:85%;color:#333333;">2004. szeptember 28., kedd (MTI)</span></span></div><div align="center"></div><p align="justify"><span style="color:#ff0000;"><span style="color:#333333;">A Külügyminisztériumba kérette Törökország budapesti nagykövetét Bársony András politikai államtitkár és közbenjárását kérte Raskó Emese és kislánya Törökországból való kiutazási tilalmának feloldása érdekében. Ezt a külügyi tárca szóvivője tudatta kedden az MTI-vel.</span></span></p><p align="justify"><span style="color:#ff0000;"><span style="color:#333333;">"</span></span><span style="color:#ff0000;"><span style="color:#333333;">A keddi budapesti megbeszélésen Bársony András nyomatékosan kérte Aydan Karahant, hogy a török hatóságok az ügy fontosságának és jelentőségének megfelelően működjenek közre abban, hogy az anya és kiskorú gyermeke haladéktalanul hazautazhasson Magyarországra" - olvasható Polgár Viktor közleményében.</span></span></p><p align="justify"><span style="color:#ff0000;"><span style="color:#333333;">A szóvivő kiemelte: Raskó Szofi és édesanyja az édesapa és családjának erőszakos magatartása miatt, az ankarai magyar nagykövetségen keresett védelmet.</span></span></p><p align="justify"><span style="color:#ff0000;"><span style="color:#333333;">A 3 éves Raskó Szofit ez év januárjában édesanyja tudta és engedélye nélkül német úti okmányokkal vitte édesapja, a népszerű válogatott birkózó Özbas Fatih Törökországba.</span></span></p><p align="justify"><span style="color:#ff0000;"><span style="color:#333333;">"Az édesanya márciusban érkezett Ankarába. Özbas, akkor magyar útlevelét, valamint a kislány magyar útlevelét elvette, azokat a mai napig nem adta vissza és megakadályozta, hogy anya és gyermeke visszautazzon Magyarországra" - szerepel a kommünikében. </span></span><span style="color:#ff0000;"><span style="color:#333333;">Az édesanya kérésére a magyar konzul hazatérési igazolványt állított ki számukra, ám a török hatóságok nem engedték őket elutazni.</span></span></p><p align="justify"><span style="color:#ff0000;"><span style="color:#333333;">"A magyar nagykövetség augusztus közepe óta többször kérte a török hatóságok intézkedését annak érdekében, hogy a magyar állampolgárok mielőbb hazautazhassanak. E kérések mindmáig válasz, illetve érdemi reagálás nélkül maradtak" - hangsúlyozta Polgár Viktor.</span></span></p><p align="justify"><span style="color:#ff0000;">Efendi kommentárja:</span></p><p align="justify"><span style="color:#333333;">Raskó Emese a Népszabadságnak azt nyilatkozta (ld. lent), hogy Szofi apja az ö tudta és engedélye nélkül állíttatta ki a német útlevelet, amellyel a német állampolgárságú férfi a kislányt Törökországba vitte. Ha jól értelmezem a helyzetet, egy német állampolgár kétes eredetü német papírokkal 9 hónapja elrabolt egy kiskorú magyar állampolgárt Magyarországról, és a német hatóságok a jelek szerint még semmit nem tettek azért, hogy az ügyet kivizsgálják, ad abszurdum, megoldják, mi több, a magyar közvéleményt tájékoztassák.</span></p><p align="justify"><span style="color:#333333;">Mi a helyzet vajon Mehmet Tüysüz Karcsika ügyében? A török hatóságoknak talán azért nem volt idejük Szofival foglalkozni, mert éjjel-nappal Karcsikát keresték? A kisfiú 3 hónapja tünt el Magyarországról, s Papa mintha azt mondta volna, tudja, hol bújtatják Törökországban. </span></p><div align="center"><strong><span style="color:#ff0000;">Budapestről telefonon fenyegették meg a gyermekével immár 40 napja az ankarai magyar nagykövetségen tartózkodó Raskó Emesét</span></strong></div><div align="center">
<br />Link: <a href="http://www.nol.hu/cikk/334126/">Népszabadság-hír: Szofiék ügye nem mozdul Ankarában</a> szept. 25.</div><div align="justify">
<br /><span style="color:#ff0000;">Efendi kommentárja (szept. 25.)</div><div align="justify">
<br /><span style="color:#000000;">A magyar hatóságok vajon mikor lesznek képesek hazahozni a Törökországba kiszöktetett magyar gyerekeket? Szofit tavaly december 31-én, Karcsikát idén július 10-én vitték ki jogellenesen Magyarországról. Szofi 40 napja van az ankarai magyar követségen, Karcsika valahol eltűnt Törökországban. </span></div><div align="justify">
<br /><span style="color:#000000;">A magyar, a török és a német igazságügyi és bűnüldöző hatóságok, a magyar konzuli szolgálat, számos diplomatánk Berlinben, Ankarában és Isztambulban, Papa, az ügyvédek, német és török szövetségesünk, jelenlegi és leendő európai uniós partnerünk, Németország és Törökország eddig ezt tudták produkálni. </span></div><div align="justify">
<br /><span style="color:#000000;">Azt, sajnos, nem hallottuk, hogy Törökország vagy Németország budapesti nagykövete bármit is mondott volna a magyar közvéleménynek az ügyben. Igaz, véleményüket a magyar médiumok sem kérdezték. Hogy mit mondhattak a Bem rakparton, azt nem tudhatjuk. Így hát találgatunk: hazajön-e valaha a két magyar állampolgár, Szofi és Karcsika? </span></div><div align="justify">
<br /><span style="color:#000000;">Az azonban könnyen megtörténhet, hogy a magyar közvélemény Törökország uniós felkészültségét egy ideig azon fogja lemérni, akarja-e, tudja-e hazájába visszajuttatni a két gyermeket, akik életüket eddig Magyarországon élték le, s a szülői felügyeleti jogot törvényesen gyakorló édesanyjuk tudta és akarata ellenére, a magyar és a nemzetközi jog megsértésével kerültek Törökországba.</span></div><div align="justify">
<br /><span style="color:#000000;">Raskó Emese augusztusban elmondta a NSZ szolnoki tudósítójának, hogy Fatih Özbas megfenyegette: végez a Raskó-családdal és eltünteti Szofit, ha az asszony a magyar hatóságok segítségét kéri a kislány Törökországba szöktetése miatt. Most Özbas magyarországi barátai fenyegették meg Raskó Emesét. S a történetnek még nincs vége. De mintha az a török és a német hatóságok számára még el sem kezdődött volna.</span></div><div align="justify">
<br /><span style="color:#000000;">Olvassuk el ismét a magyar Külügy pontosan egy hónappal ezelőtti kiadott nyilatkozatát Szofi ügyével kapcsolatban: "A magyar állampolgárok alkotmányos joga a konzuli védelemhez való jog. .. Kiemelt humanitárius kötelezettség áll fenn a kiskorú magyar állampolgárok védelme, a gyermekek jogainak biztosítása, életük, testi épségük megóvása kapcsán." </span></div><div align="justify">
<br /></span><span style="color:#000000;">Mi is így tudjuk.</span></div><div align="justify"></div><div align="center"><strong><span style="font-size:130%;"></span></strong>
<br /></div><div align="center"><strong>Szofiék ügye nem mozdul Ankarában</strong></div><div align="center"><strong><span style="font-size:85%;">Népszabadság, Doros Judit, 2004. szeptember 25.</span></strong></div><div align="center"><strong><span style="font-size:130%;"></span></strong>
<br /></div><div align="justify">A napokban ismeretlen telefonáló fenyegette meg azt az ankarai magyar nagykövetségen tartózkodó szolnoki asszonyt, aki augusztusban megpróbálta hazahozni - az egykori élettársa által - Törökországba szöktetett kislányát, Szofit.</div><div align="justify">
<br />A magyarul beszélő férfi közölte vele: jobban teszi, ha együttműködik kislánya apjával egy "mindannyiuk számára jó megoldás" érdekében. Az asszony nem tett feljelentést a fenyegető telefon miatt.</div><div align="justify">
<br />Mint arról korábban beszámoltunk, a szolnoki Raskó Emese három évvel ezelőtt, házasságon kívüli kapcsolatból szülte meg lányát, akit szülei szolnoki házában egyedül nevelt. A kislány apja a Törökországban népszerű Fatih Özbas, egykori birkózó olimpikon, Európa-bajnok, akivel az asszony Németországban ismerkedett meg. Az apa többször is meglátogatta Magyarországon a gyereket, majd tavaly szilveszterkor elszöktette a lányát, és valószínűleg hamis német útlevéllel Törökországba vitte. Innen próbálta meg augusztus 19-én hazamenekíteni gyermekét a magyar asszony, ám nem járt sikerrel. Az útlevélkezelők nem engedték őket felszállni a repülőgépre, mondván: a kislány német útlevéllel lépett be az országba, ezért magyar papírokkal nem távozhat. Szofi és édesanyja ezt követően az ankarai magyar nagykövetségen kért és kapott menedéket.</div><div align="justify">
<br />Az asszony augusztus közepén a török igazságügyi minisztériumhoz fordult, hogy engedélyezzék gyermeke kiadatását. Dokumentumokkal igazolta, hogy Szofi magyar állampolgár, Szolnokon nőtt fel, s hivatalos gondviselője egyedül az édesanyja. A török minisztériumnak a törvények szerint hat hét áll rendelkezésére, hogy döntsön az ügyben - ez a határidő szeptember 30-án jár le. Raskó Emese tegnap szolnoki tudósítónknak telefonon elmondta: török ügyvédet fogadott, de egyelőre nincs fejlemény ügyében, az illetékes szervek meg sem hallgatták.</div><div align="justify"></div><div align="center"><span style="font-size:130%;"><strong></strong></span></div><div align="center"><span style="font-size:130%;"><strong>Szofi két útlevéllel
<br />Beszélgetés az ankarai követségre menekült anyával</strong></span></div><div align="center">Népszabadság • Doros Judit • 2004. augusztus 28.
<br /></div><div align="justify">
<br /><em>Semmiképpen sem szeretnék Törökországban szülni, és bízom abban, hogy minden hivatalos ügynek számunkra kedvező vége lesz - mondta a Népszabadságnak Raskó Emese, aki augusztus 16-a óta az ankarai magyar nagykövetség védelmét élvezi, kislányával, a hároméves Szofival együtt.</em></div><em><div align="justify">
<br />Mint arról beszámoltunk, a gyereket tavaly decemberben szöktette Törökországba apja, a hazájában közismert Fatih Özbas, egykori birkózó olimpikon, Európa-bajnok. Az édesanya - szülei segítségével - a napokban megpróbálta hazamenekíteni a lányát, ám nem jártak sikerrel: az útlevélkezelők nem engedték őket felszállni a repülőgépre. A család ezt követően az ankarai magyar nagykövetségen kért menedéket. Raskó Emese eddig elzárkózott a sajtó kérdései elől, most azonban mégis úgy döntött: miután gyermeke apja már többször is nyilatkozott az ügyben, most ő is megosztja álláspontját a nyilvánossággal.</div><div align="justify">
<br /></em>- Fatih Özbas a Hürriyet nevű török lapban azt állította: önök sokáig éltek Németországban, majd megegyeztek abban, hogy átköltöznek Ankarába, s ott élnek tovább.</div><div align="justify">
<br />- Fatihhal 1999 nyarán ismerkedtem meg Németországban. Szofi megszületéséig - 2001 októberéig - többször kiutaztam Németországba, de alapjában véve Magyarországon éltem, ekkor végeztem ugyanis a főiskolát. Kapcsolatunk első időszakában még voltak különböző elképzeléseink a közös jövőnkről, de amikor már terhes voltam, rájöttem, hogy nem tudok és nem is akarok vele együtt élni. Szofi Magyarországon született, azóta - a szüleimmel együtt - Szolnokon élünk. Arról nem egyeztünk meg, hogy bárhová is elköltözünk a kislánnyal Magyarországról. Fatihnak soha nem mondtam, hogy ne jöjjön és ne látogassa Szofit, és ő nagyjából havonta látogatott minket.</div><div align="justify">
<br />- Ugyanez a lap megemlíti, hogy a kislányuk a férfi útlevelében is szerepelt, mert így kaphatott német állampolgárságot.</div><div align="justify">
<br />- Szofival Szolnokon éltünk, ott járt bölcsődébe. A kislányomnak magyar állampolgársága és magyar útlevele van. A Szofi megszületése óta eltelt három év alatt kétszer voltunk egy-két hétre az apjával együtt Törökországban és Németországban. A kislányom a magyar útlevelével utazott. Tavaly december végén Fatih meglátogatott minket Szolnokon, és elszöktette Szofit Törökországba. Ezután tudtam meg, hogy Szofi szerepel édesapja német útlevelében. Fatih most azt állítja, hogy ehhez hozzájárultam, és lemondtam a kislányom felügyeleti jogáról. Én azonban Szofiról soha nem mondtam le, és nem adtam a beleegyezésemet ahhoz, hogy Szofi a magyaron kívül más állampolgár is legyen, ahhoz sem írtam alá semmilyen papírt, hogy az apja útlevelében szerepeljen. Fatih a gyereket tavaly a belegyezésem és a tudtom nélkül vitte el Magyarországról. Kényszerhelyzetbe kerültem, a kislányom Törökországban volt, ezért először január közepén jöttem ide. Két hétig maradhattam, azután Fatih hazaküldött. Szofinak ismét meg kellett élnie az elszakadást. Fatih megígérte, hogy körülbelül tíz nap után eljön értem Magyarországra, így addig otthon vártam. Végül március közepén - hosszú várakozás után - engedte meg, hogy ide költözhessek. Itt Fatih elvette az útlevelemet, és elzárt a külvilágtól.</div><div align="justify">
<br />- Kislánya édesapja szerint az önök közötti konfliktusnak a nagyszülők az okai, ők befolyásolják Önt rossz irányba.</div><div align="justify">
<br />- A szüleim mellettem álltak az elmúlt nyolc hónapban, és a történtek ellenére teljes bizalmat szavaztak Fatihnak. Rendszeresen beszéltem velük és tudták pontosan, mi történik velem nap mint nap. Egy szomorú eset után, amikor Fatih nagyon megvert - és ez nem az első eset volt -, teljesen világossá vált számomra, hogy nem vagyok képes, nem akarok megfelelni már az ő elvárásainak. Teljes kétségbeesésemben kértem ezután a szüleimet, hogy segítsenek nekem, mert nem tudok ezzel az emberrel együtt élni.</div><div align="justify">
<br />- A repülőgépre, török lapinformációik szerint, azért nem tudtak felszállni, mert elkísérte önöket Büsra Güler, Szofi tizenegy éves törökországi unokatestvére, és "cirkuszolni" kezdett a repülőtéren.</div><div align="justify">
<br />- Büsra Gülert mindenképpen magunkkal kellett vinnünk a repülőtérre, mivel ő volt az, akit Fatih azért rendelt mellém, hogy mindig szemmel tartson. Kapcsolatom ezzel a kislánnyal törökországi ittlétem hat hónapja alatt leginkább anya-lánya kapcsolatára hasonlított. Az ankarai repülőtéren, amikor világossá vált számára, hogy Szofi és én el akarunk menni, pánikszerű, hisztériás kiabálásba kezdett, és szépen lassan az egész repülőtéri rendőrség figyelmét magára vonta. Így nem engedtek fel bennünket a repülőgépre. A török rendőrség szerint Szofi apja német útlevelével érkezett az országba, ezért magyar papírokkal nem engedhették ki.</div><div align="justify">
<br />- Ön hat hónapos terhes, születendő gyermekének szintén Fatih Özbas az édesapja. Mi lesz ennek a gyereknek a sorsa, elképzelhető-e, hogy Törökországban születik meg? Egyáltalán: meddig tervezi, hogy a követség épületében maradnak?</div><div align="justify">
<br />- Az, hogy most hat hónapos terhes vagyok, bizonyítja, hogy amikor idejöttem, komolyan gondoltam azt, hogy Fatihhal a kapcsolatom jóra fordul, és talán mégis egy család leszünk. Más lehetőséget nem láttam, itt volt a megszöktetett kislányom. Fatih megfenyegetett, hogy végez a családommal, Szofit pedig eltünteti a szemem elől, ha a magyar hatóságokhoz fordulok. Ezért számunkra most az egyetlen biztonságos hely a követség épülete. Hálás vagyok a Külügyminisztériumnak, hogy az ügy lezárásáig itt lehetünk. Itt teljes biztonságban érezhetjük magunkat. Félek ugyanis attól, hogy ha bárhol máshol lennénk Törökországban, Fatih megint elvenné tőlem Szofit, és akkor sem adná vissza, ha erről a bíróság ítéletet hozna. Semmiképpen sem szeretnék Törökországban szülni, és bízom abban, hogy minden hivatalos ügynek hamarosan számunkra kedvező vége lesz.</div><div align="justify">
<br />- Hogyan éli át a kislánya ezeket az eseményeket?</div><div align="justify">
<br />- Szofi szereti az édesapját, de mivel túl sok időt nem töltött vele együtt, ezért most hiányát sem nagyon érzi. Jól van, még játékot is találtunk neki, de most a négy fal közül nem tud kimozdulni. Remélem, ez a helyzet nem tart sokáig.</div><div align="justify">
<br />- Lát-e még esélyt arra, hogy az egész ügy békésen rendeződjön, vagy már csak a török bíróság döntésében bízhat?</div><div align="justify">
<br />- Azok után, ami az elmúlt nyolc hónapban történt, már nagyon nehéz bízni a megegyezésben a kislányom apjával. Szeretném, ha valahogy mielőbb hazautazhatnánk Szofival. Fatih feljelentett minket Törökországban, most Szofival nem hagyhatjuk el az országot. Fatihot egyébként sajnálom, mert tudom, milyen az, amikor az ember nem láthatja a gyermekét. De hinni sem tudok már az ígéreteinek. Ezért fordultam a török bírósághoz, s valószínűleg meg kell várnunk a döntését. Mivel a kislányom magyar állampolgár, és Magyarországon élt eddig, azt hiszem, hogy az igazság a mi oldalunkon áll. Bízom a török bíróságban, és abban, hogy Szofi visszakerül oda, ahol életének első három évében nevelkedett. Úgy gondolom, hogy - bár annak idején nem tudtam, mit vállalok, amikor egy török férfitől gyermeket szültem -, mégis mindent megtettem, hogy mindenkinek megfelelve, egy család lehessünk. Sajnos, nem tudtam elfogadni azokat az elvárásokat, amelyeket Fatih támasztott velem szemben. Például, amíg itt voltam, a lakásból csak a boltba és a játszótérre mehettem ki, akkor is csak felügyelettel, és senkivel nem állhattam szóba. Édesapámtól tudom, hogy a magyar közvélemény és a sajtó érdeklődik a kislányom mostani helyzete iránt. Ez nagyon jól esik. De azt, amin az elmúlt hónapokban keresztülmentem, nem lehet gyorsan feldolgozni. Ezért gondolom, érthető, hogy a mostani lelkiállapotomban nehéz a megpróbáltatásaimról a sajtónak beszélni. Most is csak azért nyilatkozom, mert az otthoniaktól tudom, hogy a magyar sajtóban jelentek meg igazságtalan állítások is velünk kapcsolatban.<span style="font-size:100%;">
<br />
<br /></div></span><span style="font-size:100%;"><div align="justify"></span></div><div align="center"><strong><span style="font-size:130%;"></span></strong></div><div align="justify"><strong>Külügyminisztérium: alkotmányos jog a konzuli védelemhez való jog
<br /></strong>
<br />Külügyminisztérium Szóvivői Iroda
<br />Budapest, 2004. augusztus 26. </div><div align="justify">
<br />A Törökországban tartózkodó Raskó Emese és gyermeke ügye kapcsán a Külügyminisztérium az alábbiakra hívja fel a figyelmet.</div><div align="justify">
<br />A magyar állampolgárok alkotmányos joga a konzuli védelemhez való jog. A magyar konzuli szolgálat a külföldön bajba került magyar állampolgárok megsegítése érdekében a nemzetközi jog és a hazai jog keretein belül - a fogadó állam jogának tiszteletben tartása mellett - intézkedik. Kiemelt humanitárius kötelezettség áll fenn a kiskorú magyar állampolgárok védelme, a gyermekek jogainak biztosítása, életük, testi épségük megóvása kapcsán.</div><div align="justify">
<br />A konzuli szolgálat e kötelezettségeinek eleget téve jár el a török, majd a magyar sajtóban nyilvánosságra került ügyben is, amelyben az érintett magyar állampolgár a maga és az ugyancsak magyar állampolgárságú gyermeke érdekeinek védelmében kérte a konzuli szolgálat segítségét. A Külügyminisztérium, az illetékes magyar és török hatóságokkal szorosan együttműködve, a jogi előírások keretein belül tette meg a szükségesnek ítélt halaszthatatlan intézkedéseket és jár el a továbbiakban is az érintett magyar állampolgárok érdekeinek külföldön történő védelmében. Az ügy, illetőleg az eljárás részleteinek nyilvánosságra hozása azonban sértheti az érintettek személyiségi jogait és hátrányosan befolyásolhatja az ügyben folyó hatósági eljárások kimenetelét, így ettől a Külügyminisztérium tartózkodik.</div><div align="justify"></div><div align="center">
<br /><span style="font-size:130%;"><strong>Egy magyar család kálváriája
<br />Az ankarai magyar nagykövetségen kértek védelmet</strong></span></div><strong><span style="font-size:130%;"></span></strong><div align="center">
<br />Népszabadság, Doros Judit, 2004. augusztus 25. 00:00</div><div align="left">
<br /></div><div align="justify">Egyelőre nem tudni, meddig marad az ankarai nagykövetségen az a szolnoki asszony, aki a külképviseleten kért védelmet maga és gyermeke számára.</div><div align="justify">
<br />Mint arról tegnapi lapunk pesti kiadásában hírt adtunk, Raskó Emese három évvel ezelőtt, házasságon kívüli kapcsolatból szülte meg Szofi nevű lányát, akit szülei szolnoki, szandaszőlősi házában egyedül nevelt. A kislány apja, a Törökországban közismert Fatih Özbas egykori birkózó olimpikon, Európa-bajnok, akivel Raskó Emese Németországban ismerkedett meg. Úgy tervezték: Németországban telepednek le. A kapcsolatuk azonban megromlott, így a terhes aszszony a lányát már Magyarországon szülte meg. Az apa többször meglátogatta a gyereket, majd tavaly szilveszterkor elszöktette, s az elsődleges adatok szerint hamis német útlevéllel Törökországba vitte. Innen próbálta meg a múlt hét elején, a szülei segítségével hazamenekíteni a lányát a magyar asszony, ám nem járt sikerrel: az útlevélkezelők nem engedték őket felszállni a repülőgépre. A család ezt követően az ankarai magyar nagykövetségen kért menedéket: Raskó Emese és édesanyja, valamint a kislánya jelenleg is a követség egyik vendégházában tartózkodik, míg a nagypapa, Raskó Tamás a napokban viszszatért Szolnokra, s innen intézi a család ügyeit.</div><div align="justify">
<br />Raskó Tamás tegnap nyilatkozott tudósítónknak az ügy hátterétől. Elmondta: a lánya az idén januárban tudta meg, hogy gyermeke Törökországban van. Fatih Özbas - Raskó Tamás állítása szerint - fogadta ugyan az asszonyt, de később elvette az útlevelét, s nem engedte, hogy szabadon kijárjon a házból. Raskó Emese az itt töltött idő alatt újból teherbe esett a török birkózótól: szíve alatt most hat hónapos, közös magzatukat hordja. A nagypapa állítása szerint ezt a gyermeket is itthon szeretné majd megszülni és felnevelni a huszonnyolc éves, korábban pedagógusként dolgozó lánya.</div><div align="justify">
<br />Raskó Tamás közölte: a napokban felhívta őt Fatih Özbas, és arra kérte, hogy beszélje rá a lányát az ügy békés rendezésére. Azt is felajánlotta, hogy költözzenek Németországba, s ott éljenek együtt. A nagypapa szavai szerint azonban a lánya szeretne hazajönni. Közölte: a család török ügyvédet fogadott, s a hágai egyezményre hivatkozva kérték a gyerek jogállásának bizonyítását. Az elmúlt hetekben beszerezték azokat a papírokat - anyakönyvi kivonatot, lakcímkártyát, bölcsődei igazolást, gyermekorvosi dokumentumokat -, amelyekkel igazolható, hogy a kislány folyamatosan Magyarországon, az anyjával élt. Miután a kislány magyar állampolgár, s ezt az édesanya a fenti dokumentumokkal igazolta, az ankarai magyar nagykövetség kiadta számukra a hazatérési engedélyt. A török hatóságok azonban augusztus 16-án, hétfőn nem engedték őket felszállni a Budapestre tartó repülőgépre, arra hivatkozva: a kislány német útlevéllel lépett be az országba, s így magyar papírokkal nem távozhat.</div><div align="justify">
<br />Raskó Tamás elmondta: a Külügyminisztérium felajánlotta a lányának és a többi családtagnak, hogy az ügy rendezéséig a követség épületében maradhassanak. Hozzátette: információi szerint Emesét nem zaklatja közös gyermekük apja, aki egy ankarai újságnak adott nyilatkozatban azt állította: az anya korábban lemondott a kislány felügyeleti jogáról. Ezt Raskó Tamás határozottan cáfolta. Fatih Özbas a napokban egy török lapon keresztül a helyi illetékesekhez fordult, s azt kérte: ne hagyják, hogy a gyerekét hamis papírokkal megszöktessék az országból.</div><div align="justify">
<br />Az ankarai magyar nagykövetségen megerősítették: Raskó Emese, lányával és édesanyjával együtt a követség épületében tartózkodik. Raskó Emese egyelőre nem kívánt nyilatkozni az ügyben. </div><div align="justify">
<br />
<br /></div><div align="center"><strong><span style="font-size:130%;">Gyerekrablás Ankarában</span></strong></div><div align="center">2004. augusztus 25. 15:47 - <a href="http://www.mogyoro.hu/portal/news.php?action=view&news_id=32dad5573f381a9c">mogyoro.hu</a></div><div align="center">forrás: Mai Nap - Cati</div><div align="center"></div><div align="justify"></div><div align="justify">Nemzetközi diplomáciai bonyodalmat okozhat egy török férfi és magyar élettársa vitája. A két fél azzal gyanúsítja a másikat, hogy elrabolta a három éves Szófiát. Az anya, Raskó Emese és a lány az ankarai magyar nagykövetség védelmét élvezi, a törökök elfogatóparancsot adtak ki ellene.A török sajtó komoly terjedelemben foglalkozik az üggyel, a Hürriyet nevű tekintélyes napilap megszólaltatta a jelentős birkózó pályafutással rendelkező apát, Faith Özbast. A német állampolgárságot is elnyert férfi elmondta, hat éve ismerkedett meg Emesével, a baba három éve született. A kis család egy ideig németországban élt, majd úgy döntöttek Ankarába költöznek. A férfi szerint ekkor kezdődtek a bajok, úgy véli, anyósa és apósa áshatta alá a nyugalmukat.A Hürriyet úgy tudja, a feleség Ankarában fogta Szofit és tízéves unokatestvérét, Büsra Gülert, és a repülőtérre ment, hogy hazaszökjön velük. Előtte azonban egyeztetett a magyar nagykövetséggel, hogy ha valami problémája adódik, segítsenek neki. A reptéren azonban a kis Büsra gyanút fogott, s kiabálni kezdett, hogy "ellopják az unokatestvéremet".A hatóságok elkezdtek vizsgálódni, kiderült, Szofi német útlevéllel érkezett az országba, így kétes a magyar papírok valódisága. Úgy döntöttek, a magyar nőt és a gyerekeket átkísérik a városi kapitányságra. Ám nem bilincselték meg Emesét, ő pedig kihasználta ezt, a reptér kijáratánál beugrott az ott várakozó, diplomata rendszámú magyar kocsiba és a követségre vitette magát.A meglepett férj panaszt tett az ügyészségen, ennek nyomán elfogatóparancsot adtak ki Raskó Emese ellen. Elmesélte azt is, hogy bár kisbabaként az édesanyja útlevelében szerepelt Szofi, később "átkerült" az övébe, hogy megkapja a német állampolgárságot, s így is történt. Sőt, a kislány töröknek is vallhatja magát, ami tovább bonyolítja az amúgy sem egyszerű helyzetet. A férfi nem érti, mi történt, mert jó társnak tartja Emesét, nem olyan embernek, aki csak úgy elrabolja a gyermekét. Ráadásul a nő ismét gyermeket vár, vagyis sok jel utalt arra, hogy minden rendben van a család körül.</div><div align="justify">
<br /></div><div align="justify"></div><div align="center"><strong><span style="font-size:130%;">Török apja vagy magyar anyja rabolta-e el Szofit?</span></strong></div><strong><span style="font-size:180%;"></span></strong><div align="justify">
<br /><strong>Elfogatóparancsot adott ki a török követség egy magyar nő és kislánya ellen, a török apa jelentette fel szerelmét gyermekrablásért</strong>
<br />
<br /></div><div align="justify"><em>Mai Nap alapján ma.hu 2004.08.25 14:56</em></div><div align="justify"></div><div align="justify">
<br />Raskó Emesére és hároméves Szofi lányára az ankarai magyar nagykövetség vigyáz, a törökök azonban elfogatóparancsot adtak ki ellenük, miután az állítólagos férj feljelentette feleségét gyermekrablás miatt. A házaspár hat évvel ezelőtt Németországban ismerkedett meg, három évvel ezelőtt pedig közös gyermekük is született. Arról ellentmondó hírek szállnak, hogy valójában összeházasodtak-e vagy csak élettársként élnek együtt. A jelentős birkózó-pályafutással rendelkező, német állampolgárságot is megszerzett apa, Fatih Özbas és kis családja egy ideig Németországban maradt, majd a férfi szülőhazájába költöztek.A török lapok beszámolója szerint a gondok ekkor kezdődtek, a férj úgy véli, anyósa és apósa okozta, hogy Emesével megromlott a viszony. Akármi is álljon a háttérben, néhány napja az asszony a pici gyerekkel és tíz éves unokatestvérével együtt elindult a repülőtérre, bár elővigyázatosságból előre értesítette az ottani magyar nagykövetséget, "gond esetére". A repülőtérig nem is volt semmi gond, ám ekkor a tíz éves gyermek elkezdett kiabálni: "ellopják az unokatestvéremet!".A helyi rendőrök azonnal őrizetbe vették a szökni készülő asszonyt, de szerencséjére a bilincset nem rakták a kezére, így egy óvatlan pillanatban gyermekével együtt az ott várakozó magyar diplomáciai autóba ugrott. A rendőröknek az tűnt fel, hogy Szofi német útlevéllel érkezett annak idején Törökországba, az anyánál lévő magyar papírokat ezért nem fogadták el eredetinek. Igaz, a férj elmondása szerint a kislányt eredetileg az édesanya útlevelébe jegyezték be, csak azért került át később az apa okmányaiba, mert így megkaphatta a német állampolgárságot is.Egyelőre senki nem tudja, kinek van igaza, és sokan azon is meglepődtek, hogy Emese ilyen lépésre szánta el magát, hisz eddig mindenki úgy tudta, minden rendben van a páros körül, ráadásul Emese újabb terhessége arra mutat, hogy valójában teljes a béke otthon. A nő viszont azt állítja, hogy valójában az apa rabolta el még Magyarországról a kislányt, ekkor indult útnak szüleivel együtt, hogy visszaszerezze gyermekét. Özbas azonban megakadályozta ezt, és elrejtette mindkettejük útlevelét - ekkor fordult segítségért Emese az ottani magyar követséghez. Az ügy pillanatnyilag egy helyben toporog, de egyes vélemények szerint akár nemzetközi diplomáciai bonyodalmat is okozhat, ha nem sikerül tisztázni, ki az, aki jogellenesen akarja magánál tartani a gyermeket. </div><div align="justify"></div><div align="justify"></div><div align="justify"><em><span style="color:#ff0000;">Efendi kommentárja:</span> Igazi gyöngyszem! Vajon melyik török követség adta ki az elfogatóparancsot? </em><em>A cikk megjelent <a href="http://www.ma.hu/page/cikk/ae/0/97492/1">ezen a linken</a>.</em></div><div align="justify"></div><div align="justify"><em></em></div><div align="center"><strong><span style="font-size:130%;">Gyerekszöktetés</span></strong></div><div align="center">
<br />Népszabadság, Doros Judit, 2004. augusztus 24. 00:00</div><div align="justify"></div><div align="justify">
<br />Az ankarai nagykövetségen keresett védelmet maga és gyermeke számára egy magyar állampolgárságú asszony.</div><div align="justify">
<br />A Szolnokon élő Raskó Emese három évvel ezelőtt szülte Szofi nevű lányát, akit szülei szolnoki, szandaszőlősi házában egyedül nevelt. Az apa - aki Törökországban közismert és népszerű ember, Fatih Özbas, egykori birkózó olimpikon és Európa bajnok, török-német állampolgár többször is meglátogatta itt a gyereket. Tavaly decemberben azonban elszöktette lányát, s Törökországba vitte. Az édesanya utánnuk ment, s megpróbálta rávenni a gyerek apját, hogy engedje őket haza. A férfi ebbe nem egyezett bele, ezért az édesanya immár a nagyszülők segítségével az elmúlt héten, hétfőn megpróbálta titokban, repülővel hazahozni a lányát. Miután a kislány magyar állampolgár, s ezt az édesanya dokumentumokkal is igazolta, az ankarai magyar nagykövetség kiadta számukra a hazatérési engedélyt, ám a repülőtéren a török vámosok nem engedték át a gyereket, arra hivatkozva, hogy a beutazásakor német útlevéllel érkezett az országba. Az édesanya, a kisgyerek, és a két nagyszülő ezért az ankarai magyar nagykövetség épületében kért menedéket.</div><div align="justify">
<br />A külügyminisztérium egyelőre nem nyilatkozik. Törökországi diplomáciai forrásokból megtudtuk: az édesanya a napokban egy helyi ügyvédet fogadott, s a hágai egyezményre hivatkozva kérte a gyerek jogállásának megállapítását.</div><div align="justify">
<br />Szolnokon, a szandaszőlősi házban tegnap senkit sem találtunk otthon. A szomszédok egyike elmondta: jól ismerik a családot, ám a kislány apját csak nagyon ritkán látták Szolnokon. A szomszédok egyébként úgy tudták: az édesapa nem török, hanem német származású.</div><div align="justify">
<br />A török lapjelentések más oldalról közelítik meg az eseményeket. A Yeni Safak azt írja, hogy egy Raskó Emese nevű magyar állampolgárságú nő, szülei segítségével, hamis papírokkal akarta elvinni Ankarából Szofi nevű kislányát, akinek török az apja. Özbas azt állítja, hogy az anya korábban lemondott a most három-éves kislány felügyeleti jogáról és az apánál hagyta Németországban. Az apa az újságon keresztül fordult a török illetékesekhez, ne hagyják, hogy a gyereket megszöktessék. A török lap az ankarai magyar nagykövetséget is megkérdezte, ott megerősítették, hogy a nő és a gyerek valóban a nagykövetségen tartózkodik, de hozzátették, hogy a férfi állításával ellentétben éppen az apa volt az, aki a gyereket jogellenesen külföldre vitte Magyarországról, ahol az anyjával élt.</div><div align="center">
<br /><span style="font-size:130%;"><strong>Háború egy gyerekért Ankarában</strong></span></div><div align="justify"></div><div align="center">Népszava, 2004. augusztus 21.</div><div align="justify">
<br />Török lapjelentés szerint egy magyar nő hamis papírokkal akarta kiszöktetni gyerekét Törökországból. A Yeni Safak pénteki számában azt írja, hogy egy Raskó Emese nevű magyar állampolgárságú nő, szülei segítségével, hamis papírokkal akarta elvinni Ankarából Szofi nevű kislányát, akinek török az apja. A férfi ismert ember, Fatih Özbas, egykori birkózó olimpikon és Európa bajnok. Özbas azt mondta a török napilapnak, hogy az ankarai magyar nagykövetség tettestárs az ügyben, mert segédkezett a kiszöktetésben, de a repülőtéren kiderült az úgymond csalás, mire a magyar diplomaták a nagyszülőket, a nőt és a gyereket a nagykövetségre menekítették. Özbas azt állítja, hogy az anya korábban lemondott a most három éves kislány felügyeleti jogáról és az apánál hagyta Németországban. A nő, aki most újra terhes ugyanettől a férfitől és a hatodik hónapban van, ragaszkodik lányához és nem akar Törökországban élni. A férfi viszont szívesen élne a családjával, akár Németországban is. Özbas az újságon keresztül fordult a török illetékesekhez, ne hagyják, hogy a gyereket hamis papírokkal megszöktessék. A török lap az ankarai magyar nagykövetséget is megkérdezte, ott megerősítették, hogy a nő és a gyerek valóban a nagykövetség épületében tartózkodik, de hozzátették, hogy a férfi állításával ellentétben éppen az apa volt az, aki a gyereket jogellenesen külföldre vitte Magyarországról, ahol az anyjával élt. Ezért Raskó Emese pert indított Törökországban a kislány hazavitele érdekében. A bírósági határozat megszületéséig a nagykövetség nem adja ki a gyereket - írja a török lap.
<br />
<br /></div><div align="center"><strong><span style="font-size:130%;">KI KORÁN KEL, ARANYAT LEL</span></strong></div><div align="center"><strong><span style="font-size:130%;"></span></strong></div><div align="center"><strong><span style="font-size:130%;">A BLOG OLVASÓI ERRE ÉBREDTEK 2004. AUGUSZTUS 20-ÁN</span></strong> </div><div align="center"></div>
<br />
<br /><div align="justify"></div><div align="justify">Egy török napilap mai számában Fatih Özbas volt birkozó világbajnok" szívszorító" történetét ismerteti Behcet Güngör tudósítása.</div><div align="justify">
<br />A Yeni Safak szerint Raskó Emese magyar állampolgár és szülei hamis papírokkal, az ankarai magyar nagykövetség aktív közreműködésével megpróbálták kiszöktetni Törökországból Özbas és Raskó Emese Szofi nevű kislányát. Az ankarai repülőtéren fény derült a csalásra és a magyar diplomaták a családot a nagykövetségre menekítették. A bírósági határozat megszületéséig a nagykövetség nem akarja kiadni a gyermeket. Özbas szerint édesanyja lemondott a 2001-ben született gyermek feletti felügyeleti jogáról és otthagyta őt Németországban. Az anya, aki 6 hónapos terhes, nem akar Törökországban élni, mondja Özbas, de ő szívesen élne családjával Németországban. Özbas felhívással fordult a török illetékesekhez: ne hagyják, hogy leányát hamis papírokkal megszöktessék.</div><div align="justify">
<br />A magyar követség annyit közölt az ügyről, hogy Fatih Özbas volt az, aki a kislányt jogellenesen külföldre vitte Magyarországról, ahol édesanyjával élt, ezért Raskó Emese pert indított Törökországban Szofi hazahozatala érdekében. A két magyar állampolgár a nagykövetségen tartózkodik, erősítette meg a lapnak nyilatkozó magyar diplomata.
<br />
<br /></div><div align="justify"></div><div align="justify">A Hürriyet napilap ugyancsak 20-án hoz jó nagy cikket az ügyről Kadir Ercan tollából ("Milli güresciye Macar es oyunu"). Nem tudom belinkelni, mivel a Hürriyet on-line kiadását hónapok óta nem sikerül elérnem. A cikk siralmas. (Török Macsó) Ercan logikája nagyon egyszerű: aki török, plusz világbajnok birkózó, annak mindig igaza van. Meg sem fordul a fejében, hogy másként is lehetne. Nem szívesen hivatkozom arra, hogy kedvelem a törököket - végül is ezért csináltam Törökország barátainak ezt a blogot. De ez a fogalmazvány Törökország egyik legfontosabb napilapjában annyira "török", annyira tükrözi az uralkodó mentalitást! Meg persze a török újságírás egy - nem is kis - részének szakmai színvonalát.Még ideírnám a Hürriyet impresszumából az alábbiakat: "Hürriyet, basin meslek ilkelerine uymaya söz vermistir", ami nagyjából annyit tesz, hogy "a lap tiszteletben tartja az újságírás szakmai kritériumait". Gondolom, ezt folyamatban képzelik el, amelynek most az elején tartanak. Mondjuk, eddig sem voltam lelkes olvasójuk. Persze, ez a fajta újságírás Magyarországon is virágzik.
<br />
<br />Aztán voltak még az ügyről televíziós híradások is. </div><div align="justify"></div><div align="justify"></div><div align="justify">A nagykövetség 21-én sajtóközleményt adott ki, ennek lényege, hogy a sajtó fordítva ül a bilin (jereváni rádió), van ügy, de nem Törökországban, hanem Magyarországon rabolták el a kislányt, az ügyben meg talán döntsön a török bíróság, ha már győzött a jogállam, addig meg a török sajtónak nem kellene a közvéleményt feleslegesen lázítania. A sajtóközlemény, ahogy láttam, sehol nem jelent meg, de ez nem Törökország-specifikus, már Hasek is leírta, ahogy Katz tábori lelkész belekiabál a lámpaernyőbe. Ettől még a követségnek igaza van, talán a független török bíróság, ha volna szíves dönteni, hogy hova kell adni a gyereket, akit állandó lakhelyéről, anyja engedélye és tudomása nélkül Törökországba vittek.
<br />
<br />Tanácsom azoknak, akik potenciális török férjjel/baráttal kapcsolatban készülnek fontos döntésekre: A szerelem óriási dolog, valóban elvileg mindegy, hogy a partner magyar, török, vagy más. De ténylegesen vannak civilizációs, kulturális és más különbségek. Ezeket meg kell ismerni a valóságban, még mielőtt az "életre szóló döntések" megszületnének. A Raskó-ügy csak csepp a tengerben.
<br />
<br /></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="left"><a href="http://www.yenisafak.com.tr/arsiv/2004/agustos/20/g10.html"><span style="font-size:130%;"><strong>Şampiyonun evlat drami</strong></span> </a></div><div align="left">A Yeni Safak cikke, 2004. augusztus 20.</div><div align="justify"></div>
+false
+
+
+
+
+
+Efendi
+
+2004-08-26T02:19:32+02:00
+2004-08-26T00:22:32Z
+2004-08-26T00:22:32Z
+
+tag:blogger.com,1999:blog-7074887.post-109347975242071079
+Könyvajánló - Germanus Gyula: A félhold fakó fényében
+
+
A világhírű orientalista útikalandjai - Magyar Elektronikus Könyvtár on-line
+
+
+
+false
+
+
+
+
+Efendi
+
+2004-08-23T13:00:00+02:00
+2005-08-03T12:20:58Z
+2004-08-13T12:54:10Z
+
+tag:blogger.com,1999:blog-7074887.post-109240165099005058
+Terrorizmus és más veszélyek - figyelmeztetések, tanácsok/Magyar állampolgárok érdekeinek védelme Törökországban és Észak-Cipruson
+<div align="justify"><span style="color:#ff0000;"></span></div><div align="justify"><strong><span style="color:#ff0000;">LEGFRISSEBB HÍR! </span></strong></div><div align="justify"></div><div align="justify"><strong><span style="color:#000000;">2002. aug. 2.</span></strong></div><div align="justify"><br /></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify">Kilenc személy, köztük egy francia turista könnyebb sérüléseket szenvedett két robbanás következtében Antalyában. A város egyik központi terén (az óratoronnyal szemben lévő szobor előtt) a szemetesek éppen a szemétkosarat ürítették, amikor az felrobbant. Nagyjából egyidejűleg a Dogu Garaji melletti fűszerbazár közelében szintén egy kuka robbant. Az antalyai rendőrfőnök helyettese szerint eddig nem találtak merényletre utaló jeleket. Azt sem tartotta kizártnak, hogy valamilyen aerosolos palack robbant fel a nagy hőségben. </div><div align="justify"><br /></div><div align="justify">Törökország turisták által látogatott vidékein a legsúlyosabb merényletet július közepén hajtották végre Kusadasiban: egy kisbusz felrobbantása következtében öt ember - közöttük egy ír és brit állampolgár - életét vesztette.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><strong><span style="color:#ff0000;">FIGYELEM!</span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong><br /></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;">IZMIRBEN 2005. AUGUSZTUS 11-21. KÖZÖTT KERÜL SOR A 23. UNIVERSIÁDÉRA, AMELYRE 8000 EGYETEMISTA SPORTOLÓ ÉS NAGYON SOK SZURKOLÓ ÉRKEZIK A VILÁG 180 ORSZÁGÁBÓL (MAGYARORSZÁG IS 83 VERSENYZŐVEL LESZ JELEN). IZMIR ÉS KÖRNYÉKE TEHÁT EBBEN AZ IDŐBEN ELÉG ZSÚFOLT LESZ, MÁSRÉSZT PEDIG TALÁN NAGYOBB LESZ A TERRORIZMUS VESZÉLYE. EZÉRT, HA NEM MUSZÁJ, NE UTAZZ IZMIRBE ÉS KÖRNYÉKÉRE EBBEN AZ IDŐPONTBAN, HA MEG OTT LESZEL, LÉGY ÓVATOS!</span></strong></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><strong>FONTOS VÁLTOZÁS! </strong></div><div align="justify"><br /></div><div align="justify"><strong><span style="color:#ff0000;">A magyar külügy július végén a fokozott biztonsági kockázatot rejtő országok közé sorolta Törökországot! </span></strong><strong><span style="color:#ff0000;"><a href="http://www.kulugyminiszterium.hu/kum/hu/jobb/Konzuli_informaciok/Utazas_kulfoldre/Biztonsagi_kockazatot_jelento_tersegek/">Link és tudnivalók ITT!</a></span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong><br /></div><div align="center"></div><div align="center"><strong><span style="color:#ff0000;"></span></strong></div><div align="center"><strong><span style="color:#ff0000;"></span></strong></div><div align="center"><strong><span style="color:#ff0000;"></span></strong></div><div align="center"><strong><span style="color:#ff0000;"></span></strong></div><div align="center"></div><div align="center"></div><div align="center"></div><div align="center"><span style="color:#ff0000;"><strong></strong></span></div><div align="justify"><span style="color:#ff0000;"><span style="color:#333333;">A magyar KÜM figyelmeztetése arra utal, hogy óvatosnak és körültekintőnek kell lenned, ha Törökországban turistáskodsz. </span></span><span style="color:#ff0000;">Elsősorban két veszély fenyegethet: az egyik a terrorizmus, a másik a földrengés.</span></div><div align="justify"><span style="color:#ff0000;"></span><br /></div><div align="justify"><span style="color:#ff0000;"></span></div><div align="justify"><span style="color:#ff0000;"></span></div><div align="justify"><span style="color:#ff0000;"></span></div><div align="justify"><span style="color:#ff0000;"><span style="color:#333333;">Ezért lehetőleg kerüld az amerikai, brit, izraeli, olasz rendezvényeket és érdekeltségeket, továbbá Tunceli, Van, Hakkari, Elazig, Sirnak tartományokat, valamint Diyarbakir tartomány vidéki részeit. <span style="color:#cc0000;">Ha Törökországban vagy, hallgasd a híreket és itt a blogon tájékozódj. Erre hívd fel azoknak a barátaidnak a figyelmét is, akik Törökországba készülnek!</span> </span><span style="color:#333333;">Éjszaka ne utazz kocsival. Baj esetén mindig tartsd magad az helyi hatóságok utasításaihoz. Ha igazoltatnak, tűrd megadással, tanúsíts együttműködő magatartást. <strong>Írd fel a törökországi magyar képviseletek koordinátáit, amelyeket itt a postban megtalálsz.</strong></span></span></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"><span style="color:#ff0000;"><span style="color:#333333;"></span></span></div><div align="justify"></div><div align="justify"><span style="color:#ff0000;"><strong></strong></span></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><span style="color:#000000;">Jó, ha tudod: a 2004 karácsonyi délkelet-ázsiai szökőárhoz hasonló méretű természeti katasztrófa (földrengés) Törökországban is <span style="color:#ff0000;">BÁRMIKOR</span> bekövetkezhet. Isztambul különösen veszélyeztetett, szinte biztosra jósolnak ott egy igen pusztító erejű - százezres/milliós nagyságrendű áldozattal járó - földrengést (pl. <a href="http://www.radio.hu/index.php?cikk_id=120068">Gerhard Berz</a> ). Ne bízz abban, hogy elkerül a baj: jóbarátom barátja néhány éve egy összeomlott törökországi szállodában lelte halálát. </span></div><div align="justify"><span style="color:#000000;"><br /></span></div><div align="justify"><strong><span style="color:#000000;"></span></strong></div><div align="justify"><strong><span style="color:#000000;"></span></strong></div><div align="justify"><strong><span style="color:#000000;">Hogyan tudsz a veszélyekre felkészülni?</span></strong></div><div align="justify"><br /></div><div align="justify"><strong></strong></div><div align="justify"><strong><span style="color:#000000;"></span></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong>Először is <span style="color:#ff0000;">regisztráltasd magad</span>, hogy tudják, adott esetben Téged is keresni kell!</strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong><span style="color:#000000;">2005. február 15-től válságkezelő központ működik a Magyar Külügyminisztériumban. Célja, hogy katasztrófák esetén az eddiginél jobban lehessen ellátni külföldön a magyar állampolgárok védelmét. A külügy honlapján lévő kérdőívet kitöltve megadhatod utazási célpontjaidat, a magad és a baj esetén értesítendő személyek adatait, elérhetőségét. Az ombudsman szerint a rendszer megfelel az adatvédelmi követelményeknek.</span></strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong><span style="color:#000000;"></span></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong><span style="color:#ff0000;">Kérlek, fogadd meg az alábbi tanácsaimat:</span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong><br /></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong><span style="color:#ff0000;">1. lépés:</span> <a href="http://www.deprem.gov.tr/linkhart.htm">EZEN A LINKEN</a> nézd meg, hogy törökországi tartózkodási helyed milyen színű övezetbe tartozik a térképen (a nagy térképen az egyes kormányzóságokra klikkelve részletesebb helyi térképet is láthatsz). Ha utazási célpontod piros vagy rózsaszín övezetben van (ezek a legveszélyesebbek), vagy ha átutazol Isztambulon, mindenképpen ajánlom a regisztrációt (ami a többi övezet esetén sem árt).</strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong><span style="color:#ff0000;">2. lépés:</span> <a href="http://www.kum.hu/konzulivedelem/">EZEN A LINKEN</a> töltsd ki a külügy kérdőívét, küldd el, majd nyomtasd ki, írd alá és add fel postán is a megadott címre (ez utóbbi egyelőre nyilván azért kell, mert az elektronikus aláírással kapcsolatos ügyek gyatrán mennek Magyarországon).</strong></div><div align="justify"><strong></strong><br /></div><div align="justify"><strong></strong></div><div align="justify"><strong><span style="color:#000000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;">3. lépés:</span> Olvasd el a lenti tanácsaimat arról, hogyan viselkedj földrengés esetén. Ha azokat ki tudod egészíteni, írj nekem <a href="mailto:efendi_online@yahoo.com">ERRE A CÍMRE</a> vagy ide a postra, hogy másoknak is segíts.</strong></div><div align="justify"><br /></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong><span style="color:#ff0000;">4. lépés:</span> Mielőtt elutazol Törökországba, a magyar külügyön kívül még valakinek (család, barát) hagyd meg ottani tartózkodási helyedet és elérhetőségedet, biztos, ami biztos.<br /></strong></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><span style="color:#ff0000;"><strong></strong></span></div><span style="color:#ff0000;"><em><div align="justify"><br /></em></span><span style="color:#333333;"></span></div><div align="justify"><span style="color:#cc0000;"></span></div><div align="center"><span style="font-size:130%;color:#cc0000;"><strong>FEKETE KRÓNIKA:</strong></span></div><div align="justify"><strong><span style="font-size:130%;color:#cc0000;"></span></strong></div><div align="center"><strong><span style="font-size:130%;color:#cc0000;">2005.</span></strong></div><strong><span style="color:#cc0000;"></span></strong><div align="justify"></div><div align="justify">Július 16-án<br /></div><div align="justify"><span style="color:#cc0000;"><strong></strong></span></div><span style="color:#cc0000;"><strong><div align="justify"><strong><span style="color:#000000;"><a href="http://index.hu/politika/bulvar/bulvarhirek/?main:2005.07.10.&228754">Balesetet szenvedett egy négyfős magyar család Törökországban</a> </span></strong><strong>2005. július 10.</strong></div><strong></strong><div align="justify"><br /></div><div align="justify"><strong></strong></div><div align="justify"><strong></strong></div><div align="justify"><strong><a href="http://index.hu/politika/kulhirek/?main:2005.07.10.&228749">Nincs magyar sérültje a törökországi robbantásnak</a> </strong><strong>2005. július 10.</strong></div><div align="justify"></div><div align="justify"></div><div align="justify">2005. április 30-án</strong> bombát helyeztek el Kusadasiban az Atatürk-szobornál, amely felrobbant és a helyszíni biztosítást végző rendőrök közül egyet megölt, négyet megsebesített.</span></div><div align="justify"><br /></div><div align="justify"><span style="color:#cc0000;"></span></div><div align="center"><span style="color:#cc0000;"><strong>2004.</strong></span></div><span style="color:#333333;"><span style="color:#cc0000;"></span></span><div align="justify"><br /></div><div align="justify"><span style="color:#333333;"><span style="color:#cc0000;">Okt. 4. Az al-Kaida merényleteket akar végrehajtani Törökországban. </span></span></div><div align="justify"><span style="color:#333333;"><span style="color:#3333ff;">LINK</span> <a href="http://index.hu/politika/kulhirek/?main:2004.10.04.&196090">magyar</a> <a href="http://www.zaman.com.tr/?bl=haberler&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;alt=&trh=20041004&hn=97816">török</a></span></div><div align="justify"></div><div align="justify"><span style="color:#333333;">A Zaman napilap híre szerint a merénylők célpontjai közé tartoznak a határátkelőhelyek, a repülőterek, valamint az Irakban katonákat állomásoztató koalíciós országok (tehát pl Magyarország) törökországi nagykövetségei és képviseletei. Kívülállónak nehéz megítélni, ez jelenti-e az eddigi fenyegetettség növekedését Törökországban, hiszen mostanra már mindenkit megfenyegettek, s sok országban (vagy azok csapatai, érdekeltségei ellen) voltak is terrorista akciók. Úgyhogy várjuk meg a további értesüléseket, csak semmi pánik, magyarok vagyunk.</span></div><div align="justify"><span style="color:#333333;"><span style="color:#cc0000;"></span></span><br /></div><div align="justify"><span style="color:#333333;"><span style="color:#cc0000;">Okt. 2. <span style="color:#333333;">Tegnap az al-Kaida az Egyesült Államokkal és szövetségeseivel - köztük Magyarországgal - szembeni szervezett ellenállásra hívta fel a muzulmán világot. (Link <a href="http://www.nol.hu/cikk/335131/">itt</a>.) Egy okkal több az óvatosságra, Törökországban is.</span> </span></span></div><div align="justify"><span style="color:#333333;"><span style="color:#cc0000;"></span></span></div><div align="justify"><span style="color:#333333;"><span style="color:#cc0000;">Okt. 5. <a href="http://www.nol.hu/cikk/335312/">Biztonsági jelzés a magyar külképviseleteknek </a></span></div><p align="justify"><span style="color:#333333;"><span style="color:#ff0000;">Szept. 29.</span> Késő délután, este háromnegyed 7 magasságában a Richter-skála szerint 4.5 erősségű földrengés volt Isztambulban, főleg Kartal, Pendik és Yakacik kerületekben lehetett érezni. A telefonvonalak ezt követően becsődöltek, Kartalban és Yakacikban az emberek pánikszerűen az utcára menekültek. A rengés epicentruma a Márvány-tenger térségében volt. Isztambulban jó pár éve számítanak igen pusztító erejű földrengésre, mivel a tektonikai törésvonalak arrafelé (is) húzódnak. Szörnyű, de a becslések szerint ilyen esetben az áldozatok számát százezrekre becsülik. Ezért is volt a pánik: évek óta minden héten azzal foglalkozik a török sajtó, hogy súlyos földrengés lesz Isztambulban, a felkészülés meg olyan, amilyen, így hát nem csoda, hogy mindenki bekattan, ha reng a föld. Ha a földrengésről többet akarsz tudni, nézd meg a <a href="http://torokorszag.lap.hu/">torokorszag.lap.hu oldalon</a> a "Földrengésveszély" blokkban a linkeket, mindent megtalálsz. Amúgy négyes nagyság körüli rengés minden héten van Törökországban. </span></p><p align="justify"><span style="color:#333333;">Szept. 28. Négy ún. hangbomba robbant: Isztambulban (Kadiköy), Adanában és Izmirben, mindhárom a brit HSBC bank fiókjánál, egy pedig Ankarában a Török-USA Kulturális Központnál a városközpontban. Főleg anyagi károk vannak. <strong>Tanácsom, mint korábban: kerüld Törökországban az USA, a brit és az izraeli érdekeltségeket</strong> (képviseletek, bankok - Citibank és HSBC, e két bank VIP-várója az isztambuli reptéren, konzulátusok, kulturális központok, rendezvények).</span></p><p align="justify"><span style="color:#333333;">Szept.20. <a href="http://haber.tnn.net/haber_detay.asp?ID=1042710&cat=ENG">Repeszgránát robbant egy rendőrautó alatt Mersinben</a> - 13 sebesült, többen súlyosan megsérültek. A rendőrség egy popkoncert biztonságára vigyázott. Az autó a koncert helyszínén kialakított biztonsági kordonon kívül volt. Az elmúlt hetekben két robbantás is volt Mersinben, az egyik a kormánypárt irodájánál, a másik egy banknál.</span></p><p align="justify"><span style="color:#333333;">Szept. 7. <a href="http://www.nol.hu/cikk/331835/">Mérgező rakomány süllyedt el a török partoknál</a> "Tilos búvárkodni, halászni vagy megenni az Iskenderuni öbölből származó halakat" (nálunk ciánnak, ott krómmal etetik a halakat, az emberi felelőtlenség azonban ugyanaz) <a href="http://www.bianet.org/2004/08/01_eng/news42820.htm">Mediterranean, Time Bomb!</a> </span></p><p align="justify"><span style="color:#333333;">Aug. 31. Fegyveres összeütközések Hakkariban Ha nem muszáj, ne utazz ebbe a tartományba. Inkább nézd meg a<a href="http://www.moonandstarsproject.org/fests/2004_filmfest_hakkaride_bir_mevsim.shtml"> "Hakkari'de bir mevsim"</a> (1982) c. zseniális filmet.</span></p><p align="justify"><span style="color:#333333;">Aug. 23. Robbanás Antalyában, az óvárosi yachtkikötőben: egy halott és egy sebesült. A robbanás oka ismeretlen, azt sem tudni, merénylet volt-e vagy sem.</p><div align="justify"><span style="color:#333333;">Aug. 15. </span><a href="http://index.hu/politika/bulvar/bomb0815/"><span style="color:#333333;">Bombariadó a Lufthansa és a THY Isztambul-Frankfurt járatán, két kényszerleszállás Budapesten!</span></a><span style="color:#333333;"> </span><span style="color:#333333;">Az amerikai Külügy figyelmeztetése: merényletek lehetségesek augusztus 15. körül.</span></div><div align="justify"><br /></div><div align="justify"><span style="color:#333333;">Aug. 11. Pokolgép két kis isztambuli szállodában - egy iráni halott, több külföldi turista megsebesült.</span></div></span><div align="justify"><br /></div></span><div align="justify"><span style="color:#cc0000;"><strong>3. Hogyan előzd meg a bajt és mit tegyél, ha már nyakig vagy benne?</strong></span> </div><div align="justify"><br /></div><div align="center"><strong><em>Az alábbiakat nyomtasd ki és vidd magaddal Törökországba!</em></strong></div><div align="justify"><br /></div><div align="justify">Törökország 81 tartománya két magyar konzuli kerületre van felosztva. Az egyikben a bajba jutott magyar állampolgárok problémáival az isztambuli magyar főkonzulátus, a másikban az ankarai magyar nagykövetség konzuli osztálya foglalkozik. Tehát ha problémád van, <strong>ahhoz a külképviselethez fordulj, amelyiknek a konzuli kerületében tartózkodsz.<br /></strong><br /></div><div align="justify"></div><div align="justify">Az isztambuli főkonzulátus konzuli kerületén belül három magyar tiszteletbeli konzul működik (Izmir, Tekirdag, Kütahya), mindegyiknek van konzuli kerülete (pár tartomány), amelyben illetékes eljárni a magyar állampolgárok érdekeinek védelmében. Tehát probléma esetén őket is keresheted, nemcsak az isztambuli főkonzulátust. Ráadásul ők közelebb is vannak földrajzilag, gyorsabban tudnak segíteni. </div><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">Isztambuli magyar főkonzulátus</span> <a href="http://www.kulugyminiszterium.hu/kum2005/Templates/wordsablon.aspx?NRMODE=Published&NRORIGINALURL=%2fkum%2fhu%2fbal%2fKepviseletek%2fMagyar_kulkepviseletek_kulfoldon%2fNagykovetsegek_es_Fokonzulatusok%2feuropa%2ehtm&NRNODEGUID=%7bD5E09E46-811C-4285-8D14-BF068F663154%7d&NRCACHEHINT=Guest#Torokorszag">link</a> <span style="color:#ff0000;">Figyelem! A cím és a telefonszámok megváltoztak!<br /></span></div><div align="justify"><span style="color:#ff0000;"><span style="color:#000000;">Új cím: METROCITY Millenium A Blok<br />Büyükdere Cad. No. 171.<br />1. LEVENT – 34330 ISTANBUL</span></span></div><div align="justify"><span style="color:#ff0000;"><span style="color:#000000;"></span></div></span><div align="justify">Tel. (90)(212) 344 1265, (90)(212) 344 1266, konzuli részleg: (90)(212) 344 1267 és (90)(212) 344 1268</div><div align="justify"></div><div align="justify">ügyelet: (90)533 375 8715<br />Fax: hivatal: (90)(212) 344 1270 konzuli: (90)(212) 344 1269<br />E-mail: <a href="mailto:huconsist@isnet.net.tr">huconsist@isnet.net.tr</a><br /><strong>konzuli kerület</strong> (tartományok): Afyon, Amasya, Antalya, Aydin, Balikesir, Bartin, Bayburt, Bilecik, Bolu, Burdur, Bursa, Canakkale, Cankiri, Corum, Denizli, Edirne, Eskisehir, Giresun, Gümüshane, Isparta, Icel (Mersin), Istanbul, Izmir, Karaman, Kastamonu, Kirklareli, Kocaeli, Konya, Kütahya, Manisa, Mugla, Ordu, Rize, Sakarya, Samsun, Sinop, Tekirdag, Tokat, Trabzon, Usak és Zonguldak.</div><div align="justify"><br />Az isztambuli magyar főkonzulátus konzuli kerületén belül működő három magyar tiszteletbeli konzul illetékességi területe:<br /><br /><span style="color:#ff0000;">Erdogan Erken tb. konzul, Tekirdag</span> <a href="http://www.kulugyminiszterium.hu/kum2005/Templates/wordsablon.aspx?NRMODE=Published&NRORIGINALURL=%2fkum%2fhu%2fbal%2fKepviseletek%2fMagyar_kulkepviseletek_kulfoldon%2fTiszteletbeli_konzulatusok%2feuropa%2ehtm&NRNODEGUID=%7bE18F34A9-D68A-4091-9B19-AC756BFBE88C%7d&NRCACHEHINT=Guest#Torokorszag">link</a> </div><div align="justify">telefon: (90)(282) 2630313, (90)(282) 2611549</div><div align="justify">fax: (90)(282) 2613560</div><div align="justify">cím: Macaristan Cumhuriyeti Fahri Konsoloslugu, Orduevi Caddesi Günaydin Apt. Insaniye Sokak No 21. Tekirdag<br /><strong>konzuli kerület</strong> (tartományok): Tekirdag, Edirne, Kirklareli<br /><br /><span style="color:#ff0000;">Erdal Keresteci tb. konzul, Izmir</span> <a href="http://www.kulugyminiszterium.hu/kum2005/Templates/wordsablon.aspx?NRMODE=Published&NRORIGINALURL=%2fkum%2fhu%2fbal%2fKepviseletek%2fMagyar_kulkepviseletek_kulfoldon%2fTiszteletbeli_konzulatusok%2feuropa%2ehtm&NRNODEGUID=%7bE18F34A9-D68A-4091-9B19-AC756BFBE88C%7d&NRCACHEHINT=Guest#Torokorszag">link</a> </div><div align="justify">telefon: (90)(232) 4212861</div><div align="justify">fax: (90)(232) 4219762</div><div align="justify">cím: Macaristan Cumhuriyeti Fahri Konsoloslugu, Atatürk Bulvari, Keresteci Apt. No: 222. Kat 5, Gündogdu - Izmir<br /><strong>konzuli kerület</strong> (tartományok): Izmir, Canakkale, Manisa, Aydin, Balikesir<br /><br /><span style="color:#ff0000;">Ismet Güral tb. konzul, Kütahya</span> <a href="http://www.kulugyminiszterium.hu/kum2005/Templates/wordsablon.aspx?NRMODE=Published&NRORIGINALURL=%2fkum%2fhu%2fbal%2fKepviseletek%2fMagyar_kulkepviseletek_kulfoldon%2fTiszteletbeli_konzulatusok%2feuropa%2ehtm&NRNODEGUID=%7bE18F34A9-D68A-4091-9B19-AC756BFBE88C%7d&NRCACHEHINT=Guest#Torokorszag">link</a> </div><div align="justify">telefon: (90)(274) 2250318, (90)(274)2250300</div><div align="justify">fax: (90)(274) 2250316</div><div align="justify">cím: Macaristan Cumhuriyeti Fahri Konsoloslugu, Güral Porselen Eskisehir Yolu 5. km, 43001 Kütahya<br /><strong>konzuli kerület</strong> (tartományok): Kütahya, Antalya, Eskisehir, Usak, Afyon, Denizli, Burdur, Isparta, Mugla<br /><br /><span style="color:#ff0000;">Ankarai magyar nagykövetség</span> <a href="http://www.kulugyminiszterium.hu/kum2005/Templates/wordsablon.aspx?NRMODE=Published&NRORIGINALURL=%2fkum%2fhu%2fbal%2fKepviseletek%2fMagyar_kulkepviseletek_kulfoldon%2fNagykovetsegek_es_Fokonzulatusok%2feuropa%2ehtm&NRNODEGUID=%7bD5E09E46-811C-4285-8D14-BF068F663154%7d&NRCACHEHINT=Guest#Torokorszag">link</a><br />Sancak Mahallesi, Kossuth Lajos (Kahire) Caddesi 2. Yildiz, Cankaya, Ankara<br />Tel. (90)(312) 4422273, (90)(312) 4422275 (konzuli osztály)<br />Fax: (90)(312) 4415049<br />E-mail: <a href="mailto:huembtur@isnet.net.tr">huembtur@isnet.net.tr</a><br /><strong>konzuli kerület</strong> (tartományok): minden tartomány, amely nincs felsorolva az Isztambuli Főkonzulátus konzuli kerületénél</div><div align="justify"><br /><span style="color:#ff0000;">Magyar Külügyminisztérium</span> telefonszáma: (1) 458 1000, <a href="http://www.kulugyminiszterium.hu/kum/hu/bal/">link</a></div><div align="justify"><span style="color:#ff0000;">Budapesti török nagykövetség</span> <a href="http://www.kulugyminiszterium.hu/kum2005/Templates/wordsablon.aspx?NRMODE=Published&NRORIGINALURL=%2fkum%2fhu%2fbal%2fKepviseletek%2fKulfoldi_kepviseletek_Magyarorszagon%2fNagykovetsegek_es_Fokonzulatusok%2feuropa%2ehtm&NRNODEGUID=%7b4700BBF5-51D2-42B4-A275-B8D085BDB6F3%7d&NRCACHEHINT=Guest#torokorszag">link</a> van <a href="http://www.turkishembassy.hu/">saját honlapja is itt</a>, de három éve fejlesztés alatt:)</div><p align="justify"></p><div align="center"><strong><span style="color:#cc0000;">Efendi tanácsai:</span></strong></div><div align="center"><strong><span style="color:#cc0000;"></span></strong></div><div align="left"><strong><span style="color:#ff0000;">- elutazás előtt</span></strong></div><p align="justify"><span style="color:#000000;">Tájékozódj a külügy honlapján a beutazási feltételekről <a href="http://www.kulugyminiszterium.hu/kum/hu/jobb/Konzuli_informaciok/Utazas_kulfoldre/Beutazasi_feltetelek/torokorszag.htm">(LINK ITT)</a> és az utazási tanácsokról <a href="http://www.kulugyminiszterium.hu/kum/hu/jobb/Konzuli_informaciok/Utazas_kulfoldre/Utazasi_tanacsok/torokorszag.htm">(LINK ITT)</a>, olvasd el az <a href="http://www.oek.hu/oek.web?nid=217&pid=1&to=852,751,752">OEK</a> és az <a href="http://efrirk.antsz.hu/portal/page?_pageid=240,1&_dad=portal&_schema=PORTAL">ÁNTSZ</a> javaslatait és jegyezd meg azokat.</span></p><p align="justify"><span style="color:#000000;">Köss baleset-és életbiztosítást - nem egy óriási kiadás, s adott esetben nagy segítség lehet. A halottszállítás - ha nincs biztosításod - milliókba kerül, nem lírában, forintban. Az autóra legyen zöld kártyád. A biztosítási kötvényt vidd magaddal az útra, olvasd el, hogy tudjad, hogyan is kihez kell fordulni baj esetén. </span></p><p align="justify"><span style="color:#000000;">Legyenek nálad a magyar képviseletek telefonszámai, s a veled utazó családtagjaidnak, barátaidnak is tudniuk kell, kit keressenek, ha bajba jutnak és Te nem tudsz segíteni éppen. Jó, ha mindegyiküknél van némi aprópénz telefonra. </span></p><p align="justify"><span style="color:#000000;">Készíts fénymásolatot az útiokmányaidról és vidd azokat is magaddal. </span></p><p align="justify"><span style="color:#000000;">Magyarországon maradó hozzátartozóid tudják, hogy hova utazol és szükség esetén hogyan lehet elérni. </span></p><p align="justify"><span style="color:#000000;">Ha hitelkártyád van, azt is tudd, milyen telefonszámon kell értesítened az azt kibocsátó bankot, ha netán elveszíted. Ha pénz nélkül maradsz a nyaralás alatt, otthonról gyorsan és megbízhatóan tudnak neked pénzt küldeni a Western Unionnal bárhová Törökországban. </span></p><p align="justify"><strong><span style="color:#ff0000;">- közlekedés</span></strong></p><p align="justify"><span style="color:#000000;">Közúti ellenőrzés alkalmával még a látszatát is kerüld annak, hogy nem akarsz megállni. Baleset esetén kövesd a török hatóságok utasításait, tanúsíts együttműködő magatartást. Ha alkoholt fogyasztottál, ne vezess autót, különben jó esélyed van, hogy Te vidd el a balhét akkor is, ha nem vagy hibás. A török közúti forgalomban való részvétel józanul is katasztrofális következményekkel járhat, a közlekedési morál igen gyenge. Készülj fel minden eshetőségre, légy defenzív vezető. </span></p><p align="justify"><strong><span style="color:#ff0000;">- rendőrség (előállítás, kihallgatás, őrizetbe vétel), útlevélelvesztés</span></strong></p><p align="justify">Köteles vagy igazolni személyazonosságodat és ennyi. Jogod van rögtön kérni, hogy értesítsék a magyar képviseletet, vagy az ügyvédedet. Nem vagy köteles vallomást tenni vagy bármit aláírni, amit ráadásul nem is értesz.</p><p align="justify">Ha elveszíted a papírjaidat, be kell jelentened azt a legközelebbi rendőrkapitányságon. Erről jegyzőkönyvet kapsz, s az kell az országból való kilépéshez. Magyar hazatérési igazolványt csak az ankarai nagykövetség és az isztambuli főkonzulátus tud neked adni, a tb. konzulok nem.</p><p align="justify"><span style="color:#ff0000;"><strong>- török ügyvéd</strong></span></p><p align="justify">Ha nagyobb bajban vagy, szükséged lehet valakire, aki kiigazodik a helyi jogi útvesztőkben és ezért időveszteség nélkül lépni képes, meg az sem baj, ha vannak kapcsolatai. Persze, pénzbe kerül, ezért mérlegeld, a költség mekkora haszonnal járhat számodra. Törökországban török ügyvéd kell! Vagy magad keresel ügyvédet (ha van rá időd), vagy kérheted a magyar külképviseletek segítségét. Ha a celládban van komputer és internet-hozzáférés, nekem is írhatsz az <a href="mailto:efendi_online@yahoo.com">efendi_online@yahoo.com</a> címre, tanácsaim abszolút ingyenesek.</p><p align="justify">Ha mond neked valamit az, hogy Raskó-ügy, akkor segítség lehet: Raskó Emese ügyvédje Dilek Midik török ügyvédnő (Ada Hukuk Bürosu azaz Ada Jogi Iroda) volt. Úgy tudom, jól látta el a dolgát, a szükséges empátiával és igyekezettel. Családjogi ügyek mellett más büntetőügyekhez is ért. A török mellett németül beszél. Megkeresheted (törökül és németül) a (90 312) 438 94 90) telefonszámon vagy a (90 312) 438 94 91 fax-számon. E-mail: <a href="mailto:adahukukburosu@yahoo.de">adahukukburosu@yahoo.de</a> vagy <a href="mailto:dilekmidik@mynet.com">dilekmidik@mynet.com</a>. </p><p align="justify"><strong><span style="color:#ff0000;">- terrorista támadás</span></strong></p><p align="justify"><span style="color:#000000;">Ha lehetséges, mielőbb hagyd el a merénylet helyszínét, persze, a hatóságokkal együttműködve, nehogy félreértsék. Ha csak terrorista fenyegetés, bombariadó van, akkor is sürgősen állj odébb. Nem a Te dolgod a probléma megoldása! Ne vesztegesd az időt, ne kiváncsiskodj. Fogd a családtagjaidat, s ha lehetséges, még az útiokmányaidat és a legfontosabb értékeidet is, és sürgősen tűnj el a helyszínről. </span></p><p align="justify"><span style="color:#ff0000;"><strong>- kábítószer, fegyver</strong></span></p><p align="justify">Felejtsd el. Ez az, amit igen szigorúan vesznek Törökországban (kábítószerfogyasztást is!). Ha kétségeid vannak, nézd meg a "Midnight express" c. filmet a török börtönviszonyokról. Senkinek ne vigyél sehova csomagot, ha nem nézted meg, mi van benne. Súlyos következményekkel jár a műkincsek csempészete is. </p><strong><span style="color:#ff0000;"><p align="justify"></span><span style="color:#ff0000;">- földrengés</span></strong></p><p align="justify">Törökország nagy része földrengésveszélyes övezet. Különösen Isztambul. <a href="http://www.foldrenges.hu/">A foldrenges.hu </a>szakértőinek néhány jótanácsa: </p><p align="justify">Mit tegyünk földrengés esetén? Amíg tart a rengés, ne hagyjuk el az épületet, illetve ne próbáljunk meg bejutni, ugyanis a legtöbb sérülés ilyenkor történik (gondoljunk csak pl. a ledőlő kéményekre, lehulló vakolatra és üvegcserepekre). Az épületeken belül igyekezzünk minél távolabb kerülni ablakoktól, üvegektől, könyvespolcoktól és olyan tárgyaktól, amelyek leesve sérülést okozhatnak. Lehetőség szerint keressünk menedéket az asztalok alatt vagy ajtókeretekbe állva. A szabadban kerüljünk minél messzebb az építményektől, fáktól, elektromos vezetékektől. A rengést követően zárjuk el a gáz és elektromos készülékeket és készüljünk fel az esetleg bekövetkező utórengésekre. Az erősen megsérült épületeket minél hamarabb el kell hagyni. </p><p align="justify"><span style="color:#cc0000;"><strong><span style="color:#ff0000;">- özönvíz</span> </strong></span></p><p align="justify"><span style="color:#333333;">Augusztus 16-17-én<strong> </strong>Isztambulban az évtized legnagyobb esőzése, szélorkán stb. volt. A hatóságok idejében szóltak, én is. Komoly fennakadások voltak a közlekedésben. Ilyenkor ne ülj autóba és kompra, ha parkolsz, a kocsit a város magasabban található részein hagyjad, s ne pincebárba menj mulatni :). </span><span style="color:#333333;">A képeket </span><a href="http://www.cnnturk.com/interactive/galeri.asp?PID=318&haberID=28571"><span style="color:#333333;">itt</span></a><span style="color:#333333;"> lehet megnézni. </span></p><p align="justify"><span style="color:#333333;">- </span><span style="color:#ff0000;"><strong>utazás Észak-Ciprusra</strong></span></p><p align="justify"><span style="color:#333333;">Feltétlenül olvasd el a <a href="http://www.kulugyminiszterium.hu/kum/hu/jobb/Konzuli_informaciok/Utazas_kulfoldre/Utazasi_tanacsok/ciprus.htm">magyar Külügy tájékoztatóját itt</a>. Abból kiderül, hogy EU-állampolgárként elvileg bármelyik oldalról átléphetsz a ciprusi görög-török tűzszüneti vonalon, s Észak-Ciprusra is beutazhatsz Törökországból, de <span style="color:#ff0000;">csak saját felelősségedre</span>. Ha Északon bajba kerülsz, a magyar hatóságok nem tudják az érdekeidet képviselni és védeni, mert Magyarország nem ismeri el az északi államalakulatot. Ez azt jelenti, hogy a magyar hatóságok Észak-Cipruson semmilyen - konzuli, családjogi, peres, biztosítási és más - ügyedben nem tudnak eljárni, tehát magadra vagy utalva. Ebből következik az is, hogy az észak-ciprusi hivatalos papírokat sem fogadják el Magyarországon.</span></p><p align="justify"><span style="color:#ff0000;"><strong>- védőoltások, személyes óvintézkedések</strong></span></p><p align="justify"><span style="color:#333333;"><a href="http://www.oek.hu/oek.web?to=750,852&nid=210&pid=1&lang=hun">Utazással kapcsolatos egészségügyi tájékoztatás, védőoltások</a></span></p><p align="justify"><span style="color:#333333;"><strong>Kit kereshetsz utazás előtt?</strong></span></p><p align="justify">Johan Béla Országos Epidemiológiai Központ Nemzetközi Oltóközpontja: 097 Gyáli u. 5-7 tel: 215-0756 </p><p align="justify">Nemzetközi utazásokkal kapcsolatban a Fővárosi és Megyei ÁNTSZ-ek oltóközpontjai is adnak felvilágosítást és oltást</p><p align="justify">Trópusi Ambulancia: Fővárosi Önkormányzat Szent László Kórház: 1097 Gyáli u. 5-7 tel: 455-8100 </p><p align="justify">Utazási Betegségek Klinikája (Trópusi szakambulancia)1135 Budapest XIII. Szabolcs u. 35.Tel: ; 3-409-149, Fax: 218-87-25 Levélcím: 1389 Budapest, Pf. 112 </p><p align="justify"><span style="color:#333333;"><a href="http://index.hu/politika/bulvar/hepat0903k/">Tömeges hepatitisz fertőzés Egyiptomban</a> - 2004. szeptember 3.</span></p><p align="justify"><span style="color:#333333;"><strong>Amit én javaslok:</strong></span></p><p align="justify"><span style="color:#333333;">Utazás előtt időben érdeklődj az aktuális helyzetről!</span></p><p align="justify"><span style="color:#333333;"><span style="color:#ff0000;">A hepatitis-A és B és a hastífusz elleni oltások hasznáról:</span> </span></p><p align="justify"><span style="color:#333333;">A hepatitis A (vírusos májgyulladás) vírusa emberi érintkezéssel (piszkos kéz) terjed. A fertőzöttek székletükkel ürítik a vírust. Az ételt előkészítő személyzet gyakran a járvány okozója, nagy tömegeket akkor érint, ha az ivóvíz rendszerbe szennyvíz kerül. A part menti vizekben tenyésztett tengeri állatokból készült nyers vagy nem eléggé átfőzött tengeri ételek, valamint a széklettel trágyázott földben termelt nyers zöldségek is fertőzöttek lehetnek.</span></p><p align="justify"><span style="color:#333333;">A hastífusz okozóje egy baktérium, melyet a fertőzöttek székletükben ürítenek. Széklettel szennyezett étel, tárgyak, piszkos kéz közvetíti egyik emberről a másikra. Ahol nagy a zsúfoltság, rossz a közműellátottság és az ivóvíz széklettel szennyeződik, ott járványos formában fordul elő.</span></p><p align="justify"><span style="color:#333333;">A hepatitis B ( vírusos májgyulladás) fertőzés történhet minimális mennyiségű vérzéssel járó véletlenszerű karcolás eredményeként, rosszul sterilizált fecskendő vagy injekciós tű közvetítésével, kábítószeresek körében fertőződhet a közös fecskendő, össze lehet szedni tetoválás, fülcimpa vagy orr lyukasztása, akupunktúra révén, főként pedig nemi úton (testnedvek). </span></p><p align="justify"><span style="color:#333333;">Szóval, esetleg beszerezheted ezt a három betegséget (is) Törökországban. </span></p><p align="justify"><span style="color:#333333;">Sokan ma sem használnak WC-papírt: a WC-kagylóból vagy a pottyantós WC-nél a falból kiáll egy kis "vízcsap", a dolgozó meg a bal kezével lemossa az alfelét, a papírt pedig csak szárítkozásra használja. (Ezért illetlenség fontosabb dolgot bal - azaz tisztátlan - kézzel csinálni.) Ez magánügy volna, baj akkor van, ha ő főzi az ebédedet.</span></p><p align="justify"><span style="color:#333333;">A javasolt védőoltások felvételét fontold meg, de még időben, hogy védettséged is legyen.</span></p><p align="justify"><span style="color:#333333;">Fogászati problémáidat oldd meg utazás előtt: a fogászati kezelés veszélyforrás!</span></p><p align="justify"><span style="color:#333333;">Ne igyál sehol vezetékes vizet vagy forrásvizet! Kb. 1/2 dollár egy másfél literes palackozott víz, az megbízható. Ha a szállodai minibárból veszel vizet, sokkal drágább lehet, ezért inkább spájzolj be a közértből. </span></p><p align="justify"><span style="color:#333333;">Gyakran moss kezet! A gyerekek is... </span></p><p align="justify"><span style="color:#333333;">Minden gyümölcsöt, zöldséget alaposan, folyó vízben többször moss meg! Nem muszáj Neomagnolt használni, a lényeg az, hogy jól mosd meg, akár meleg vízzel és mosogatószerrel is. Paradicsomot, paprikát, körtét, almát, szőlőt, dinnyét, ilyesmiket be lehet áztatni negyed-fél órára langyos, mosogatószeres vízbe. A földieper szerintem megtisztíthatatlan. </span></p><p align="justify"><span style="color:#333333;">Ha 4-5 csillagos szállodában kell eldöntened, eszel-e a salátabár kínálatából, szerintem a kockázat nem olyan nagy. Máshol azonban gondold meg, mit eszel. Gyanús helyeken tejes/majonézes/zöldséges ételek és italok fogyasztása nem ajánlott! Általában jól átsütött húsokat egyél! Kergemarhakór ellen nagyjából biztosítva vagy: a törökök már vagy nyolc éve nem engedélyezik a marhahús importját a veszélyesnek ítélt országokból.</span></p><p align="justify"><span style="color:#333333;">Utcán vagy olcsóbb helyeken ne egyél töltött kagylót! </span></p><p align="justify"><span style="color:#333333;">Vigyél magaddal széntablettát, de jól számítsd ki a mennyiségét. Ha bajban vagy, naponta 2-4 alkalommal kell benyalnod belőle 4-10 tablettát. Nehogy elindulj egy dobozzal! </span></p><p align="justify"><span style="color:#333333;">Ha több napig hasmenésed van és lázas vagy, menj orvoshoz, ki tudja, mit szedtél össze. Ha beteg voltál Törökországban, nem baj, ha hazatérésed után ismét megvizsgáltatod magadat. Ha utazás után, már otthon jönnének elő a bajaid, gondolj arra, hogy azokat esetleg Törökországban kaptad, s jó, ha ezt az orvosod is tudja.</span></p><p align="justify"><span style="color:#333333;">Természetesen nem ugyanannak a veszélynek van kitéve az, aki a leglátogatottabb török üdülőhelyekre csoporttal utazik, mint az, aki Törökország elmaradottabb térségeit keresi fel egyénileg.</span></p>
+false
+
+
+
+
+Efendi
+
+2004-08-21T16:00:13+02:00
+2004-11-07T18:41:13Z
+2004-08-21T14:00:38Z
+
+tag:blogger.com,1999:blog-7074887.post-109309683868521122
+Linkajánló
+
+
+Spybot és Spywareblaster - ingyenes védelem a kémprogramok és a rossz oldalak ellen, a kettő együtt a legjobb védelem (a Spybot magyar felülettel is rendelkezik), s kiválóan együttműködnek a Win XP második szervízcsomagjával is
+Skype - az általam ismert legjobb minőségű ingyenes internetes telefon - ha van hitelkártyád, arra is van lehetőséged, hogy igen olcsón a számítógépedről telefonálj vezetékes vagy mobil telefonszámra.
Erre a kitűnő könyvre már régóta fel akartam hívni a blog látogatóinak figyelmét. A Terebess Kiadó jóvoltából teljes szövege olvasható a fenti linken. Alapmű, mindenkinek, akit érdekel az iszlám misztika, a szúfizmus, vagy tudni akarja, ki volt Gül Baba és a bektási dervisek, kik az alevik Törökországban. A torokorszag.lap.hu oldalon is van néhány alevi link, még a konyha fejezetben is, s ajánlom, nézzétek meg az egyik legnagyobb török-német alevi honlapot is. Innen már csak egy ugrás Géczi János könyve a muszlim rózsakultuszról, valamint Ágoston Gábor és Sudár Balázs könyve Gül Babáról, a budai türbéről és a budapesti iszlám központ sok évtizedes tervéről.
+
+
+false
+
+
+
+
+Efendi
+
+2004-08-17T21:41:00+02:00
+2005-12-12T13:30:11Z
+2004-08-17T20:03:03Z
+
+tag:blogger.com,1999:blog-7074887.post-109277298380908508
+Orhan Pamuk: Hó
+<div align="justify">2005 karácsonyára megjelent végre magyarul is Orhan Pamuk: Hó c. regénye.</div><div align="justify"><br />"Minden élet, akár a hópehely: távolról egyformának tűnik, de rejtélyes erők egyszerivé és megismételhetetlenné formálják" - vallja Orhan Pamuk legújabb művében. Megismerhetjük-e a mások szívében lakozó szeretetet és fájdalmat? Megérthetjük-e azokat, akik oly mély gyötrelmeket és oly sok csalódást éltek át, hogy elképzelni sem tudjuk? Ezek a kérdések foglalkoztatják Kát, a költőt, amikor tíz év frankfurti távollét után, édesanyja temetésére hazatér Isztambulba.</div><div align="justify"><br />Elfogadja egy liberális lap felkérését, hogy oknyomozó riportot írjon a távoli Kars városában zajló különös eseményekről. Saját gyermekkori vágyainak a felidézése is vezérli: amint tudomást szerez róla, hogy elvált asszonyként ott él a gyönyörű Ipek, újra feltámadnak régen elfojtott érzései. Ka felkeresi a titokzatos öngyilkossági hullám áldozataként elhunyt fiatal lányok családtagjait és barátait, a helyi rendőrséget, az eseményeket megörökítő és megjósoló Határvárosi Hírlap szerkesztőjét, s közben lassan feltárul előtte a város valódi arca. Vallási és politikai viták mérgezik az emberek életét, a fennálló államhatalom és a növekvő iszlám párt befolyása alatt vallási fanatikusok szállnak szembe az egyházi reformok híveivel. Ka épp a Nemzeti Színházban szavalja egyik költeményét, amikor fegyveres zavargás tör ki, és a nézőtéren életét veszti az iszlám egyházi középiskola néhány tanulója. </div><div align="justify"> <br /></div><div align="justify">A tragédia rettenetes események sorát indítja el: letartóztatások, üldöztetések, gyilkosságok követik egymást, sokan a kurd nacionalistákat okolják, többen pedig politikai tőkét próbálnak kovácsolni a forrongásból. </div><div align="justify"> <br /></div><div align="justify">Az idén Béke-díjjal jutalmazott Pamuk regénye szülőhazájában heves indulatokat váltott ki. Az isztambuli ügyészség perbe fogta a népszerű írót, mivel arról beszélt, hogy Törökországban egymillió örményt és harmincezer kurdot gyilkoltak meg, amit az ország mindmáig nem ismert el hivatalosan. A Hó viszont egyértelmű kritikai és olvasói sikert aratott A méltatások mind hangsúlyozták, hogy a szerző - aki az irodalmi Nobel-díj egyik legerélyesebbnek tartott várományosa-elemi erővel ábrázolja a modern világ nyers brutalitását és elvakultságát, és minden szenzációéhes híradásnál felkavaróbban irányítja rá figyelmünket a kor és a térség aktuális problémáira,- írja ismertetőjében a <strong>Libri</strong>, ahol a könyv megvásárolható - <a href="http://www.fo.hu/cgi-bin/start.cgi/apps_fokusz/display/index.html?termek.id=92475&tag=2">LINK ITT</a> </div><div align="justify"> <br /></div><div align="justify">Pamuk bírósági pere egyébként december 16-án kezdődik Isztambulban, de már folyamatban van egy második per is ellene.</div><div align="justify"> <br /></div><div align="justify">Pamuk több könyve magyarul is megjelent, lásd lent a "Könyv- és cikkajánló" postban szereplő linkeket.</div><p>Orhan Pamukkal kapcsolatos linkek:<br /><a href="http://www.reviewsofbooks.com/snow/">1</a> <a href="http://www.laurahird.com/newreview/snow.html">2</a> <a href="http://www.nytimes.com/2004/08/15/books/review/STAR15.html">3</a> 4 <a href="http://www.randomhouse.com/catalog/display.pperl?0375406972">5</a> <a href="http://books.guardian.co.uk/departments/generalfiction/story/0,6000,1211858,00.html">6</a> <a href="http://www.theage.com.au/articles/2004/06/16/1087244973159.html?from=storyrhs&oneclick=true">7</a> <a href="http://www.pandora.com.tr/urun.asp?id=45550">8</a> 9 10 </p><p><a href="http://www.welt.de/data/2005/10/23/793247.html">Pamuk prangert Türkenfeindlichkeit in Europa an</a>, Die Welt, 2005. okt. 23.</p><p><em>A Pamukkal szembeni törökországi nacionalista támadások hátteréről:</em> </p><p><strong><a href="http://www.opendemocracy.net/arts-turkey/orhan_pamuk_2935.jsp">Murat Belge: “Love me, or leave me?”: the strange case of Orhan Pamuk</a></strong>, Open Democracy, 2005. okt. 18. </p><p><a href="http://hrw.org/english/docs/2005/09/29/turkey11872.htm">Case Against Novelist Threatens Freedom of Expression</a> (a Human Rights Watch levele a török igazságügyminiszterhez, 2005. szept. 29.)</p><p><br /></p>
+false
+
+
+
+
+Efendi
+
+2004-08-10T13:53:21+02:00
+2005-01-06T12:04:21Z
+2004-08-10T11:53:49Z
+
+tag:blogger.com,1999:blog-7074887.post-109213882988870112
+Ali Baba magyar-török sportrovata
+
+
+
+Sikerült a blogra csábítanunk sportrovat-szerkesztőként Ali Babát, a magyar és a török sport legavatottabb szakértőjét. Hosszan kellett kergetni a honoráriummal, de aztán nem tudott ellenállni és most már nem kíméli a blog sportszerető olvasóit. Lehet tőle kérdezni is, itt rögtön a post alján, a "comments" linkre kattintva. Újoncok előtte olvassák el a technikai tudnivalókat arról, hogyan lehet belebeszélni a blogba!
+
+ Néhány linkajánlat:
+
+
+
+Foci:
+
+
+Molnár Balázs az Ankaraspor focicsapatában
+Itt láthatod a Magyarországon működő egyesület programjait. Minden érdeklődőt szeretettel várnak.
+
+
+
+
+
+
+
+
+
+
+
+A Társaság 2006. évi rendezvényei:
+
+
+
+
+
+
+
+false
+
+
+
+
+Efendi
+
+2004-07-31T14:15:00+02:00
+2005-02-18T20:33:36Z
+2004-07-31T12:19:11Z
+
+tag:blogger.com,1999:blog-7074887.post-109127635161662448
+Mozi. Török filmrendezőkről és filmjeikről
+<div align="center"><img src="http://photos1.blogger.com/img/284/1037/400/headon.jpg" /><br /></div><p><br /><strong></strong> </p><p><strong><span style="font-size:130%;color:#ff0000;">FATIH AKIN</span></strong></p><p><strong>Fatih Akin</strong>, Németországban élő török rendező <strong>"Fallal szemben"</strong> (Duvara karsi/Head-on) című filmje nyerte 2004-ben az Arany Medvét, a berlini filmfesztivál fődíját, aztán az év európai filmje lett. Németországban vagy 800 ezer néző volt rá kiváncsi.</p><p align="justify">Most, hogy láttam Akin három filmjét, csak azt tudom ajánlani, hogy ti is nézzétek meg, érdemes. A "<strong>Solino</strong>" az első, a hatvanas években Németországban munkát kereső olasz házaspár és fiaik élete, remek film, leszámítva azt, hogy az utolsó negyede talán egy kicsit szimplifikált, sablonos. Ezzel együtt meg kell nézni, élvezetes. </p><p align="justify">A másik Akin-film a "<strong>Júliusban</strong>", ez is jó, emberséges és szórakoztató film, egy igazi török road-movie, ezt sem szabad kihagyni, szórakoztatóak a Magyarországon forgatott epizódok is. </p><p align="justify">A "<strong>Fallal szemben</strong>", a harmadik film, a legnagyobb Akin-mű, sokszor véres és kegyetlen, engem helyenként a Monica Bellucci-féle Irrévérsible-re emlékeztet. Látni kell!!</p><p align="justify">Akin (31) Németországban él, most forgatja a "Hídon" c. filmjét, a híd Isztambulban található - aki pedig rajta áll, fél lábbal Európában, féllel Ázsiában van. </p><p>Írások a rendezőről és filmjeiről: <a href="http://www.filmkultura.hu/2004/articles/reviews/berlin04.hu.html#top">1</a> <a href="http://www.filmkultura.iif.hu:8080/2001/articles/profiles/fatih.hu.html">2 </a><a href="http://www.c3.hu/scripta/filmvilag/0105/vagvolgyi.htm">3</a> <a href="http://www.magyar.film.hu/object.af617576-9f71-4bdb-b1f9-15d0fe084b3e.ivy">4</a> <a href="http://www.cinematrix.hu/hirveg.php?hir_id=12636">5 </a><a href="http://www.german-cinema.de/archive/film_view.php?film_id=993">6</a> 7 <a href="http://www.berlinale.de/en/service/preise/preise2004/f_main.html">8</a> <a href="http://www.nepszava.hu/default.asp?cCenter=article.asp&nID=692057">9</a> <a href="http://homepages.gold.ac.uk/turkishmigrantcinema/films/films/film4.htm">10</a> </p><p><strong><span style="font-size:130%;color:#ff0000;">DERVIS ZAIM</span></strong></p><p><p align="justify"><em><span style="color:#ff0000;"></span></em></p><strong>Dervis Zaim</strong> "Sár" (Camur/Mud) filmje 2003-ban megkapta az UNESCO különdíját a Velencei Filmfesztiválon. A rendező korábbi filmje, az "Elefántok és a fű" (Filler ve cimen) 2001-ben az Isztambuli Filmfesztiválon elnyerte a nemzetközi filmkritikusok különdíját.<p></p><p>Zaimról és filmjeiről: <a href="http://www.ujszo.com/clanok.asp?vyd=20030903&cl=67881">1</a> <a href="http://www.filmfestival.gr/2003/uk/process.php?movieid=706&eventid=128">2</a> <a href="http://www.filmfestival.gr/2003/uk/44filmfest_archive_item.rhtml?id=272">3</a> <a href="http://www.cineuropa.org/article_sp.asp?documentID=36781&treeID=458&lang=ing">4</a> <a href="http://www.turkishtime.org/20/print/119_1_en_p.asp">5</a> <a href="http://www.fipresci.org/festivals/archive/2004/valencia/valencia2004_kragic.htm">6</a> <a href="http://www.filmkultura.iif.hu:8080/articles/review/istan.hu.html">7</a> <a href="http://www.labiennale.org/en/cinema/60thmostra/catalogue/index.php?titolo=167&scregista=101">8</a> <a href="http://www.filmkultura.hu/2001/news/archive/fipresci.hu.html">9</a> 10 </p><p><strong><span style="font-size:130%;color:#ff0000;">AYSE POLAT</span></strong></p><p><strong>En Garde - Ayse Polat filmje a Locarnoi Filmfesztiválon</strong></p><p align="justify">Folytatódik a Németországban élő török rendezők sikersorozata. Ayse Polat (34) török-kurd származású filmrendező második játékfilmje a 2004. augusztus 14-én véget ért fesztiválon Ezüst Leopárdot kapott, vagyis a második legjobb film díját nyerte el. A film két női főszereplője Pinar Erincin és Maria Kwiatkowsky, mindketten megkapták a legjobb női alakítás díját. A film 2004. őszén kerül a mozikba, remélhetőleg Magyarországon is.<br /><br />Linkek: <a href="http://2004.pardo.ch/pardo/director.do?lang=e&id=79555">1</a> <a href="http://www.welt.de/data/2004/08/16/319858.html">2</a> <a href="http://www.german-cinema.de/archive/film_person_view.php?film_person_id=400">3</a> <a href="http://www.milliyet.com.tr/2004/08/04/pazar/paz02.html">4</a> <a href="http://www.radikal.com.tr/haber.php?haberno=125107&tarih=16/08/2004">5</a> <a href="http://movies2.nytimes.com/gst/movies/movie.html?v_id=251910">6</a> <a href="http://www.x-verleih.de/x-verleih/neu.jsp?news_id=145">7</a> <a href="http://www.radikal.com.tr/veriler/2004/08/16/haber_125108.php">8</a> 9 10</p><p align="justify"><span style="font-size:130%;color:#ff0000;"><strong>NEM TÖRÖK RENDEZŐK FILMJEI, DE SZÉPEK ÉS KAPCSOLÓDNAK A TÖRÖKÖKHÖZ: </strong></span></p><p><strong><span style="color:#ff0000;">Monsieur Ibrahim és a Korán virágai: </span></strong> a filmről <a href="http://www.premierpark.hu/cikk.php?cikk=1008076">itt</a> és <strong><a href="http://www.suttogo.freeblog.hu/">Suttogó blogján</a></strong> olvashatsz.</p><p></p>
+false
+
+
+
+
+Efendi
+
+2004-07-26T09:54:15+02:00
+2004-11-16T22:34:15Z
+2004-07-26T08:07:56Z
+
+tag:blogger.com,1999:blog-7074887.post-109082927691028782
+Turkológus és hungarológus hallgatók fóruma / Magyar irodalom törökül/Török nyelv és néprajz
+
+
+
Ebbe a postba elsősorban a magyarországi és a törökországi turkológus, illetve hungarológus hallgatók, a végzettek, meg a képzés iránt érdeklődők üzeneteit és véleményét várjuk. Ide írjon az is, akit érdekel a török nyelv és a néprajz és erről szeretne véleményt cserélni. A postban hívnánk fel a figyelmet a Törökországban megjelenő magyar, vagy Magyarországgal kapcsolatos irodalmi művekre is.
+
+
+
+
+false
+
+
+
+
+Efendi
+
+2004-07-23T23:44:00+02:00
+2005-04-27T22:21:52Z
+2004-07-23T22:03:17Z
+
+tag:blogger.com,1999:blog-7074887.post-109062019774217023
+A blog fényképalbuma / Török fotóművészek lapjai
+<div align="center"><a title="Photo Sharing" href="http://www.flickr.com/photos/efendi/6446684/"><img height="375" alt="Girls" src="http://photos7.flickr.com/6446684_9f4346ddb7.jpg" width="500" /></a> </div><br /><div align="justify"></div><div align="justify"><span style="color:#ff0000;"><strong>Ezen a poston az alábbi linkeket találod:</strong></span></div><span style="color:#ff0000;"><strong></strong></span><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;"><strong>I. Efendi fotóalbumai </strong></span></div><div align="justify"><span style="color:#ff0000;"><strong>II. Efendi és a Flickr tagjainak közös albumai</strong></span></div><div align="justify"><strong><span style="color:#ff0000;">III. E blog látogatóinak közös fényképalbuma</span></strong></div><div align="justify"><strong><span style="color:#ff0000;">IV. Török fotóművészek képei és linkjei</span></strong></div><div align="justify"><strong><span style="color:#ff0000;">V. A Magyarországon kapható fotóalbumok Törökországról</span></strong></div><div align="justify"><strong><span style="color:#ff0000;">----------------------------------------------</span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><span style="color:#ff0000;"><strong>I. Efendi fotóalbumai (FLICKR + BLOG): </strong></span></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong><br /></div><div align="justify"></div><div align="justify">A főbejárat itt van (<a href="http://www.flickr.com/photos/efendi/">EZEN A LINKEN</a>), de közvetlenül beléphetsz az egyes albumokba is, így:</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Ha az alábbi albumok nevére klikkelsz, akkor a Flickren lévő albumot láthatod, ha pedig az album neve melletti "POST" linkre kattintasz, az ezen a blogon lévő albumokra vonatkozó magyar nyelvű szöveges ismertetőket olvashatod:</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"><a href="http://pg.photos.yahoo.com/ph/efendi_online/album?.dir=cc76&.src=ph&store=&prodid=&.done=http%3a//pg.photos.yahoo.com/ph/efendi_online/my_photos"></a></div><div align="justify">1. <a href="http://www.flickr.com/photos/efendi/sets/94506/">Akyaka/Gökovai-öböl</a> + <a href="http://torokorszag.blogspot.com/2004/06/akyaka-gkova_06.html">POST</a></div><div align="justify">2. <a href="http://www.flickr.com/photos/efendi/sets/33375/">Ankara</a></div><div align="justify">3. <a href="http://www.flickr.com/photos/efendi/sets/44391/">Ani örmény romváros</a> + <a href="http://torokorszag.blogspot.com/2004/07/ani.html">POST</a> </div><div align="justify">4. <a href="http://www.flickr.com/photos/efendi/sets/44896/">Antakya/Hatay/Antioche</a> </div><div align="justify">5. <a href="http://www.flickr.com/photos/efendi/sets/36935/">Beypazari</a></div><div align="justify">6. <a href="http://www.flickr.com/photos/efendi/sets/148879/">Bursa</a></div><div align="justify">7. <a href="http://www.flickr.com/photos/efendi/sets/93456/">Cica</a></div><div align="justify">8. <a href="http://www.flickr.com/photos/efendi/sets/144691/">Diyarbakir</a></div><div align="justify">9. <a href="http://www.flickr.com/photos/efendi/sets/146094/">Fekete-tenger</a><br />10. <a href="http://www.flickr.com/photos/efendi/sets/33743/">Mardin/Tur Abdin/Mor Gabriel szír ortodox kolostor </a>+ <a href="http://torokorszag.blogspot.com/2004/09/mardintur-abdinmor-gabriel-szr-ortodox.html">POST</a></div><div align="justify">11. <a href="http://www.flickr.com/photos/efendi/sets/44187/">Musa Dagh/Vakifli örmény falu</a></div><div align="justify">12. <a href="http://www.flickr.com/photos/efendi/sets/43825/">Osmaniye/Karatepe-Aslantas</a></div><div align="justify">13. <a href="http://www.flickr.com/photos/efendi/sets/43823/">Osmaniye/Kastabala-Hierapolis</a></div><div align="justify">14. <a href="http://www.flickr.com/photos/efendi/sets/94542/">Safranbolu/Yörük köyü</a> + <a href="http://torokorszag.blogspot.com/2004/09/safranboluyrk-ky.html">POST</a></div><div align="justify">15. <a href="http://www.flickr.com/photos/efendi/sets/48040/">Seleukia ad Piera/Antioche</a></div><div align="justify">16. <a href="http://www.flickr.com/photos/efendi/sets/144685/">Tatvan</a></div><div align="justify">17. <a href="http://www.flickr.com/photos/efendi/sets/146102/">Török tájak</a></div><div align="justify">18. <a href="http://www.flickr.com/photos/efendi/sets/39284/">Törökország köztéri szobrai</a> + <a href="http://torokorszag.blogspot.com/2004/11/trkorszg-szobrai.html">POST</a></div><div align="justify">19. <a href="http://www.flickr.com/photos/efendi/sets/33540/">Van-tó és Akdamar</a> + <a href="http://torokorszag.blogspot.com/2004/06/van-t.html">POST</a></div><div align="justify">20. <a href="http://www.flickr.com/photos/efendi/sets/153444/">Török blog</a></div><div align="justify">21. <a href="http://www.flickr.com/photos/efendi/sets/159314/">Kossuth Múzeum, Kütahya</a></div><div align="justify"> </div><div align="justify">... meg azóta jó pár új album, a<span style="color:#ff0000;"> teljes lista</span> <a href="http://www.flickr.com/photos/efendi/sets/">EZEN A LINKEN</a> van.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Ha keresőszavakkal akarsz megtalálni valamit az én fotóim között, a keresőszavakat <a href="http://www.flickr.com/photos/efendi/tags/">EZEN A LINKEN</a> láthatod, csak rájuk kell klikkelni. </div><div align="justify"><br /></div><div align="justify"><a href="http://www.flickr.com/photos/search/">EZEN A LINKEN</a> pedig fényképeket kereshetsz pár millió fotó között.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">Van a Flickren a nevem alatt néhány album, amelyekben remek fotók vannak, de azok nem az enyémek, hanem az alábbi partnereké:</div><div align="justify"><br /></div><div align="justify"></div><div align="justify">20. <a href="http://www.flickr.com/photos/efendi/sets/35155/">Gülbahar</a></div><div align="justify">21. <a href="http://www.flickr.com/photos/efendi/sets/37015/">Aysun</a></div><div align="justify">22. <a href="http://www.flickr.com/photos/efendi/sets/44848/">Miray</a></div><div align="justify"><br /></div><div align="justify"><a href="http://www.flickr.com/photos/efendi/sets/33375/"></a></div><div align="justify"><strong><span style="color:#ff0000;">II. Efendi és a Flickr tagjainak közös albumai ("group pools") - ezek egyre bővülnek a világ minden részéből érkező fotókkal:</span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong><br /></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><span style="color:#000000;">1. <a href="http://www.flickr.com/groups/efendi_online/">Törökország</a></span></div><div align="justify">2. <a href="http://www.flickr.com/groups/alevibektasi/">Alevi-Bektashi Heritage:</a> Az alevi-bektási és a szúfi hagyományok Törökországban</div><div align="justify">3. <a href="http://www.flickr.com/groups/aramaicheritage/">Aramaic heritage:</a> Az arámi (süryani) örökség és a jelen Törökországban</div><div align="justify">4. <a href="http://www.flickr.com/groups/ataturk/">Atatürk</a></div><div align="justify">5. <a href="http://www.flickr.com/groups/byzantium/">Byzantium:</a> Bizánci emlékek</div><div align="justify">6. <a href="http://www.flickr.com/groups/kurdistan/">Kurds, Kurdistan, Tirkiye:</a> Kurdok Törökországban</div><div align="justify">7. <a href="http://www.flickr.com/groups/hungariansinturkey/">Hungarians in Turkey and in the Ottoman Empire: </a>Magyar emlékek Törökországban</div><div align="justify">8. <a href="http://www.flickr.com/groups/jewishheritageinturkey/">Jewish heritage in Turkey:</a> A törökországi zsidóság</div><div align="justify">9. <a href="http://www.flickr.com/groups/ottomanarchitecture/">Ottoman architecture: </a>Az Oszmán Birodalom öröksége</div><div align="justify">10. <a href="http://www.flickr.com/groups/people_of_turkey/">People of Turkey: </a>Törökországi emberek</div><div align="justify">11. <a href="http://www.flickr.com/groups/turkish_tiles_and_ceramics/">Art of Turkish Tiles and Ceramics:</a> Török csempe és kerámia</div><div align="justify">12. <a href="http://www.flickr.com/groups/turkish_landscape/">Turkish landscape:</a> Törökországi tájak</div><div align="justify">13. <a href="http://www.flickr.com/groups/ancient_mosaics_in_turkey/">Ancient Mosaics in Turkey:</a> Római és bizánci mozaikok Törökországban</div><div align="justify">14. <a href="http://www.flickr.com/groups/biblical_turkey/">Biblical sites in Turkey: </a>Bibliai emlékek </div><div align="justify">15. <a href="http://www.flickr.com/groups/hittites/">Hittites:</a> Hettita emlékek Törökországban</div><div align="justify">16. <a href="http://www.flickr.com/groups/armenianheritage/">Armenian heritage</a>: Örmények Törökországban</div><div align="justify">17. <a href="http://www.flickr.com/groups/turkish_cat/">Turkish Cat</a>: Az Angora- és a Van-macskák</div><div align="justify">18. <a href="http://www.flickr.com/groups/evil_eye/">Evil Eye - Nazar boncuk</a></div><div align="justify"></div><div align="justify"></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"><span style="color:#ff0000;">Ha kedved van beszállni, regisztrálj a Flickren vagy keress engem (tanácsért)!</span></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;">Néhány más érdekes pool:</span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><strong><span style="color:#ff0000;"></span></strong></div><div align="justify"><span style="color:#000000;">- <a href="http://www.flickr.com/groups/hungary/">Magyarország</a></span></div><div align="justify">- <a href="http://www.flickr.com/groups/islam/">Muslim cultures</a> (ez kiváló!)</div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify">... és van még sok-sok más, a Flickrnek most, 2005 márciusában kb. 300 ezer tagja van.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"><strong><span style="color:#ff0000;">III. Török fotóművészek linkjei: egyik jobb, mint a másik</span></strong></div><div align="justify"><br /></div><div align="justify"><strong></strong></div><div align="justify"><a href="http://www.naziftopcuoglu.com/photographs.html"><strong>Nazif Topcuoglu</strong></a><strong> - </strong>jó volna Magyarországon is látni</div><div align="justify"><a href="http://www.fsk.org.tr/portfolyo.shtml">Fotograf Sanati Kurumu</a> alkotóinak albumai</div><div align="justify"><a href="http://www.fotograf.net/portfolyo/index.html">fotograf.net</a> alkotói albumai </div><div align="justify"><a href="http://www.sihirlitur.com/">Haluk Özözlü</a></div><div align="justify"><a href="http://www.pozitifnegatif.com/sergi.php">pozitifnegatif</a> fotógalériája</div><div align="justify"><a href="http://www.tr-fotografmuzesi.org/index.htm">Balikesiri fotómúzeum</a></div><div align="justify"><a href="http://www.ifsak.org.tr/sergiler.php">IFSAK (isztambuli amatörfotósok) virtuális kiállítása</a></div><div align="justify"><a href="http://www.fotografevi.com/galeri/default.asp">Fotografevi alkotóinak albumai</a></div><div align="justify"><a href="http://www.fototrek.com/galeri.html">Fototrek Fotograf Merkezi</a></div><div align="justify"><a href="http://www.fotografvakfi.org/turkce/">Fotograf Vakfi</a></div><div align="justify"><a href="http://www.fotografya.gen.tr/index.html">Fotografya</a></div><div align="justify"><a href="http://www.fotografdergisi.com/">Fotograf Dergisi</a></div><div align="justify"><a href="http://www.photodigital.com.tr/">PhotoDigital</a></div><div align="justify"><a href="http://www.photoline.com.tr">photoline</a></div><div align="justify"></div><div align="justify"></div><strong></strong><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;">Igazi unikum: <a href="http://www.gerty.ncl.ac.uk/home/">"The Gertrude Bell Project"</a> - 7000 fotó az 1900-1918. közötti évekböl - Öfelsége titkosügynökének fotói.</span></div><span style="color:#ff0000;"></span><div align="justify"><br /></div><div align="justify"><span style="color:#ff0000;"><strong>IV. A blog közös fényképalbuma</strong></span></div><div align="justify"><br /></div><div align="justify">Ha van olyan fotótok, amelyet szívesen felraknátok egy közös és nyilvános fényképalbumba, küldjétek el a <a href="mailto:efendi_online@yahoo.com">címemre</a>. Zsürizés, díjazás nincs, mindenki nyer. </div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><span style="color:#000000;">Két dolgot küldjetek el a fotóval: egy <strong>szerzői (ál)nevet</strong>, hogy tudjuk, kinek köszönjük a műélvezetet és a <strong>kép címét. </strong>Mindenkinek saját, névre szóló albuma lesz, s abba később újabb fényképeket küldhetsz.</span></div><div align="justify"><br /></div><div align="justify">Csak JPEG formátumú képek tölthetők fel. Ha nem ebben a formátumban küldöd a képeidet, az sem baj, küldd úgy, ahogy van, majd átalakítom. Bármennyi képet küldhetsz, a szolgáltató elfogadja.</div><div align="justify"><br /></div><div align="justify">Fontos: két mailt küldjél - az egyikben legyenek a képek, a másikban pár kísérő szó, mivel az előbbit a képek letöltése után kitörlöm, hogy ne dagassza a postafiókomat, az utóbbi viszont megmarad nálam az e-mail címeddel.<br /><br />A közös album <a href="http://pg.photos.yahoo.com/ph/efendi_online/my_photos">erről a linkről</a> látható, nyilvános, bárhonnan a netről elérhető.</div><div align="justify"><br /></div><div align="justify"></div><div align="justify"></div><div align="justify"><strong><span style="color:#ff0000;">A közös fotóalbum eddigi szerzői:</span></strong></div><strong></strong><div align="justify"><br /></div><div align="justify"><strong></strong></div><div align="justify"></div><div align="justify"><a href="http://pg.photos.yahoo.com/ph/efendi_online/album?.dir=c6aa&.src=ph&store=&prodid=&.done=http%3a//pg.photos.yahoo.com/ph/efendi_online/my_photos"></a></div><div align="justify"><a href="http://pg.photos.yahoo.com/ph/efendi_online/album?.dir=747e&.src=ph&store=&prodid=&.done=http%3a//pg.photos.yahoo.com/ph/efendi_online/my_photos">Mandula</a></div><div align="justify"><a href="http://pg.photos.yahoo.com/ph/efendi_online/album?.dir=bcda&.src=ph&store=&prodid=&.done=http%3a//pg.photos.yahoo.com/ph/efendi_online/my_photos">Katica</a></div><div align="justify"></div><div align="justify"><a href="http://pg.photos.yahoo.com/ph/efendi_online/album?.dir=d2c5&.src=ph&store=&prodid=&.done=http%3a//pg.photos.yahoo.com/ph/efendi_online/my_photos">Nilüfer</a></div><div align="justify"><a href="http://pg.photos.yahoo.com/ph/efendi_online/album?.dir=mail&.src=ph&store=&prodid=&.done=http%3a//pg.photos.yahoo.com/ph/efendi_online/my_photos">Ildi</a></div><div align="justify"><a href="http://pg.photos.yahoo.com/ph/efendi_online/album?.dir=a93f&.src=ph&store=&prodid=&.done=http%3a//pg.photos.yahoo.com/ph/efendi_online/my_photos">Ani</a></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><strong><span style="color:#ff0000;">V. A Magyarországon kapható fotóalbumok Törökországról</span></strong></div><div align="justify"><br /></div><div align="justify"></div><div align="justify"><a href="http://www.fotohaz.hu/fotoskonyvek/fotoalbumok/fotoalbumlista11.html">Fotóház.hu</a></div>
+false
+
+
+
+
+Efendi
+
+2004-07-20T22:47:28+02:00
+2005-01-08T22:44:28Z
+2004-07-20T21:10:04Z
+
+tag:blogger.com,1999:blog-7074887.post-109035780443281477
+Ani
+<div align="center"><img src="http://photos1.blogger.com/img/284/1037/400/ani12.jpg" /> </div><div align="center"><span style="font-size:85%;"><em>Ani/A Megváltó temploma</em></span></div><div align="justify">
<br />Az egykori örmény Bagratida Királyság fővárosa, 48 km-re Karstól, közvetlenül a török-örmény határon. A várost i.e. 350-300-ban alapították, s az a X-XI. században élte fénykorát. Ekkor mintegy százezer lakosa volt, s csak Bagdad, Konstantinápoly és Kairó volt hozzá mérhető. A legendák szerinti ezer templomból mára tíz maradt, jórészt romokban. Itt található az első anatóliai szeldzsuk mecset is. A hely fantasztikus! Már nem kell kérni a helyi hatóságok engedélyét a belépéshez és a fényképezéshez, rá kell szánni azonban fél napot a bejárásához. </div><div align="justify">
<br /></div><div align="justify">A helyszínen készített 55 fotómat <a href="http://www.flickr.com/photos/efendi/sets/44391/">EZEN A LINKEN</a> lehet megnézni. Nagyon ajánlom az <a href="http://www.virtualani.freeserve.co.uk/">Anit bemutató honlap</a> felkeresését, amelynek egyik <a href="http://www.network54.com/Forum/146256"><span style="color:#3333ff;">szegletében</span></a> törökök, örmények és mások vitatkoznak még egy ideig a múltról és a jelenről.</div><div align="justify">
<br /></div><div align="justify"></div><div align="justify"><span style="color:#ff0000;">Ajánlom még:</span></div><div align="justify">
<br /></div><div align="justify"></div><div align="justify"><strong>HORVÁTH ZOLTÁN GYÖRGY - GONDOS BÉLA: Ani, az örmény főváros és magyar vonatkozásai</strong> ("A szépséges templomokat igen gazdag fotóanyaggal ismertetjük, azonban magyar szempontból az is különlegesség, hogy Ani építészete és részben díszítőművészete megdöbbentő hasonlóságot mutat a korai romanika egyes jellegzetes magyar emlékeivel, amelyekről könyvünkben - az analógiák bemutatására különös hangsúlyt fektetve - szintén sok-sok fotó látható.") <a href="http://kethollos.hu/termek.php?op=look&kat=konyv_ostort&id=30">LINK ITT</a></div>
+false
+
+
+
+
+Efendi
+
+2004-06-06T17:15:54+02:00
+2004-11-05T23:22:54Z
+2004-06-06T15:20:52Z
+
+tag:blogger.com,1999:blog-7074887.post-108653525251305274
+Van-tó
+<div align="center"><a href="http://photos1.blogger.com/img/284/1037/1024/akdamar08_sphan%20dagi.jpg"><img style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 2px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://photos1.blogger.com/img/284/1037/400/akdamar08_sphan%20dagi.jpg" border="0" /></a>
<br /><em><span style="font-size:85%;">A Van-tó és a Süphan hegy</span></em></div><em><span style="font-size:85%;"><div align="left">
<br /></span></em>A Van-tóról és az Akdamar-szigeten található X. századi örmény templomról készült <a href="http://pg.photos.yahoo.com/ph/efendi_online/album?.dir=cc76&.src=ph&store=&prodid=&.done=http%3a//pg.photos.yahoo.com/ph/efendi_online/my_photos">fotóimat itt lehet megnézni.</a> További információk és fényképek <a href="http://www.zlm-concept.org/voyages/turquie/van.html">itt</a> (francia) és <a href="http://www.geocities.com/Heartland/Bluffs/3583/page4.html">itt</a> (angol). Ez utóbbin gyönyörű háttérzene hallható. A Van-macskákat keresd a <a href="http://torokorszag.lap.hu/">torokorszag.lap.hu</a> oldalon! </div>
+false
+
+
+
+
+Efendi
+
+2004-06-06T14:54:14+02:00
+2004-11-05T23:26:14Z
+2004-06-06T13:17:55Z
+
+tag:blogger.com,1999:blog-7074887.post-108652787537598330
+Akyaka-Gökova
+<div align="center"><a href="http://photos1.blogger.com/img/284/1037/1024/gkovai%20bl1.jpg"><img style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 2px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://photos1.blogger.com/img/284/1037/400/gkovai%20bl1.jpg" border="0" /></a>
<br /><em><span style="font-size:85%;">A Gökovai-öböl</span></em> </div>
<br /><div align="justify">Az utazóknak ajánlom Akyakát a Gökovai-öbölben (Égei-tenger). Autóval Muglától <a href="http://www.turkuaz-guide.net/index.html?turkuaz-info.html">30 km-re</a> van Marmaris irányában. Az öböl és a természet csodálatos, sok más hellyel szemben a part nincs beépítve. Saját fotóimat <a href="http://pg.photos.yahoo.com/ph/efendi_online/album?.dir=e40c&.src=ph&store=&prodid=&.done=http%3a//pg.photos.yahoo.com/ph/efendi_online/my_photos">ebben az albumban</a> lehet megnézni. További információkat <a href="http://www.turkuaz-guide.net/index.html?gokova.html">ezen</a> és <a href="http://www.akyaka.org/index_eng.htm">ezen</a> a linken találhattok. Feltétlenül nézzétek meg a <a href="http://www.guide-martine.com/aegean10.asp">Guide Martine</a>-t (angolul és franciául) az Akyakából elérhető látnivalókról - Bodrumtól Marmarison keresztül Fethiyéig, s persze a <a href="http://torokorszag.lap.hu/">torokorszag.lap.hu</a> idevágó részeit is! </div><div align="center">
<br /><a href="http://photos1.blogger.com/img/284/1037/1024/club%20coban%20macskaja2.jpg"><img style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 2px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://photos1.blogger.com/img/284/1037/400/club%20coban%20macskaja2.jpg" border="0" /></a>
<br /><em><span style="font-size:85%;">Akyaka cicája</span></em> </div>
+false
+
+
+
+
+Efendi
+
+2004-06-05T23:54:34+02:00
+2004-11-10T21:37:34Z
+2004-06-05T21:58:04Z
+
+tag:blogger.com,1999:blog-7074887.post-108647268460070492
+Könyv- és cikkajánló/Új megjelenések
+<div align="justify">Írjátok meg, mit és hol olvashatunk magyarul Törökországról és a törökökről - könyv, újság, folyóirat, világháló és más. Figyelemfelhívás és kritika egyaránt üdvözlendő. Inkább az újdonságokat kellene ismertetni itt <em>(comments),</em> mert sok minden, ami korábban megjelent, a <a href="http://torokorszag.lap.hu/">torokorszag.lap.hu </a>oldalon részletezve megtalálható.
<br />
<br /></div><div align="justify"></div><div align="center"><span style="color:#ff0000;">A könyveket az alábbi helyeken keresheted (elég beírni, hogy "török"):</span> </div><div align="center"><a href="http://www.konyvkereso.hu/netacgi/konyvker/index.pl?ln=M&fm=idxm.htm">Könyvkereső</a></div><div align="center"><a href="http://www.libri.hu/">Libri</a> </div><div align="center"><a href="http://www.fokuszonline.hu/cgi-bin/htmlos.cgi/44330.3.11095277856316695007">Fókusz</a>
<br /></div><span style="font-size:85%;"><p><span style="color:#ff0000;">ÚJ!</span></p><p>"VAN, AKIT SÓLYOM KARMOL MEG" - modern török elbeszélések (fordította Tasnádi Edit)</p><p>
<br />Azeri Folksongs. At the Fountained of Music - Sipos János ~ Akadémiai Kiadó Rt. , 2004 ~ 8800 Ft</p><p>Bartók nyomában Anatóliában. Hasonló magyar és török dallamok - Sipos János ~ Balassi Kiadó Kft. , 2002 ~ 2000 Ft </p><p>In the wake of Bartók in Anatolia - Bartók nyomában Anatóliában (angol ny.) - Sipos János ~ Európai Folklór Intézet , 2000 ~ 3500 Ft ( külföldi ár: 45 USD ) </p><p>In the wake of Bartók in Anatolia. Similar Hungarian and Turkish folk tunes (angol ny.) (CD) - Sipos János ~ Európai Folklór Intézet , 2001 ~ 2500 Ft </p><p>Kazakh Folksongs from the Two Ends of the Steppe + CD - Sipos János ~ Akadémiai Kiadó Rt. , 2001 ~ 7120 Ft ( külföldi ár: 69 USD ) </p><p>Török népzene 2. - Sipos János ~ MTA Zenetudományi Intézet , 1995 </p><p>ORHAN PAMUK: </span><span style="font-size:85%;">A FEHÉR KASTÉLY
<br /></span><span style="font-size:85%;">ORHAN PAMUK: </span><span style="font-size:85%;">AZ ÚJ ÉLET </span>
<br /><span style="font-size:85%;">"A PASA FIA MEG A VILÁGSZÉPE" - török népmesék
<br /></span><span style="font-size:85%;">"A SÁMÁNHIT EMLÉKEI - TÖRÖK NÉPEK"
<br /></span><span style="font-size:85%;">KÚNOS IGNÁC: TÖRÖK NÉPKÖLTÉS</span></p><div align="center"><div align="justify"><div align="justify"><div align="justify"><span style="font-size:85%;">ROSTOVÁNYI ZSOLT: AZ ISZLÁM VILÁG ÉS A NYUGAT </span></div><div align="justify"><span style="font-size:85%;">TAKÁTS SÁNDOR: BAJVÍVÓ MAGYAROK - képek a török világból</span></div><div align="justify"><span style="font-size:85%;">LENGYEL DÉNES: MONDÁK A TÖRÖK VILÁGBÓL ÉS A KURUC KORBÓL</span></div><div align="justify"><span style="font-size:85%;">FLESCH ISTVÁN: ATATÜRK ÉLETE ÉS KORA</span></div><div align="justify"><span style="font-size:85%;"><span style="font-size:85%;">BUDAPEST</span><span style="font-size:85%;"> törökül</span></span></div><div align="justify"><span style="font-size:85%;">A 100 legjobb török recept</span></div><div align="justify"><span style="font-size:85%;">Adorján Imre: Török mesék</span></div><div align="justify"><span style="font-size:85%;">Csáki Éva: Magyar-török és török-magyar szótár</span></div><div align="justify"><span style="font-size:85%;">Fodor Pál: A szultán és az aranyalma</span></div><div align="justify"><span style="font-size:85%;">Benderli-Gülen-Kakuk-Tasnádi: Új magyar-török szótár</span></div><div align="justify"><span style="font-size:85%;">Kenessey Mária: Török nyelvtan és társalgás</span></div><div align="justify"><span style="font-size:85%;">Török kapd elő</span></div><div align="justify"><span style="font-size:85%;">Klein Magda: Magyarok török földön</span></div><div align="center">
<br /><span style="font-size:85%;color:#000000;"><strong>On-line olvasható:</strong></span></div><strong><span style="font-size:85%;"><div align="center">
<br /></div></span></strong><div align="justify"><strong><a href="http://mek.oszk.hu/01800/01885/html/"><span style="font-size:85%;color:#3366ff;">Kereszt és félhold - a török kor Magyarországon (1526 - 1699)</span></a></strong><span style="font-size:85%;"><span style="color:#009900;"> </span>Magyar Elektronikus Könyvtár <span style="color:#ff0000;"><span style="color:#000000;">(ajánlom mindenkinek, kitűnő olvasmány, nagyon szép felület, számos kifejezés kereshető benne)</span> </span></span></div><div align="justify"></div><div align="justify"></div><div align="justify"><span style="font-size:85%;">
<br />... valamint a <strong><a href="http://www.terebess.hu/keletkultinfo/index.html">Terebess Kiadó Virtuális Könyvtárában</a></strong> található számos könyv.</span></div></div></div></div>
+false
+
+
+
+
+Efendi
+
+2004-06-05T16:39:58+02:00
+2004-08-01T01:36:58Z
+2004-06-05T15:52:08Z
+
+tag:blogger.com,1999:blog-7074887.post-108645072815145528
+Lemezajánló
+<div align="justify"><strong><span style="font-size:85%;">1. Cay Taylan "SU" </span><a href="http://www.mancs.hu/index.php?gcPage=/public/hirek/szam&id=400&mode2=1&mode3=1"><span style="font-size:85%;">kritika:</span></a></strong><span style="font-size:85%;"> Magyar Narancs </span><a href="http://www.soulseduction.com/common/item_detail.php?ItemID=134019"><span style="font-size:85%;">belehallgat</span></a><span style="font-size:85%;">: soulseduction.com
<br />
<br /><strong>2. Arasinda Együttes: <a href="http://www.arasinda.hu/lemez.htm">BÁRKI IS LÉGY</a></strong> </span></div><span style="font-size:85%;"><div align="center"></span>
<br /><a href="http://photos1.blogger.com/img/284/1037/640/arasinda2.jpg"><img style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 2px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://photos1.blogger.com/img/284/1037/320/arasinda2.jpg" border="0" /></a> </div><div align="justify">
<br /><strong><span style="font-size:85%;">3. Kobzos Kiss Tamás - Erdal Salikoglu: </span><a href="http://www.etnofon.hu/kobzosszivetekben.htm"><span style="font-size:85%;">SZÍVETEKBEN ŐRIZZETEK</span></a></strong>
<br />
<br /></div><div align="center"><a href="http://photos1.blogger.com/img/284/1037/640/kobzos2.jpg"><img style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 2px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://photos1.blogger.com/img/284/1037/320/kobzos2.jpg" border="0" /></a>
<br /></div><div align="justify"><strong><span style="font-size:85%;">
<br />4. Sipos János: </span><a href="http://www.hungaroton.hu/classic/eng_info.php?info=1235&vez=f"><span style="font-size:85%;">FOLK TUNES FROM THE TWO SIDES OF THE CAUCASUS</span></a></strong><span style="font-size:85%;"> - karacsáj,balkár, avar és azeri népzene. A török zenei gyűjteményekről magyarul olvasható </span><a href="http://www.mmhir.hu/org/dir065/keleti/keletifolap.html"><span style="font-size:85%;">itt</span></a><span style="font-size:85%;">
<br />
<br /><strong>5. Kecskés együttes: <a href="http://www.hungaroton.hu/classic/info.php?info=585&vez=k">RÉGI TÖRÖK ZENE EURÓPÁBAN</a></strong> (XVI-XVIII. század)
<br />
<br /><strong>6. Cemal Resid Rey: <a href="http://www.hungaroton.hu/classic/info.php?info=1191&vez=r">LE CONQUÉRANT (FATIH) INSTANTANÉS SCENES TURQUES</a></strong> - vezényel: Cem Mansur
<br />
<br /><strong>7. Cemal Resid Rey- Ahmet Adnan Saygun: <a href="http://www.hungaroton.hu/classic/info.php?info=407&vez=r">TÖRÖK ZENEKARI MŰVEK</a></strong>- Isin Güyer (mezzoszoprán)- vezényel: Hikmet Simsek
<br />
<br /><strong>8. Necil Kazim Akses:<a href="http://www.hungaroton.hu/classic/info.php?info=18&vez=a">KAMARAZENE TÖRÖKORSZÁGBÓL</a> 2.</strong>- Yücelen Vonósnégyes
<br />
<br /><strong>9. Bartók Béla <a href="http://www.hungaroton.hu/classic/info.php?info=989&vez=b">TÖRÖK NÉPZENEI GYŰJTÉSE</a></strong> Bartók írása gyűjtőútjáról magyarul </span><a href="http://www.terebess.hu/keletkultinfo/bartok.html"><span style="font-size:85%;">itt</span></a><span style="font-size:85%;">
<br />
<br /><strong>10. Ulvi Cemal Erkin: <a href="http://www.hungaroton.hu/classic/info.php?info=162&vez=e">MŰVEK SZÓLÓ ZONGORÁRA</a></strong> - Verda Erman (zongora)
<br />
<br /><strong>11. Ulvi Cemal Erkin - Nevit Kodalli: <a href="http://www.hungaroton.hu/classic/info.php?info=164&vez=e">ZONGORAÖTÖS (Erkin) 11 ZONGORADARAB (Erkin) ZONGORAÖTÖS (Kodalli)- </a></strong>Deniz Arman Gelenbe (zongora)- Haydn Vonósnégyes
<br />
<br /><strong>12. Ulvi Cemal Erkin - Nevit Kodalli - Ilhan Usmanbas: <a href="http://www.hungaroton.hu/classic/info.php?info=600&vez=e">KAMARAZENE TÖRÖKORSZÁGBÓL</a> 1.</strong> - Ankarai Vonósnégyes
<br />
<br /><strong>13. Ulvi Cemal Erkin - Ahmed Adnan Saygun: <a href="http://www.hungaroton.hu/classic/info.php?info=445&vez=e">VONÓSNÉGYESEK</a></strong> - Anatóliai Vonósnégyes
<br />
<br /><strong>14. Yunus Emre - Mevlana (Mev­lá­ná Dzseláleddín Rúmí): <a href="http://www.hungaroton.hu/classic/info.php?info=719&vez=e">YUNUS EMRE ÉS MEVLANA DALAI</a></strong> - Esin Afsar (ének)
<br />
<br /><strong>15. Ahmed Adnan Saygun: <a href="http://www.hungaroton.hu/classic/keresfull.php?info=446&kereses=Saygun">YUNUS EMRE ORATÓRIUM</a></strong> - vezényel: Hikmet Simsek </span><a href="http://mssf.bilkent.edu.tr/eng/adnan.htm"><span style="font-size:85%;">olvasnivaló Saygunról itt </span></a><span style="font-size:85%;">és </span><a href="http://www.lauder.hu/~judarchivum/tanart/tmaria/sziren.doc"><span style="font-size:85%;">itt magyarul</span></a><span style="font-size:85%;">
<br />
<br /><strong>16. <a href="http://www.hungaroton.hu/classic/keresfull.php?info=576&kereses=Saygun">KÂTIBIM - VARIÁCIÓK EGY RÉGI ISZTAMBULI NÉPDALRA</a></strong> (Ruhi Ayangil, Ahmed Adnan Saygun, Cemal Resid Rey)
<br />
<br /><strong>17. Sipos János: <a href="http://www.folkline.hu/kiadvanyok/index.html">BARTÓK NYOMÁBAN ANATÓLIÁBAN - 2.</a></strong> megvásárolható </span><a href="http://www.fono.hu/?page=records&content=katalogus_item&lang=hu&id=114"><span style="font-size:85%;">itt</span></a><span style="font-size:85%;">, az anatóliai gyűjtésről a szerző írása </span><a href="http://www.mmhir.hu/org/dir065/keleti/anatolia.html"><span style="font-size:85%;">itt</span></a><span style="font-size:85%;">
<br />
<br /><strong>18. <a href="http://www.dvdworld.co.uk/product_body.asp?pf_id=72518">Mozart in Turkey</a></strong> - DVD, 2004
<br /></div></span>
+false
+
+
+
+
+Efendi
+
+2004-05-31T15:49:18+02:00
+2004-07-23T20:44:18Z
+2004-05-31T13:55:04Z
+
+tag:blogger.com,1999:blog-7074887.post-108601170439486596
+Terebess Ázsia E-Tár
+
+
+
Minden látogatónak ajánlom, hogy nézzen be a Terebess Kiadó virtuális könyvtárába, amely hihetetlenül gazdag, magyar nyelvű anyagot tartalmaz Törökország történelméről, kultúrájáról, az iszlámról, a magyar-török kapcsolatokról, de a török konyháról is.
+
+
+
+
+
+false
+
+
+
+
+Efendi
+
+2004-05-26T14:14:00+02:00
+2005-03-14T18:01:20Z
+2004-05-26T12:19:36Z
+
+tag:blogger.com,1999:blog-7074887.post-108557397683092146
+Törökországi magyar programok/Törökországban élő magyarok találkozóhelye
+<div align="center"><span style="color:#ff0000;">FONTOS:</span> <strong><a href="http://www.election.hu/ovi/hu/2004-92tv.html">A KÜLFÖLDÖN TÖRTÉNŐ SZAVAZÁS ÁTMENETI SZABÁLYAI</a></strong></div><div align="center"><br /></div><div align="center"></div><div align="center"></div><div align="center"><img src="http://photos1.blogger.com/img/284/1037/400/PICT0044.jpg" /></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="justify"></div><div align="center"><br /></div><div align="justify"></div><div align="justify"></div><div align="center"><span style="font-size:130%;color:#ff0000;">2004.</span></div><span style="font-size:130%;color:#ff0000;"></span><div align="justify"><br /><span style="color:#000000;"><strong>2004. szept. 20-26.</strong> V. <a href="http://www.tdk.gov.tr/kurultay/program.html">Türk Dili Kurultayi</a>, Baski Imre, Csáki Éva, Hazai György, Kincses Nagy Éva, Tasnádi Edit és Tatár Mária előadása, helyszín: Ankara, Baskent Ögretmen Evi (Besevler) </div></span><p><strong>2004. október 9.</strong> A Rajkó Zenekar fellépése a <a href="http://www.merfest.org/home.asp">Mersini Nemzetközi Fesztiválon</a> (2004. szept. 30. - okt. 12.). Helyszín: Mersin, Kizkalesi, 19.00 óra, bővebbet a fesztivál linkjén</p><p><strong>2004. okt. 4-10.</strong> <a href="http://www.altinportakal.org.tr/anasayfa.php?Sayfa=kisafilm&Altlink=19">Altin Portakal Nemzetközi Rövidfilm Fesztivál</a>, magyarok versenyfilmjei: Groó Diana: Vahsi Hayal (Wild Imagination), Ujj Mészáros Károly: Lastik Adam (The Rubberman), Kincses Réka: Emir (The Order)</p><p align="justify"><strong>2004. okt. 1-31.</strong> Nimród Antal: <a href="http://www.filmkultura.hu/2003/articles/films/kontroll.hu.html">Kontroll</a> c. cannes-i díjnyertes filmje bemutatásra kerül a törökországi <a href="http://www.europeanfilmfestival.com/index.php?ln=tr">Európai Filmfesztiválon</a> (okt. 1-9. Ankara, okt. 8-14. Bursa, okt. 15-21. Izmir, okt. 22-24. Kars, okt. 25-28. Van, okt. 29-31. Kayseri). Pontos időpontot a fesztivál linkjén lehet találni. Az ankarai vetítés: okt. 4. 19.15 - Megapol (Kizilay).</p><p align="justify"><strong>2004. okt. 18-19.</strong> Magyar filmek az Ankarai Egyetemen (Dil ve Tarih-Cografya Fakültesi, Farabi Salonu) + Halil Tuncer fotókiállítása Magyarországról.Program: okt.18. 18.00 óra megnyitó, majd Herendi Gábor <a href="http://www.valamiamerika.hu/">Valami Amerika</a> c. filmjének vetítése. Okt. 19. 18.00 órakor Fábri Zoltán <a href="http://filmtortenet.editor.ivy.hu/object.5cfbe70a-2cd9-4c43-87cb-2c1748db1271.ivy">Magyarok</a> c. filmje. Mindkét film török feliratos! Belépés szabad, meghívó, jegy nincs.</p><p align="justify"><strong>2004. nov. 18-30.</strong> <a href="http://www.izmirkisafilm.org/en/">Izmiri Nemzetközi Rövidfilm Fesztivál </a>- magyar résztvevőkkel</p><p align="justify"><strong>2004. nov. 23.</strong> <a href="http://www.osmaniye.gov.tr/anasayfa.html">Osmaniye Folklórfesztivál</a> - Bartók Béla 1936-os ottani gyűjtéséről előadást tart Tasnádi Edit, találkozhattok Kobzos Kiss Tamással és Sezgin Türk török filmrendezővel, aki elviszi "Bartók, Törökország, 1936.." c. filmjét. Jövőre talán Bartók-emlékház is lesz Osmaniyében.</p><p align="justify"><strong><span style="color:#ff0000;">Helyszínváltozás!</span> 2004. november 27.</strong> A <a href="http://www.jazzpression.hu">Jazzpression</a> fellépése az <a href="http://www.acd.org.tr/#">ankarai dzsesszfesztiválon</a> (nov. 25. -dec. 5.) helyszín: Faces Live Club, Ankara, a koncert kezdete 22.00 óra. <strong>Nov. 27-én reggel 8-kor</strong> a zenekar bemutatkozik a TV8 csatornán Erkan Tan müsorában. Jegyek a <a href="http://www.biletix.com/">BILETIX</a>-en!</p><p align="justify"><strong>2004. dec. 17.</strong> Szabó István filmrendező - aki életmű-díjat kap - és Klaus Maria Brandauer 18. 30-kor az isztambuli francia kulturális intézetben. Bővebbet a <a href="http://www.tursak.org.tr/default.asp?Language=EN&Pagecode=000">TÜRSAK honlapján</a> (a török verzióban).</p>
+false
+
+
+
+
+Efendi
+
+2004-05-25T11:46:48+02:00
+2005-01-11T19:17:48Z
+2004-05-25T09:50:04Z
+
+tag:blogger.com,1999:blog-7074887.post-108547860473485385
+Utazási tanácsok/Kedvenc törökországi helyeink
+<div align="center"><a href="http://photos1.blogger.com/img/284/1037/640/akyaka%20part10.jpg"><img style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 2px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://photos1.blogger.com/img/284/1037/400/akyaka%20part10.jpg" border="0" /></a>
<br /><span style="font-size:85%;"><em>A Gökovai-öböl</em></span> </div><div align="justify">
<br />Ezek azok a helyek, amelyek különösen tetszettek Törökországban. Ha szükséges, írjátok le azt is, hogyan lehet eljutni oda.
<br />
<br /></div><div align="justify"></div><div align="justify">Jó és rossz tapasztalataink a törökországi nyaralásokon. Ajánlhatunk szállást, irodákat, felhívhatjuk az utazni kívánók figyelmét hasznos tudnivalókra. Konkrét utazási kérdéseket is feltehettek, valaki majd csak válaszol.
<br />
<br /><p align="center"><a href="http://www.adiyamanli.org/MapofTurkey/turk_map.htm"><img height="50" alt="Road Map Of Turkey" src="http://www.adiyamanli.org/MapofTurkey/banner/turkey2.gif" width="113" border="0" /></a></p>
<br /></div><div align="justify"></div><div align="justify">Ha erre a fenti linkre klikkelsz, részletes Törökország-térképet találsz.
<br />
<br />Ajánlok néhány magyar oldalt is a témában:</div><div align="justify"></div><div align="justify">- <a href="http://www.metell.hu/">Metell útibeszámolói</a></div><div align="justify">- <a href="http://www.szinhaz.hu/kisseszter/html/trip1.htm">Kiss Eszter utazásai</a></div><div align="justify">- <a href="http://www.foldiutikalauz.hu/torokorszag/">Földi útikalauz</a></div><div align="justify">- <a href="http://www.holgyvilag.hu/main2.php?pos=1_13_2&cikk=3701">Hölgyvilág Terasz</a></div><div align="justify">- <a href="http://members.chello.hu/svrcsek/toroko.htm">Svrcsek benyomásai</a></div><div align="justify"></div><div align="justify"> </div><div align="justify">
<br />
<br /></div><div align="justify"><em>Egy kedves magyar levelező, Ildi kért arra, hogy csináljak egy kis reklámot Göremében 2004. decembere végén megnyitott panziójának, amelyet török férjével működtet. Örömmel teszem, nemcsak neki, bárki másnak is, tehát, <strong>ha Kappadókiába utazol keresd Ildi panzióját </strong></em><a href="http://www.ufukpension.com.tr/index.htm"><em><strong>EZEN A LINKEN</strong></em></a><em><strong>!</strong></em></div>
+false
+
+
+
+
+Efendi
+
+2004-05-24T13:00:00+02:00
+2006-01-03T13:32:59Z
+2004-05-24T11:07:57Z
+
+tag:blogger.com,1999:blog-7074887.post-108539687736096182
+Török fakanál
+
+
+Ez a post a 2004. évi hozzászólásokat tartalmazza, ha olvasni akarod azokat, klikkelj a "182 comments" linkre itt lent jobb oldalon . A 2005. január 4. utáni hozzászólások a "Török házastárs - 2005." poston vannak,
+
+ITT!
+
+
+]]>
+
+
+ Comment on Ïîëîâèíêèòå â Áúëãàðèÿ by: Ïàëàâðîâ
+ http://blog.doncho.net/?p=391#comment-10487
+ Sun, 11 Dec 2005 00:34:45 +0000
+ http://blog.doncho.net/?p=391#comment-10487
+ Íå, íå ñúì ñúãëàñåí - ïîãëåäíàòî îòñòðàíè èñòîðèÿòà íè å âåñåëà è ïîó÷èòåëíà. Ñàìîèðîíèÿòà ñè å ïðàâî íà âñåêè ÷îâåê ;)
+ Íå, íå ñúì ñúãëàñåí - ïîãëåäíàòî îòñòðàíè èñòîðèÿòà íè å âåñåëà è ïîó÷èòåëíà. Ñàìîèðîíèÿòà ñè å ïðàâî íà âñåêè ÷îâåê
+]]>
+
+
+ Comment on Visual’s 2005 áåçïëàòíî by: donangel
+ http://blog.doncho.net/?p=394#comment-10485
+ Sat, 10 Dec 2005 22:30:29 +0000
+ http://blog.doncho.net/?p=394#comment-10485
+ @<b>Artem</b>: Thanks a lot for this offtopic, but extremely important comment. I have taken measures to ensure that the users of KeePass PPC can download the files, while I'm trying to resolve my hosting provider's issue with sending mails from PHP scripts.
+Needless to say, I am quite pissed off - this is second quite serious flaw in their service (for two years of usage).
+ @Artem: Thanks a lot for this offtopic, but extremely important comment. I have taken measures to ensure that the users of KeePass PPC can download the files, while I’m trying to resolve my hosting provider’s issue with sending mails from PHP scripts.
+Needless to say, I am quite pissed off - this is second quite serious flaw in their service (for two years of usage).
+]]>
+
+
+ Comment on Visual’s 2005 áåçïëàòíî by: Artem Matevosyan
+ http://blog.doncho.net/?p=394#comment-10484
+ Sat, 10 Dec 2005 20:56:34 +0000
+ http://blog.doncho.net/?p=394#comment-10484
+ Hello! I'm sorry for the offtopic. I don't understand bulgarian and i'm posting this of I didn't find your mail to contact. I want to download the keepass for PocketPC and I can't the mailer doesn't send me a download link, though it says it hove done so. So could you contact me at Email or ICQ and explain how can I download the POcketPC port of my favourite password manager! Thanks a lot!
+ Hello! I’m sorry for the offtopic. I don’t understand bulgarian and i’m posting this of I didn’t find your mail to contact. I want to download the keepass for PocketPC and I can’t the mailer doesn’t send me a download link, though it says it hove done so. So could you contact me at Email or ICQ and explain how can I download the POcketPC port of my favourite password manager! Thanks a lot!
+]]>
+
+
+
diff --git a/third_party/gsutil/third_party/chardet/tests/windows-1251-bulgarian/doncho.net.xml b/third_party/gsutil/third_party/chardet/tests/windows-1251-bulgarian/doncho.net.xml
new file mode 100644
index 00000000000..2f0557f1668
--- /dev/null
+++ b/third_party/gsutil/third_party/chardet/tests/windows-1251-bulgarian/doncho.net.xml
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+ blog.doncho.net
+ http://blog.doncho.net
+ Êúñ÷åòà æèâîò
+ Wed, 04 Jan 2006 10:35:26 +0000
+ http://wordpress.org/?v=1.5.2
+ bg
+
+
+ Äà ëîóêîñòèðàìå èëè äà íå ëîóêîñòèðàìå?
+ http://blog.doncho.net/?p=396
+ http://blog.doncho.net/?p=396#comments
+ Tue, 03 Jan 2006 10:33:14 +0000
+ donangel
+
+ Daily
+ Áúëãàðñêè
+ Äàíèÿ
+ http://blog.doncho.net/?p=396
+ Êðàòúê ðàç÷åò ïî âîåííîìó çà ëîó-êîñòèðàíå Ïëîâäèâ-Øàðëîòåíëóíä
+ WizzAir, Ìàëìüî-Áóäàïåùà
+
+
+]]>
+ http://blog.doncho.net/?feed=rss2&p=389
+
+
+ Great Company, E-Boghandel [2]
+ http://blog.doncho.net/?p=388
+ http://blog.doncho.net/?p=388#comments
+ Wed, 02 Nov 2005 09:51:18 +0000
+ donangel
+
+ Daily
+ English
+ Äàíèÿ
+ http://blog.doncho.net/?p=388
+ Few weeks ago I shared here some problems with one book delivery. Just few days later I shared my extreme satisfaction after the resolution of the case.
+
+
Today I understood that I was not mistaken in my evaluation about the services, which SAXO & E-Boghandel provide.
+
+
You may ask why? The story is quite short: The [...]
This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the Blogger Help for more info.
if rangers draw and marseille and benfica win i stand to lift £825. not bad for a £2 bet. 50p on 3 homes Man Utd/Marseille/Benfica 50p on 3 Draws Rangers/Halifax/Bristol City 50p on 3 Aways Doncaster/Stranraer/Rushden & Diamonds and 50p on all nine results. GET IN THERE.
úå÷ï òì éãé - bush2008 - 03/01/2006 7:21:07]]>Wed, 4 Jan 2006 19:26 +0200àï ò÷ñéãòðè ååàñ äàè ôàñéøè àéï 2006?? 19:26÷ðéùòñWed, 4 Jan 2006 19:26 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1747815 Horse pulling carriage goes wild in Manhattan, crashes into car
By ELIZABETH LeSURE Associated Press Writer
January 2, 2006, 11:50 PM EST
NEW YORK -- The driver of a horse-drawn carriage was thrown into the street Monday night when the animal suddenly bolted, galloped for blocks and then crashed into a station wagon in midtown Manhattan, witnesses said.
"It was horrifying," said Robyn Hussa, who saw the horse racing through traffic. "It was like a nightmare."
The horse, whose carriage had no passengers, smashed into the station wagon at 50th Street and Ninth Avenue around 9:30 p.m., fire department Chief Jim Hodgens said. Two men in the station wagon were injured, he said.
The street was soaked in blood by the time the carriage driver was taken away in an ambulance, witnesses said.
"He wasn't moving at all, and there was blood all over the place," said Philip Emran, who had been eating dinner at a restaurant on the corner.
He said the horse was wrapped around the station wagon, its rear legs on top of it and its head on the ground. The windshield of the car was smashed, and the four-wheel carriage was mangled.
The horse, which remarkably appeared to escape injury, later stood at the scene before being driven away while bucking and kicking in a police wagon.
Authorities at the scene didn't immediately know the conditions of the injured or the origin of the horse and carriage, which had heart-shaped cutouts for windows.
Jasna Tomasevic, visiting from Orlando, Fla., said she was so horrified by what she witnessed through the window while dining at the corner restaurant that she had to change seats.
"This is really not something which I want to see," she said.
Manhattan carriage rides, generally in and around Central Park, are popular with tourists year-round and have been featured in movies and shows such as HBO's "Sex and the City." Carriages line up along Central Park South, about 10 blocks from where Monday's crash occurred, offering 30-minute rides for about $40.
Next time someone tells you to watch your step, tell them you already are.
Placing your foot down when walking was thought to be a predetermined process: lift foot, decide where to put it based on what's on the ground, and if nothing moves, land it down on the original target. Scientists thought this procedure requires no immediate visual information once the foot was lifted off the ground.
But a new study has found that continuous visual guidance mechanisms may be needed for accurate foot placement.
"We have demonstrated that vision can be used in an online fashion to fine-tune foot placement during a step," said Raymond Reynolds, of the Institute of Neurology, Queen Square, London. "It was previously thought that vision was used to plan the step in advance but not necessarily monitor its ongoing progress."
Reynolds and colleagues looked at how well people placed their feet onto a target in the process of walking. In half of their tests, they blocked off the subjects' vision as they were lifting their feet off of the ground. This caused them problems in placing their foot accurately on the target. When vision was restored, foot placement was once again on the mark.
"We observed that when vision was restored, corrective adjustments were made as the foot came close to the target," Reynolds told LiveScience.
The possible consequence of a misstep is, of course, a fall. The scientists hope that by learning how basic walking is controlled, they can better understand what goes wrong in people.
"It is important to know how healthy people control foot placement, so that we may understand what goes wrong in people who have neurological disorders which may cause them to fall," Reynolds said.
The researchers are now working on determining the extent to which one can alter foot placement during a step, which may have relevance for obstacle avoidance, Reynolds explained.
The study was detailed in the December issue of the Journal of Physiology.
]]>Wed, 4 Jan 2006 18:43 +0200Shmilowitz Bakery Settles With Labor D 18:43ShamosWed, 4 Jan 2006 18:43 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1748613Shmilowitz Bakery Settles With Labor Department Action
Williamsburg - Smilowitz Bakery has agreed to pay employees $120,651 in overtime back wages to settle a U.S. Department of Labor lawsuit alleging violations of the federal Fair Labor Standards Act(FLSA).
]]>Wed, 4 Jan 2006 18:37 +0200ãé áòñèò ååòâ öå ôøéðèï âøòôé÷ ôåï ÷àøòì 18:37ðáåëãðàöøWed, 4 Jan 2006 18:37 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1747756Wed, 4 Jan 2006 18:33 +0200Halp- àéê äàá áà÷éîï à 3èò ãåæùøé áøéåå 18:33àìòñàîúWed, 4 Jan 2006 18:33 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1747558Wed, 4 Jan 2006 17:47 +0200à GOOGLE ÷àîôéåèòø. áéìéâ àåï âåè. 17:47ôùèéãàWed, 4 Jan 2006 17:47 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1746839 GOOGLE àøáòè îéè ååàì îàøè öå àéáòøðòîòï ãé ÷àîôéåèòø àéðãåñèøé.
http://www.latimes.com/business/la-fi-predict1jan01,0,3503327.story]]>Wed, 4 Jan 2006 17:01 +0200à ÷àôì àãòø áòéñáàìì ÷òô áééí âòéí 17:01çééíîøãëéWed, 4 Jan 2006 17:01 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1747379 By Craig Smith
Seattle Times staff reporter
Q: Do boys on the Northwest Yeshiva basketball team wear the traditional Jewish hat, the yarmulke, during games?
A: Yes. It's a rule at the Mercer Island school.
Athletic director Jed Davis said the feeling is they are representing an Orthodox Jewish school so customs will be followed.
Yarmulkes are small, thin skullcaps. Most players use an athletic headband to keep them on the back of their heads, but metal clips are allowed under an exception to national high-school rules. However, headbands are more popular because clips sometimes come off during games at inopportune times, Davis said.
The girls basketball team at the school is noteworthy because some girls, for modesty reasons tied to religion, choose to play in skirts.
Northwest Yeshiva is a Class B school and one of its top boy players, Golan Silverman, a 6-foot-3 junior, was the Seattle Times' boy athlete of the week in early December. He earned the award during a week in which he scored 87 points, grabbed 73 rebounds and shot 85 percent from the field in a three-game stretch.
à ÷òù÷òèì îéè à ðàîáòø]]>Wed, 4 Jan 2006 14:03 +0200VA +Coal Mine Explosion+ 14:03ShamosWed, 4 Jan 2006 14:03 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1745383 Tallmansville, VA +Coal Mine Explosion+ An underground explosion at an Upshur County coal mine has trapped 13 miners, a county emergency official said.
Jack Abramoff leaves Federal Court in Washington Tuesday, Jan. 3, 2006. The once-powerful lobbyist pleaded guilty Tuesday to federal charges of conspiracy, tax evasion and mail fraud, agreeing to cooperate with prosecutors investigating influence peddling that has threatened powerful members of the U.S. Congress. (AP Photo/Gerald Herbert)
http://apnews.myway.com/article/20060104/D8ETHFQOC.html ]]>Wed, 4 Jan 2006 04:13 +0200business cards in brooklyn 04:13tzikuchtWed, 4 Jan 2006 04:13 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1747807Wed, 4 Jan 2006 03:38 +0200US planning strike against Iran 03:38y123y123Wed, 4 Jan 2006 03:38 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1744488 The German newspaper Der Tagesspiegel collected various reports from the German media indicating that the North Atlantic Treaty Organization are examining the prospects of such a strike.
According to the report, CIA Director Porter Goss, in his last visit to Turkey on December 12, requested Prime Minister Recep Tayyip Erdogan to provide military bases to the United States in 2006 from where they would be able to launch an assault.
The German news agency DDP also noted that countries neighboring Iran, such as Saudi Arabia, Jordan, Oman, and Pakistan were also updated regarding the supposed plan. American sources sent to those countries apparently mentioned an aerial attack as a possibility, but did not provide a time frame for the operation.
Although Der Spiegel could not say that these plans were concrete, they did note that according to a January 2005 New Yorker report American forces had entered Iran in 2005 in order to mark possible targets for an aerial assault.
http://jewishcenteronline.com/forums/showthread.php?t=56]]>Wed, 4 Jan 2006 03:32 +0200Cell Numbers Going Public 03:32äöìä2006Wed, 4 Jan 2006 03:32 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1747786Cell Numbers Going Public
JUST A REMINDER, (10) days from today, cell phone numbers are being released to telemarketing companies and you will start to
receive sale calls. YOU WILL BE CHARGED FOR THESE CALLS! These telemarketers will eat up your free minutes and end up costing you money in the long run. To prevent this, call the following number from your cell phone: 888/382-1222.
It is the National DO NOT CALL list. It will only take a minute of your time. It blocks your number for five (5) years. PASS THIS ON TO ALL YOUR FRIENDS. ]]>Wed, 4 Jan 2006 01:01 +0200÷òï îéø àééðòø ãà äòìôï E-BAY 01:01CatskillsWed, 4 Jan 2006 01:01 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1747563áéï àéê àøåéó àåéó e-bay àåéó ãòí ðàîòï ôåï éòðòí, æòä àéê àæ òø àéæ ùåéï ðéùè òååòìòéáì øåó àäï ãé ðàîáòø ååàñ òñ àéæ âò÷åîòï àåéó ãé Invoice æàâè éòðòø øàðâ ðàîáòø, äàá àéê âòæåëè ãòí ðàîòï ôåï éòðòí ååàå òø ååàéðè òø ååàéðè àéï ÷àìòôàøðéò, àéæ àøåéôâò÷åîòï à ðàîòï îéè à èòìòôàï ðàîáòø, àåï ãé ðàîáòø àéæ out of service àéæ ùééê ðàê òôòñ öå èåäï?????]]>Tue, 3 Jan 2006 22:57 +0200Plane Now Down Into Hudson River 22:57ShamosTue, 3 Jan 2006 22:57 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1745492 U/D: 12:13 Aviation-15 has one aided on board, U.S.C.G. Chopper has another one both enroute to Jacobi Medical Center Heliport, only 2 aided on board.
For all the details go to
http://vosizneias.blogspot.com/2006/01/yonkers-1-engine-plane-down.html ]]>Tue, 3 Jan 2006 22:44 +0200Monsey Bikur Cholim Filed Lawsuit 22:44ShamosTue, 3 Jan 2006 22:44 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1747302 Suffern - Monsey Bikur Cholim is suing the village so it can continue to operate at its current location and shelter Orthodox Jews during the shabbas and holidays.
à ãàð÷ ôàøï îåãéò æéééï..]]>Tue, 3 Jan 2006 19:26 +0200÷àõ ëàôè à äéèù îéè SUV à 19:26çééíîøãëéTue, 3 Jan 2006 19:26 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1747052 The kitten, now known, for obvious reasons, as Miracle, hitchhiked a ride on the underbelly of a sport utility vehicle just before Christmas. The gray and white feline traveled some 70 miles under the vehicle as it whizzed along the Turnpike on Dec. 23.
"I'm just amazed that the cat didn't fall off or get blown off," Karen Dixon-Aquino, director of the Animal Welfare Association in Voorhees, told the Courier-Post of Cherry Hill for Tuesday's newspapers.
The association is caring for the furry hitchhiker and plans to put him up for adoption.
The SUV's driver was traveling from Newark to Cherry Hill and didn't know she was giving the kitten a ride until another motorist saw the tabby through a wheel well and flagged the driver over near Interchange 4 in Mount Laurel.
Dixon-Aquino said the cat probably climbed into the guts of the SUV in Newark and was asleep when the journey began. Somehow, the cat avoided being mangled by fan blades and other moving parts as he clung to the car for the ride.
The kitty, estimated to be about 8 or 9 months old, was not unscathed, though.
"He was pretty freaked out," Dixon-Aquino said. "His paws were burnt, one claw was missing and his fur was singed."
àéê ååàìè âòæàâè ôàøï ãøééååòø àæ òø æàì âéè ÷å÷òï òñ ÷òï æééï àæ òø äàè àåéê îééæ]]>Tue, 3 Jan 2006 19:03 +0200à àéãéùò ôøåé àï àéðååòðèàø 19:03ñòîàï_ôéùTue, 3 Jan 2006 19:03 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1746152 From babies and Legos comes high tech innovation By Aryeh Dean Cohen January 01, 2006
It's doubtful that Las Vegas bettors would have put any money on an ultra-Orthodox Israeli schoolteacher and mother of five taking the city by storm and setting 2005's annual Consumer Electronics Show on its ear. But that's exactly what inventor and super mom Sarah Lipman did, overcoming the odds while casting a whole new light on the way users can interact with their computers, cell phones, and other electronic devices.
She's not alone. Indeed, Lipman, who heads her own company - Power2Be Technology - represents part of a new generation of strict religiously observant Israeli women who are finding ways to merge their talents for technology with their strong commitments to family life. Finding that balance is producing a bounty of innovations, while at the same time allowing the women the satisfaction of sometimes seeing their child's first step just a few feet away from the computer being used to work on their latest project.
Former Los Angeles elementary school teacher Lipman, 33, says she "fell into high tech backwards," noting that while she's always had a penchant for inventing things, she never saw this one coming. She and her husband Michael were enjoying a vacation in Scotland when she literally saw the light.
Maybe it was the lighthouse she was looking at in the distance, but the idea came to her in a flash. "I was using my Palm, and I thought: 'If this thing could see me coming, it could bring me up what I wanted before I got there. Because I'm giving off all of this body language as I approach it - anyone watching me can see what I'm doing, but the computer can't.
"If you were watching me use the Palm, you would see that I was heading for the 'contacts' or the address book, or whatever. But the computer doesn't see me coming, so it doesn't give any response ahead of time. But then I started thinking: 'Gee, how could a computer or a Palm or a cell phone see me coming. And I worked it through and I realized I had something. And my husband said: 'Let's patent it,' and we did."
Interviewed in the living room of her "office," her Jerusalem home where baby toys or Lego mix happily with computers, a battery of phones, and a printer affording her the ability to be both mom and inventor, Lipman insists that the very fact that she did not have any previous experience in the high tech world works to her advantage.
"We discovered that we had actually made a tremendous breakthrough in the entire area of interface and interface design that probably had a lot to do with the fact that I wasn't in the business yet, so I wasn't influenced by the current ways of doing things. I wanted something practical, and because of my background, which is a very strong interest in math and science, the way that I came to it was to think about the way light works and the way light propagates, rather than the way engineers approach it, which is what components can you put together to achieve the effect you want," she told ISRAEL21c.
The technology is based on a stylus which emits invisible light, like a Palm stylus but "really small," she explains. "That light, when it hits the screen, interacts with the display. We've harnessed the propagation of the light and the qualities that it has, and we found that we can interpret out from that where the stylus was when the light hit it."
"Power2Be technology enables three-dimensional interaction with any kind of computer device, and in so doing allows for very, very intuitive interaction at any level, and in any kind of program," Lipman explains. Applications run from revolutionizing the way one interacts with one's TV and remote to offering 3-D effects for computer games. "We have done away with several very convoluted and discouraging steps," says Lipman
A group of engineers at the Jerusalem College of Technology's Machon Lev institute that Lipman met with on her return to Israel "kind of looked at me and said: 'Well, you can't do that - there's no hardware that does that.' And I said: 'But just think a minute, that's how it works, it's gotta work like that.' I'm somebody who builds a picture in my mind, and if it works well enough in my mind, then I'm pretty sure it'll work in real life. So they tried it and it did work."
Tests showed that her invention worked, first with a piece of plexiglass, then with an LED, and finally a Palm T-3. The final version which is being completed, is based on a Nokia Smartphone, along with demo software.
So how do you get the word out that you've discovered light, or at least a way of using it that opens new frontiers in the world of interface? Simple, you go to Vegas. "I went with my very good friend - she's a rebbitzen (wife of a rabbi). She said: 'Sarah, you can't go to Las Vegas alone - I'm going with you.' So she left her eight kids and I left my five at the time, and off we went."
Not even a CSI investigator would have believed she was the hottest property at the Consumer Electronics Show, but she was. "It was very gratifying, because I don?t look the part. Even if people don't know I'm a schoolteacher, I still look more or less like a mom. I walked around to some of the big players, and they would hear me and all of a sudden their eyes would light up."
Through the buzz generated at the conference, a series of "very big players" whose name she won't reveal wanted to meet with her. "It turned out that these companies have been thinking about the kind of functionality that our technology provides. And all of a sudden, here I come out of nowhere and say: 'I've got this technology.' And they go: 'Wow,' and I sort of felt like an angel for them when I offered them that."
Upon her return to Israel, the first thing she and her husband did was "to fill the house with a lot of equipment," although now they are moving some of it out to an office.
"The kids need a house, not a laboratory," she says. Still, the interaction with her family feeds her creativity, with the children themselves now coming up with their own "inventions," including her daughter's discovery: a pen that writes by using recycled, wetted crepe paper. It's an atmosphere she says many ultra-Orthodox women crave to feel comfortable about mixing a career with family life, with auspicious results for the Israeli business world, particularly high tech.
"I think this trend of women getting more involved in high tech is inevitable...there are many religious women in programming...I think if suddenly we have thousands and thousands of women programming, they're going to understand computers at a much deeper level, and some of them are going to have ideas that take off. I don't see it not happening."
Lipman also believes that the religious training she and other ultra-Orthodox women share gives them a different and important outlook on high tech. "It has a lot to do with training and how you think. When you learn to read a verse and read a commentary by Rashi and not let any word get past you that you don't understand...if you're grounded properly, then nothing goes by without a question, and you assume that there's an answer. And that is a very different approach to engineering and invention, which is: Gee - who says I have to take it for granted that things are this way. Maybe there's another way...it's a different way of thinking, and it's an education which encourages you to think deeply, not to take things at their surface value. So I think that is a profound advantage."
"One of the most important issues I juggle with as a founder/mom is working hours," explains Lipman, a mother of six. "It's important to me to be available to them at important times, like bedtime. To do that. I save 'thinking work' for non-kid hours. Typically I work from 8:30 or 9 a.m. until 2 p.m., then take calls only, or have meeting in the house, until the kids go to sleep around 8:30. I get back to work at night, usually until around midnight. Working at home (and having a laptop) has allowed me the freedom to do most of my work at the times best for me and my family."
Lipman admits with a laugh that such a work experience sometimes has her "on the phone thinking: 'It's a good thing they can't see me, because I'm burping a baby while we speak, and in the back the other kids are all being very carefully quiet, and building with Legos or something... we told the kids: Do not answer line 3."
She credits her success - there's a "pile" of inventions waiting to be patented and produced - to her husband's drive, but chiefly to divine inspiration. Interviewed on the week of the reading of Bereishit, which describes God creating light, teacher-turned inventor/mom Lipman said that the spiritual side of her work "is more the way that light works, the way the world works...It speaks to me in a sense that there is a Creator, and therefore there is a level of inherent consistency and inherent elegance and perfection, and because of that...you can harness it and you can utilize that to create all kinds of amazing functions and technologies."
]]>Tue, 3 Jan 2006 19:02 +0200âøòñèò ãøééãì 19:02çééíîøãëéTue, 3 Jan 2006 19:02 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1747008 A group of Jewish university students in Montreal are confident it is the world's biggest dreidel, and they have applied to Guinness World Records to have that fact established.
More than 20 students built the giant dreidel out of wood and particle board in the lobby of Congregation Beth Ora by for the West Island Hillel's Chanukah party.
With its base, the free-standing structure measured 25 feet, 91/2 inches, said Hillel Montreal's Yoni Petel, but the dreidel itself was 22 feet, 21/2 inches. The four Hebrew letters – shin, hey, gimel and nun – were each about six feet high and made of paper, which was taped on.
The dreidel did indeed spin on its base, with a good push from a tall person. ''I'm 6-foot-2,'' said Petel, ''and I could barely reach the face.''
Rabbi Avi Rosenblatt, who authenticated its kashrut, and accountant Sandy Jesion, a vice-chair of the FEDERATION CJA West Island management committee, served as the witnesses necessary for consideration by Guinness.
Petel said the students were casting about for ideas on something different to do for Chanukah. ''We had thought of making the world's biggest latke, but it would have been a fire hazard and we weren't really sure if we knew how to do it. A dreidel was the obvious second choice, and we checked with Guinness and found no dreidel entries.''
The next question was where to construct it. They ruled out the outdoors because they were afraid of wind toppling their creation. The group looked on the West Island, but no synagogues or Jewish institutions had high enough ceilings to accommodate the top they envisioned. Beth Ora in St. Laurent was the closest alternative because its lobby soars almost three stories. Care had to be taken to avoid the chandelier.
The dreidel took about nine hours to build, and involved working from a scaffold. It took about 10 students to lift it onto the base. Then the party began. ''You could see about three-quarters of it outside through the window, making the synagogue look like a dollhouse,'' Petel said.
The costs of the dreidel were covered by an Innovation grant from National Jewish Campus Life.
Alas, the monster could only be kept up for two days. The students are keeping the parts and may try to reassemble the dreidel next year. ''But we would be happy to donate it to anybody interested,'' Petel added.
îéø ãøééãè æéê ãé ÷àô ðàø ôéï ÷å÷òï àåéôï ãøééãì]]>Tue, 3 Jan 2006 18:12 +0200îàä ùòøéí ååòðè ùøééòï 18:12çééíîøãëéTue, 3 Jan 2006 18:12 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1746789Israel's ultra-Orthodox use posters as salvos on secular society
By Joel Greenberg Tribune foreign correspondent Published January 3, 2006
JERUSALEM -- The fiery posters with bold black letters fairly shout from the walls of Mea Shearim, the teeming neighborhood of rigorously Orthodox Jews in the heart of Jerusalem.
"Watching movies is prohibited," declares a sign plastered on a wall. "These clothes are forbidden!!!" reads another, warning women against wearing tight-fitting garb.
In vivid language, the posters exhort the faithful to beware of temptations on the streets, admonish women to dress modestly, announce demonstrations and launch broadsides at Orthodox leaders deemed to be cooperating with Israel's secular establishment.
The wall posters, known by their Yiddish name, pashkevils, are a window into the life of a cloistered community that is clinging to its traditions at a time of rapid change.
About 10 percent of Israeli Jews are ultra-Orthodox, according to unofficial estimates. Known in Hebrew as haredim, or God-fearing, they generally live in separate neighborhoods, maintaining their own schools, synagogues and social welfare institutions. They are easily identifiable by their distinctive clothing: men in black hats and coats and women in long dresses, their hair covered with kerchiefs, hats or wigs.
Although there are ultra-Orthodox representatives in the Israeli parliament, and some have served as Cabinet ministers, the more fervent branches of the community are a world apart from the mainstream of predominantly secular Israeli society.
Many ultra-Orthodox men devote themselves to full-time religious study, receiving state stipends, tax breaks and exemptions from compulsory military service under long-standing arrangements with the government.
The arrangements have angered secular Israelis, who usually serve in the army. They also have contributed to widespread poverty in the ultra-Orthodox community, where the absence of many men from the workforce has made their traditionally large families dependent on state assistance and charities.
The ultra-Orthodox argue that military service violates their religious way of life and that religious studies keep alive a sacred heritage that has preserved the Jewish people throughout history.
Many Israelis resentful
But many Israelis see the rigorously Orthodox as shirking burdens shared by the rest of society, a rift deepened by the ultra-Orthodox view that Jewish law takes precedence over the demands of the secular state.
With its strict brand of Judaism and an indifference or outright hostility to secular Zionism, the ultra-Orthodox community has to fight a constant battle to fend off the pervasive influences of mainstream Israeli culture.
Nachman Ben-Yehuda, a sociologist at Hebrew University in Jerusalem, said the posters serve as both wall newspapers and morals police.
"Their main function is social control," he said. "They tell people what to do and what not to do."
Originating in Jerusalem in the early 1900s, the posters now are common in ultra-Orthodox towns and neighborhoods across Israel. Often the notices are signed by well-known rabbis, but many also bear the names of unknown groups, masking factions using the posters to denounce opponents.
Over the years pashkevils have commented on a broad range of issues affecting the ultra-Orthodox community. They have attacked the opening of movie theaters and restaurants on the Jewish Sabbath, condemned the excavation of ancient graves by archeologists as a desecration of Jewish remains and railed against traffic arrangements that allowed motorists near Orthodox neighborhoods on the Sabbath.
A poster plastered on the walls in Mea Shearim this week, signed by The Committee to Save the Youth in the Holy Land, urged students at religious seminaries, or yeshivas, to steer clear of the mass media and stay in the study halls.
'Avoid the media of all kinds'
"Any departure from the confines of the yeshiva and a short stay on the street is disastrous for the soul of the yeshiva student," the poster declared. "Every youth who aspires to master the Torah and build his future in the vineyard of the house of the Lord should know that he must completely avoid the media of all kinds. . . . Interest in the news turns the heart away from the fear of God."
The poster goes on to call for "the complete eradication of the newspapers and color magazines that mix good with bad, put the wicked with the righteous ... and confuse the minds of the youth."
Down one street, a poster warned women against wearing body-hugging Lycra shirts and "narrow, straight skirts," noting that modest dress "arouses the mercy of God." Another notice pronounced that watching movies leads to "the destruction of modesty, God forbid."
A poster warned against riding buses operated by Egged, the Israeli bus company, because of mixed seating of men and women. Another inveighed against attempts to introduce a secular "core curriculum" in Orthodox schools, declaring that it would marginalize religious studies.
Plans to recruit some ultra-Orthodox youths into the Israeli army and enroll others in alternative national service programs were denounced in posters as an attempt to "assimilate them in the abomination of the general free society." Ultra-Orthodox lawmakers were accused of collaborating with the recruitment plans and labeled "traitors serving the hatchet raised against the Torah and the faith."
The posters sometimes generate heated debate in ultra-Orthodox circles, with warring factions tearing down or covering up notices put up by their opponents.
But on a chilly afternoon last week, Moshe Zhilovsky, a black-clad yeshiva student, barely stopped to look at the screeds on the wall, dismissing them as a waste of time.
"This is politics," he said. "Real people don't like politics. There are more interesting things to do, like studying Torah and worshiping God."
ë'ååééñ ùåéï ôåï öååéé: ñ÷åìòï àåï ñèéèùéï. àáòø àåéá ë'ôàø ùåéï ååéì àéê ÷òðòï âééï öå ðàê øáé'ñ (ååàñ èåè îòï ðéùè ôàø ÷éðãòø...)]]>Tue, 3 Jan 2006 00:14 +0200àéê ãøéé æåê àøåí îéè îééï æò÷ì ÷ðåéèòï 00:14CatskillsTue, 3 Jan 2006 00:14 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1745908Mon, 2 Jan 2006 23:39 +0200ååàøìã èøòéã ñòðèòø ÷àðñôéñé îàååé 23:39eichlerMon, 2 Jan 2006 23:39 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1739827Mon, 2 Jan 2006 23:35 +0200Microsoft lets consumers try new securit 23:35y123y123Mon, 2 Jan 2006 23:35 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1745859The company is making its Windows OneCare Live service available for free in a "beta," or test version, to help it work out any potential problems before the product's likely introduction next year. The service, which offers anti-virus, firewall, backup and recovery, as well as personal computer maintenance, will eventually be available for a subscription fee, said Microsoft spokeswoman Samantha McManus. The company has not yet determined how much it will charge. "This is the first major step for Microsoft into the consumer security market," McManus said, noting about 15,000 customers have been taking part in a limited test since June.
àåéá àééðòø ãà äàè òñ - áéèò àøééðñ÷òðòï, òñ àéæ âòååàìãéâ]]>Mon, 2 Jan 2006 00:03 +0200NYC Parking Tickets Eased In Past Year 00:03ShamosMon, 2 Jan 2006 00:03 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1744252 The NYPD eased up on parking tickets in 2005 after a year-and-half-long rise, city records show.
ååéãòø àéæ ãà à ùèé÷ì ëìé é÷ø ååàñ äàìè ôåð÷è ôàø÷òøè, ðàø àéê äàá òñ ðéùè ôàø îéø, àôùø ùôòèòø ååòè òñ ðàë÷åîòï. ]]>Sun, 1 Jan 2006 22:53 +0200òøùèò ìòëèì áééí ëåúì éòöè live 22:53purim2005Sun, 1 Jan 2006 22:53 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1732319http://www.tvisrael.net/tvisrael/chanel.asp?chanel=3]]>Sun, 1 Jan 2006 22:46 +02002006 Will Start A Second Later Than Expe 22:46ShamosSun, 1 Jan 2006 22:46 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1739631 The year 2006 is going to come in with one second later than expected. The scientists in charge of maintaining world time have to insert a "leap second," in order to keep atomic time sync'd up with the Earth's rotational time.
]]>Sun, 1 Jan 2006 20:57 +0200Trump ôàø âàáòðàø? 20:57kutchmaSun, 1 Jan 2006 20:57 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1742976Republican: Trump May Run for N.Y. Gov.
The Associated Press Saturday, December 31, 2005; 11:41 AM
ALBANY, N.Y. -- Donald Trump is considering running for governor, a leading Republican said Friday. Senate Majority Leader Joseph Bruno on Thursday suggested that a big-name candidate could be flirting with entering the 2006 contest. On Friday, he confirmed to News Channel 10 in Albany that he had been referring to Trump.
Bruno told the station he had spoken to the real estate developer and TV personality about a possible run.
Trump's office in New York had no immediate comment. State GOP Executive Director Ryan Moses said neither he nor state party Chairman Stephen Minarik have had discussions with Trump about running.
Said Frank MacKay, state chairman of the Independence Party: "(Trump) is a formidable candidate for anything he decides to run for. We would love to see him run for president of the United States in 2008 as a third-party candidate. I'd do what I could to help give him a strong base here in New York and everywhere else in the country."
Trump flirted with a run for president on the Reform Party ticket in 2000. He has given money to Republicans and Democrats in state races.
Republicans are looking for a candidate with name recognition and money to take on the only announced Democratic candidate, state Attorney General Eliot Spitzer. Spitzer is far ahead of all candidates for governor in the early polls.
Spitzer won an endorsement Friday from former New York City Mayor Ed Koch, who cited his fellow Democrat's record as a corporate reformer.
"As attorney general, he demonstrated a real commitment to reforming institutions from Wall Street to Main Street, and I look forward to watching him work on reforming state government," Koch said at a news conference.
Koch, a Democrat, endorsed Republican Gov. George E. Pataki for re-election in 2002. Pataki has announced he will not seek a fourth term.
Spitzer is the lone Democrat in the race, although some Democrats say Thomas Suozzi, executive of Nassau County on Long Island, is considering entering the race.
Announced Republican candidates include former Massachusetts Gov. Bill Weld, former Assemblyman John Faso, former Secretary of State Randy Daniels and Assemblyman Patrick Manning.
]]>Sun, 1 Jan 2006 20:51 +0200ôøééìéê àéï ÷øòèùðéó 20:51wassa_difSun, 1 Jan 2006 20:51 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1743917Sun, 1 Jan 2006 16:33 +0200äéìô îéè éàäà îòéì 16:33bush2008Sun, 1 Jan 2006 16:33 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1740150àéê äàá àôàø yahoo mail ID's ìîùì îùä àéï éò÷á ñà àéê äàá âòîàëè à èùò÷ áéé Remember my ID on this computer àåéó îùä'ñ àéé ãé àáòø îééï ôøàáìòí àéæ àæ ååòï àéê ååéì âééï öé éò÷á âééè ãé ÷àîôéàèòø àìééï àøéé öé îùä àéï àéê îéæ àøåéñ ñééðòï ôéï îùä àéï ùôòèòø àðäééáòï àøééï öé ìééâòï ãé àéé ãé àéï ôòñ ååàøã ôéï éò÷á àéï ãé ðò÷ñèò îàì ååòè ãé ÷àîôéàòø âòãòð÷òï ðàø éò÷á ñà àéê ååéì ååéñòï ååé àæåé î' îàëè àæ ãé ÷àîôéàèòø æàì âòãòð÷òï îòø ååé àééï ôòñ ååàøã àéï àåéê àæ àéê æàì ÷òðòï àåéñ ååòìòï àéï ååòìëò àéé ãé àøééï öé âééï ðéùè ãé ÷àîôàèòø æàì àìééðñ àøééï âééï öé ãé àéé ãé ååòìòëò àéê áéï âòååòï ãé ìòöèò Who ever knows how to do it please post because I plotz already
úå÷ï òì éãé - bush2008 - 30/12/2005 8:15:34]]>Sun, 1 Jan 2006 15:56 +0200Chasiddish Community In Philadelphia? 15:56ShamosSun, 1 Jan 2006 15:56 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1743408 Philadelphia - The Hasidic rabbi Solomon Isaacson roams the halls of power brokers - his black suit, white shirt and broad-brimmed black hat - never changes, and the only food he offers them is challah, a bread delivered in person and free to the offices of most elected officials in City Hall, usually every week, he delivers 600 challahs a week. And he is widely perceived as a man of political influence. And like any insider, Isaacson wants something for the client he sees as his, the Jewish people. His latest pursuit: a large swath of land in Northeast Philadelphia for new townhouses and single-family homes so that hundreds of Chasidic Jewish families can relocate here from the saturated streets of Brooklyn.
]]>Sun, 1 Jan 2006 12:38 +0200à âòùòôè! coming soon 12:38àæìà_âøùSun, 1 Jan 2006 12:38 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1515678ìåéè ååé îòï âòè àéáòø âééè òñ æééï à âøåéñò ñå÷ñòñ
ãà ÷òï îòï ãàåðìàãòï ãé trailer http://s46.yousendit.com/d.aspx?id=14SZXE04G83T90QKLM02WQRJDD]]>Sun, 1 Jan 2006 05:49 +0200Special Ed article front page WSJ today 05:49babyfishSun, 1 Jan 2006 05:49 +0200http://hydepark.co.il/hydepark/topic.asp?topic_id=1742883December 31, 2005
DOW JONES REPRINTS
This copy is for your personal, non-commercial use only. To order presentation-ready copies for distribution to your colleagues, clients or customers, use the Order Reprints tool at the bottom of any article or visit: www.djreprints.com.
• See a sample reprint in PDF format. • Order a reprint of this article now.
Eli's Choice
His parents fought for boy with Down syndrome to be in the mainstream. As a teenager, he just wanted to be with his friends. By AMY DOCKSER MARCUS Staff Reporter of THE WALL STREET JOURNAL December 31, 2005; Page A1
BETHESDA, Md. -- For years, Eli Lewis was the only student in his class with Down syndrome.
The genetic condition, which causes a range of cognitive and physical impairments, made it harder for him to do his school work. But his parents felt strongly that he could succeed. They hired a reading tutor. An aide worked with his teachers to modify tests and lessons so that he could be in the same classroom as everyone else. He participated in his middle school's award-winning chorus and was treated as a valued member.
But when all the other kids in his class were making plans to go to the local high school this fall, Eli, 14 years old, said he didn't want to go. He wanted to be in a small class with other students like him. "I don't want to get lost in a big crowd," Eli says.
Kids in the Hall: Eli Lewis, flanked by his buddies, Chris Hamilton-Bruen (left) and Jamie Verhoff (right).
Eli's declaration surprised his parents. Then his mother recalled the many times she stopped by the school to check on her son, only to find him eating by himself. Once, when she came to pick him up from a dinner that chorus members attended, she says she found Eli sitting with his aide, while the other students sat at a different table.
"The kids liked him, they knew him, they spoke to him," says his mother, Mary Ann Dawedeit. "They just didn't think of him as a peer." Eli, she says, was tired of "being the only kid who was different."
Federal law mandated in the 1970s that children with disabilities be offered a "free and appropriate public education" in the "least restrictive environment," rather than being separated only in special schools or institutions. Over the years, advocacy and additional laws resulted in efforts to get children with disabilities placed in regular classrooms, with proper support, whenever possible. The process, called "inclusion" or "mainstreaming," has largely been an academic success.
Studies have shown benefits for all children, not only those with disabilities, who study together. Many researchers argue this is one reason why people with Down syndrome have made such remarkable progress in recent decades. People with Down syndrome who learn in regular classrooms do much better academically, research has found. They also have significantly higher rates of employment after they graduate and earn more money than peers who studied mainly in self-contained classes.
And yet, Eli Lewis's experience poses a difficult dilemma, one that is only now starting to be recognized and addressed. With help, he had succeeded academically in a regular classroom. But he felt isolated. In a book to be published next year, researchers at the Center for Social Development and Education at the University of Massachusetts in Boston say that although people with intellectual disabilities made enormous gains academically due to inclusion, their social integration at school "remains stagnant."
In a survey of 5,600 seventh- and eighth-grade students from 70 schools across the country, more than half of the youths said they were willing to interact with students with intellectual disabilities at school. But only one-third said they would be willing to invite such students to their house or go to the movies with them, according to the survey done by the University of Massachusetts center and the Washington-based opinion firm, ORC Macro. "Student attitudes continue to remain the most formidable barrier to inclusion," the researchers concluded.
At first, Ms. Dawedeit and her husband, Howard Lewis, thought Eli might change his mind. The couple -- who have two other sons who don't have Down syndrome -- felt there were many advantages to Eli staying in a regular classroom, including greater independence and more interaction with the general student body. But eventually, Mr. Lewis says he began to recognize that having Eli in a regular classroom might not be "as important to Eli as it is to me."
Ms. Dawedeit remained reluctant. She talked with a friend who had a son with Down syndrome, who was also learning in a regular classroom. "I felt like I had let her down," Ms. Dawedeit says. "I had preached a mantra for so long to so many."
In May, at the science exposition at Eli's middle school, her feelings changed. The eighth-graders took over the school hallway and parents were invited to visit. Some students demonstrated elaborate experiments they had been working on. Eli worked with his aide to do research online about the chemical properties of silver. He learned where to find it on the periodic table. For the exposition, he printed out some of the documents he had found.
When his mother came to see his project, Eli again raised the subject of where he was going to high school. For Ms. Dawedeit, the contrast was sharp. Here was Eli, successfully participating in a science exposition with peers who didn't have disabilities -- but still talking about wanting to be with other people with Down syndrome.
She says she realized she needed to try to accommodate her son's desire for a social group. "I really had to step back from my personal beliefs," she says.
In the fall, Eli enrolled in the ninth grade at Bethesda's Walter Johnson High School, a sprawling building of over 2,000 students. He is in a special program with 20 other students who have disabilities, including one who gets around in a wheelchair and has difficulty talking. Six of the students in the class have Down syndrome. Eli already knew some of the kids from various extracurricular activities, such as drama class and Special Olympics, where he participated in soccer, basketball, swimming and bowling.
Eli with his family: father, Howard Lewis, mother, Mary Ann Dawedeit, and brothers, Eric Lewis, 17, and Ezra Lewis, 12, at their home in Chevy Chase, Md.
Getting out of the mainstream has meant trade-offs. His school is about 10 miles from Eli's house, farther than the local high school that his older brother attends. (The local high school doesn't have a separate special-education program.) A special-education bus now comes each day to pick up Eli, along with other students with disabilities.
"This was one of our big compromises," says his mother. In middle school, Eli walked to a bus stop and rode a regular school bus. "Other kids knew him," says Ms. Dawedeit. "Now he's a special-ed kid on a bus."
One evening in November, after a dinner of chicken burritos and salad, Eli helped his brothers, ages 12 and 17, clear the dishes. Then his parents watched him, as he started making his way through his homework -- a worksheet to practice using nouns and verbs. Since Eli was born, they had fought to have him included in regular classrooms. Now it sometimes felt as if Eli might end up outside the world they had tried so hard to keep him in.
All along, they shared a similar goal: for their son to be able to live independently. But Mr. Lewis, a lawyer, began to worry that the academic gap between Eli and other classmates was getting wider in the regular classroom as he grew older, and might be too difficult to bridge in high school. "I'm not married to inclusion at the expense of Eli's getting the skills he needs," he says.
Ms. Dawedeit, a manager at a retail store, was less certain. She knew how much Eli, like all kids his age, wanted to belong. But without spending significant amounts of time in regular classrooms, how would he ever learn the skills he needed to reach the goal of living on his own? "The truth is he has to go out and get a job," she says. "If he's educated with his regular peers, then maybe a regular peer will hire him."
Eli finished his English worksheet, and got up to take a break. He came over and gave his father a hug. "Are you meeting any new kids at school, Eli?" his dad asked. "Not just yet, Dad," Eli answered. "Why are you hanging out only with the kids in your class?" his father queried. "Because I know them," Eli answered, and went into the kitchen to get some cookies.
At his new school, the Parent Teacher Student Association has put the issue of how to promote the inclusion of students with disabilities in extra-curricular activities on the agenda for its January meeting. A student group that pairs students with disabilities with a buddy without disabilities has already scheduled several activities for the coming months, including ice skating and bowling.
Still, for most of his school day, Eli is now in a separate classroom from the general school population. Last month, ninth-graders in the general-education classes were reading the novel, "To Kill a Mockingbird." In the special-education classroom, the teacher was going over worksheets that had been adapted from the book, with some related questions.
Eli was signed up for a regular physical-education class, but asked his parents if he could switch to one with only special-education students. His mother was reluctant to change, because it was one of his only chances to meet kids in the general-student population. She offered a compromise: He could switch to the special-education gym class with his friends, if next semester he took weight-training as part of the regular class. Eli agreed.
Janan Slough, the assistant principal who oversees the special-education department at Eli's school, says the school has difficulty finding certified special-education teachers because of a national shortage.
The school tries to foster as many opportunities as possible for those with disabilities to be in general classrooms, she says. Still, she adds, "I feel caught" between juggling the need for socializing with the need to teach basic, crucial tasks, such as handling money. On one field trip, the special-education kids went to a grocery store; they were supposed buy something their family might use at home, pay for it, and make sure they got correct change.
Most of the kids with disabilities need to focus on independent-living and job skills, rather than college preparation. "I'm charged with thinking about where they are going to be at 21," she says. "I don't want parents to come back and say, 'It's nice they were socially included and had parallel instruction, but you didn't prepare them for the world of work.' "
For now, Eli has only one class -- ceramics -- that he attends with the general school population. On a recent morning, Eli sat next to a boy assigned to help him. The students were designing tiles, and from time to time his peer assistant would look at what he was doing, or go with him to get more clay. For much of the class, the boy bantered with one of his friends, who had pulled up a chair next to him and was regaling him with a story. From time to time, Eli made a joke and the boys all laughed together.
Eli with his friends and fellow freshmen Chris Hamilton-Bruen, 14, and identical twins Will and Jamie Verhoff, 15.
But when they walked Eli back to the special-education classroom, there was no suggestion that they meet up again that day. When Eli was asked if he enjoyed spending time with his assigned partner, he shrugged and said, "It's OK."
Eli has a lot of ideas about what he wants to do after high school. In middle school, he took a media class and worked in the school's TV studio. Along with the other kids in the class, he was given a homework assignment to make a public-service announcement. Eli made one about the Special Olympics. "I want to be a director," he said, when asked about his plans after high school.
"Eli has serious career aspirations for himself that may not have anything to do with what the rest of the world sees for him after high school," said his mother, one afternoon last month, while waiting for him at a drama class he takes outside of school. The class, made up of students with and without disabilities, was planning a variety show, and Eli was excited about performing. Every night, he went to his room to work on a dance routine he had created to accompany a song from the soundtrack of the movie, "Holes."
His girlfriend, whom he met in elementary school and also has Down syndrome, had invited him to be her date to the upcoming Winter Ball at her private school. Next month, Eli will turn 15 and is planning a big party. The only kids he plans to invite also have disabilities, his mother says.
While she's glad he has found a social circle, she still wonders about what he's missing by going to special-education classes instead of staying in regular classes. "I go back and forth on it all the time," she says. For instance, his school has a state-of-the-art TV studio with editing facilities and a control room, where a class is given. Eli's parents wanted him to be in that class, but it's not possible right now, because he needs to attend the special-education math class, which is held during the same period.
On a recent morning at school, Eli weaved around the teenagers lining the hallway. Some sprawled on the floor, catching up on homework. Others joked with each other by their lockers, or rushed to get to their next class. Eli didn't talk to any of the students. He walked with purpose, heading to the special-education room.
When he got there, his face brightened when he saw one of his friends. "This is my best friend," he said, throwing his arm around the other boy, who also has Down syndrome. He pressed his face close to his friend's until their cheeks almost touched. Eli smiled. "What table are you sitting at lunch today?" he said as they walked together down the hall. "Come on, make sure you sit with me."
Write to Amy Dockser Marcus at amy.marcus@wsj.com1
URL for this article: http://online.wsj.com/article/SB113598974559935259.html
Hyperlinks in this Article: (1) mailto:amy.marcus@wsj.com
Copyright 2005 Dow Jones & Company, Inc. All Rights Reserved This copy is for your personal, non-commercial use only. Distribution and use of this material are governed by our Subscriber Agreement and by copyright law. For non-personal use or to order multiple copies, please contact Dow Jones Reprints at 1-800-843-0008 or visit www.djreprints.com.
+ The Real First Universal Charset Detector
+
+
+
+
+
+
+
+
+
+
+
+> A library that helps you read text from an unknown charset encoding. Motivated by `chardet`,
+> I'm trying to resolve the issue by taking a new approach.
+> All IANA character set names for which the Python core library provides codecs are supported.
+
+
The module can optionally operate with a private
- cache that understands the Cache-Control: header and
- uses both the ETag and Last-Modified cache validators.
-
-
-
All Methods
-
The module can handle any HTTP request method, not just GET and POST.
-
-
Redirects
-
Automatically follows 3XX redirects on GETs.
-
-
Compression
-
Handles both 'deflate' and 'gzip' types of compression.
The 'content' is the content retrieved from the URL.
-The content is already decompressed or unzipped if necessary.
-The 'resp' contains all the response headers.
-
-
-
To PUT some content to a server that uses SSL
-and Basic authentication:
The first request will be cached and since this is a request to
-bitworking.org it will be set to be cached for two hours, because
-that is how I have my server configured.
-Any subsequent GET to that URI will return the value from the
-on-disk cache and no request will be made to the server.
-You can use the Cache-Control: header to change the caches behavior and
-in this example the second request adds the Cache-Control: header with a value
-of 'no-cache' which tells the library that the cached copy
-must not be used when handling this request.
-
-
-
Requirements
-
-
Requires Python 2.3 or later. Does not require
-any libraries beyond what is found in the core library.
The httplib2 module is shipped as a distutils package. To install
-the library, first unpack the distribution archive, and issue the following
-command:
Bugs and enhancement requests are handled through
-SourceForge, and anything is up for discussion
-on the httplib2 mailing list.
-
-
-
To Do
-
-
This module is not perfect and needs the following:
-
-
Support for Proxies
-
A pluggable store for the cache is in place, with plugins for
- flat files and memcached.
- I eventually want to have plugins that allow keeping the cache in Berkeley DB, MySQL, etc.
-
More unit tests
-
-
-
Project Goal
-
-
To become a worthy addition to the Python core library.
-
-
Additional Information
-
-
-
-
Author
-
Joe Gregorio
-
-
License
-
MIT
-
-
Contributors
-
-
Thomas Broyer (t.broyer@ltgt.net)
-
James Antill
-
Xavier Verges Farrero
-
Jonathan Feinberg
-
Blair Zajac
-
Sam Ruby
-
Louis Nyffenegger
-
(Your Name Here)
-
-
-
-
This page last updated on: $LastChangedDate$.
-
-
-
-
-
-
-
-
diff --git a/third_party/gsutil/third_party/httplib2/pyproject.toml b/third_party/gsutil/third_party/httplib2/pyproject.toml
new file mode 100644
index 00000000000..dbea2e14d01
--- /dev/null
+++ b/third_party/gsutil/third_party/httplib2/pyproject.toml
@@ -0,0 +1,9 @@
+[build-system]
+requires = ["setuptools >= 40.8.0", "wheel"]
+build-backend = "setuptools.build_meta"
+
+[tool.black]
+line-length = 121
+
+[tool.check-manifest]
+ignore = [".github/*", "script/*", "*.tex"]
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/__init__.py b/third_party/gsutil/third_party/httplib2/python2/httplib2/__init__.py
index 18b013d9301..a9f793d6e85 100644
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2/__init__.py
+++ b/third_party/gsutil/third_party/httplib2/python2/httplib2/__init__.py
@@ -1,55 +1,53 @@
-from __future__ import print_function
-"""
-httplib2
-
-A caching http interface that supports ETags and gzip
-to conserve bandwidth.
-
-Requires Python 2.3 or later
-
-Changelog:
-2007-08-18, Rick: Modified so it's able to use a socks proxy if needed.
+"""Small, fast HTTP client library for Python.
+Features persistent connections, cache, and Google App Engine Standard
+Environment support.
"""
+from __future__ import print_function
+
__author__ = "Joe Gregorio (joe@bitworking.org)"
__copyright__ = "Copyright 2006, Joe Gregorio"
-__contributors__ = ["Thomas Broyer (t.broyer@ltgt.net)",
- "James Antill",
- "Xavier Verges Farrero",
- "Jonathan Feinberg",
- "Blair Zajac",
- "Sam Ruby",
- "Louis Nyffenegger",
- "Alex Yu"]
+__contributors__ = [
+ "Thomas Broyer (t.broyer@ltgt.net)",
+ "James Antill",
+ "Xavier Verges Farrero",
+ "Jonathan Feinberg",
+ "Blair Zajac",
+ "Sam Ruby",
+ "Louis Nyffenegger",
+ "Alex Yu",
+]
__license__ = "MIT"
-__version__ = '0.11.3'
+__version__ = "0.20.4"
-import re
-import sys
+import base64
+import calendar
+import copy
import email
-import email.Utils
-import email.Message
import email.FeedParser
-import StringIO
+import email.Message
+import email.Utils
+import errno
import gzip
-import zlib
import httplib
-import urlparse
-import urllib
-import base64
import os
-import copy
-import calendar
-import time
import random
-import errno
+import re
+import StringIO
+import sys
+import time
+import urllib
+import urlparse
+import zlib
+
try:
from hashlib import sha1 as _sha, md5 as _md5
except ImportError:
# prior to Python 2.5, these were separate modules
import sha
import md5
+
_sha = sha.new
_md5 = md5.new
import hmac
@@ -63,6 +61,8 @@
import socks
except (ImportError, AttributeError):
socks = None
+from httplib2 import auth
+from httplib2.error import *
# Build the appropriate socket wrapper for ssl
ssl = None
@@ -73,12 +73,11 @@
except ImportError:
pass
if ssl is not None:
- ssl_SSLError = getattr(ssl, 'SSLError', None)
- ssl_CertificateError = getattr(ssl, 'CertificateError', None)
+ ssl_SSLError = getattr(ssl, "SSLError", None)
+ ssl_CertificateError = getattr(ssl, "CertificateError", None)
-def _ssl_wrap_socket(sock, key_file, cert_file, disable_validation,
- ca_certs, ssl_version, hostname):
+def _ssl_wrap_socket(sock, key_file, cert_file, disable_validation, ca_certs, ssl_version, hostname, key_password):
if disable_validation:
cert_reqs = ssl.CERT_NONE
else:
@@ -86,54 +85,72 @@ def _ssl_wrap_socket(sock, key_file, cert_file, disable_validation,
if ssl_version is None:
ssl_version = ssl.PROTOCOL_SSLv23
- if hasattr(ssl, 'SSLContext'): # Python 2.7.9
+ if hasattr(ssl, "SSLContext"): # Python 2.7.9
context = ssl.SSLContext(ssl_version)
context.verify_mode = cert_reqs
- context.check_hostname = (cert_reqs != ssl.CERT_NONE)
+ context.check_hostname = cert_reqs != ssl.CERT_NONE
if cert_file:
- context.load_cert_chain(cert_file, key_file)
+ if key_password:
+ context.load_cert_chain(cert_file, key_file, key_password)
+ else:
+ context.load_cert_chain(cert_file, key_file)
if ca_certs:
context.load_verify_locations(ca_certs)
return context.wrap_socket(sock, server_hostname=hostname)
else:
- return ssl.wrap_socket(sock, keyfile=key_file, certfile=cert_file,
- cert_reqs=cert_reqs, ca_certs=ca_certs,
- ssl_version=ssl_version)
+ if key_password:
+ raise NotSupportedOnThisPlatform("Certificate with password is not supported.")
+ return ssl.wrap_socket(
+ sock, keyfile=key_file, certfile=cert_file, cert_reqs=cert_reqs, ca_certs=ca_certs, ssl_version=ssl_version,
+ )
-def _ssl_wrap_socket_unsupported(sock, key_file, cert_file, disable_validation,
- ca_certs, ssl_version, hostname):
+def _ssl_wrap_socket_unsupported(
+ sock, key_file, cert_file, disable_validation, ca_certs, ssl_version, hostname, key_password
+):
if not disable_validation:
raise CertificateValidationUnsupported(
- "SSL certificate validation is not supported without "
- "the ssl module installed. To avoid this error, install "
- "the ssl module, or explicity disable validation.")
+ "SSL certificate validation is not supported without "
+ "the ssl module installed. To avoid this error, install "
+ "the ssl module, or explicity disable validation."
+ )
+ if key_password:
+ raise NotSupportedOnThisPlatform("Certificate with password is not supported.")
ssl_sock = socket.ssl(sock, key_file, cert_file)
return httplib.FakeSocket(sock, ssl_sock)
+
if ssl is None:
_ssl_wrap_socket = _ssl_wrap_socket_unsupported
-
-if sys.version_info >= (2,3):
- from iri2uri import iri2uri
+if sys.version_info >= (2, 3):
+ from .iri2uri import iri2uri
else:
+
def iri2uri(uri):
return uri
-def has_timeout(timeout): # python 2.6
- if hasattr(socket, '_GLOBAL_DEFAULT_TIMEOUT'):
- return (timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT)
- return (timeout is not None)
-__all__ = [
- 'Http', 'Response', 'ProxyInfo', 'HttpLib2Error', 'RedirectMissingLocation',
- 'RedirectLimit', 'FailedToDecompressContent',
- 'UnimplementedDigestAuthOptionError',
- 'UnimplementedHmacDigestAuthOptionError',
- 'debuglevel', 'ProxiesUnavailableError']
+def has_timeout(timeout): # python 2.6
+ if hasattr(socket, "_GLOBAL_DEFAULT_TIMEOUT"):
+ return timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT
+ return timeout is not None
+__all__ = [
+ "Http",
+ "Response",
+ "ProxyInfo",
+ "HttpLib2Error",
+ "RedirectMissingLocation",
+ "RedirectLimit",
+ "FailedToDecompressContent",
+ "UnimplementedDigestAuthOptionError",
+ "UnimplementedHmacDigestAuthOptionError",
+ "debuglevel",
+ "ProxiesUnavailableError",
+]
+
# The httplib debug level, set to a non-zero value to get debug output
debuglevel = 0
@@ -141,7 +158,8 @@ def has_timeout(timeout): # python 2.6
RETRIES = 2
# Python 2.3 support
-if sys.version_info < (2,4):
+if sys.version_info < (2, 4):
+
def sorted(seq):
seq.sort()
return seq
@@ -154,11 +172,15 @@ def HTTPResponse__getheaders(self):
raise httplib.ResponseNotReady()
return self.msg.items()
-if not hasattr(httplib.HTTPResponse, 'getheaders'):
+
+if not hasattr(httplib.HTTPResponse, "getheaders"):
httplib.HTTPResponse.getheaders = HTTPResponse__getheaders
+
# All exceptions raised here derive from HttpLib2Error
-class HttpLib2Error(Exception): pass
+class HttpLib2Error(Exception):
+ pass
+
# Some exceptions can be caught and optionally
# be turned back into responses.
@@ -168,26 +190,65 @@ def __init__(self, desc, response, content):
self.content = content
HttpLib2Error.__init__(self, desc)
-class RedirectMissingLocation(HttpLib2ErrorWithResponse): pass
-class RedirectLimit(HttpLib2ErrorWithResponse): pass
-class FailedToDecompressContent(HttpLib2ErrorWithResponse): pass
-class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): pass
-class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): pass
-
-class MalformedHeader(HttpLib2Error): pass
-class RelativeURIError(HttpLib2Error): pass
-class ServerNotFoundError(HttpLib2Error): pass
-class ProxiesUnavailableError(HttpLib2Error): pass
-class CertificateValidationUnsupported(HttpLib2Error): pass
-class SSLHandshakeError(HttpLib2Error): pass
-class NotSupportedOnThisPlatform(HttpLib2Error): pass
+
+class RedirectMissingLocation(HttpLib2ErrorWithResponse):
+ pass
+
+
+class RedirectLimit(HttpLib2ErrorWithResponse):
+ pass
+
+
+class FailedToDecompressContent(HttpLib2ErrorWithResponse):
+ pass
+
+
+class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse):
+ pass
+
+
+class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse):
+ pass
+
+
+class MalformedHeader(HttpLib2Error):
+ pass
+
+
+class RelativeURIError(HttpLib2Error):
+ pass
+
+
+class ServerNotFoundError(HttpLib2Error):
+ pass
+
+
+class ProxiesUnavailableError(HttpLib2Error):
+ pass
+
+
+class CertificateValidationUnsupported(HttpLib2Error):
+ pass
+
+
+class SSLHandshakeError(HttpLib2Error):
+ pass
+
+
+class NotSupportedOnThisPlatform(HttpLib2Error):
+ pass
+
+
class CertificateHostnameMismatch(SSLHandshakeError):
def __init__(self, desc, host, cert):
HttpLib2Error.__init__(self, desc)
self.host = host
self.cert = cert
-class NotRunningAppEngineEnvironment(HttpLib2Error): pass
+
+class NotRunningAppEngineEnvironment(HttpLib2Error):
+ pass
+
# Open Items:
# -----------
@@ -204,32 +265,41 @@ class NotRunningAppEngineEnvironment(HttpLib2Error): pass
# Does not handle Cache-Control: max-stale
# Does not use Age: headers when calculating cache freshness.
-
# The number of redirections to follow before giving up.
# Note that only GET redirects are automatically followed.
# Will also honor 301 requests by saving that info and never
# requesting that URI again.
DEFAULT_MAX_REDIRECTS = 5
-try:
- # Users can optionally provide a module that tells us where the CA_CERTS
- # are located.
- import ca_certs_locater
- CA_CERTS = ca_certs_locater.get()
-except ImportError:
- # Default CA certificates file bundled with httplib2.
- CA_CERTS = os.path.join(
- os.path.dirname(os.path.abspath(__file__ )), "cacerts.txt")
+from httplib2 import certs
+
+CA_CERTS = certs.where()
# Which headers are hop-by-hop headers by default
-HOP_BY_HOP = ['connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization', 'te', 'trailers', 'transfer-encoding', 'upgrade']
+HOP_BY_HOP = [
+ "connection",
+ "keep-alive",
+ "proxy-authenticate",
+ "proxy-authorization",
+ "te",
+ "trailers",
+ "transfer-encoding",
+ "upgrade",
+]
+
+# https://tools.ietf.org/html/rfc7231#section-8.1.3
+SAFE_METHODS = ("GET", "HEAD") # TODO add "OPTIONS", "TRACE"
+
+# To change, assign to `Http().redirect_codes`
+REDIRECT_CODES = frozenset((300, 301, 302, 303, 307, 308))
def _get_end2end_headers(response):
hopbyhop = list(HOP_BY_HOP)
- hopbyhop.extend([x.strip() for x in response.get('connection', '').split(',')])
+ hopbyhop.extend([x.strip() for x in response.get("connection", "").split(",")])
return [header for header in response.keys() if header not in hopbyhop]
+
URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?")
@@ -259,98 +329,59 @@ def urlnorm(uri):
# Cache filename construction (original borrowed from Venus http://intertwingly.net/code/venus/)
-re_url_scheme = re.compile(r'^\w+://')
-re_slash = re.compile(r'[?/:|]+')
+re_url_scheme = re.compile(r"^\w+://")
+re_unsafe = re.compile(r"[^\w\-_.()=!]+")
def safename(filename):
"""Return a filename suitable for the cache.
-
Strips dangerous and common characters to create a filename we
can use to store the cache in.
"""
-
- try:
- if re_url_scheme.match(filename):
- if isinstance(filename,str):
- filename = filename.decode('utf-8')
- filename = filename.encode('idna')
- else:
- filename = filename.encode('idna')
- except UnicodeError:
- pass
- if isinstance(filename,unicode):
- filename=filename.encode('utf-8')
- filemd5 = _md5(filename).hexdigest()
+ if isinstance(filename, str):
+ filename_bytes = filename
+ filename = filename.decode("utf-8")
+ else:
+ filename_bytes = filename.encode("utf-8")
+ filemd5 = _md5(filename_bytes).hexdigest()
filename = re_url_scheme.sub("", filename)
- filename = re_slash.sub(",", filename)
+ filename = re_unsafe.sub("", filename)
+
+ # limit length of filename (vital for Windows)
+ # https://github.com/httplib2/httplib2/pull/74
+ # C:\Users\ \AppData\Local\Temp\ ,
+ # 9 chars + max 104 chars + 20 chars + x + 1 + 32 = max 259 chars
+ # Thus max safe filename x = 93 chars. Let it be 90 to make a round sum:
+ filename = filename[:90]
- # limit length of filename
- if len(filename)>200:
- filename=filename[:200]
return ",".join((filename, filemd5))
-NORMALIZE_SPACE = re.compile(r'(?:\r\n)?[ \t]+')
+
+NORMALIZE_SPACE = re.compile(r"(?:\r\n)?[ \t]+")
def _normalize_headers(headers):
- return dict([ (key.lower(), NORMALIZE_SPACE.sub(value, ' ').strip()) for (key, value) in headers.iteritems()])
+ return dict([(key.lower(), NORMALIZE_SPACE.sub(value, " ").strip()) for (key, value) in headers.iteritems()])
def _parse_cache_control(headers):
retval = {}
- if 'cache-control' in headers:
- parts = headers['cache-control'].split(',')
- parts_with_args = [tuple([x.strip().lower() for x in part.split("=", 1)]) for part in parts if -1 != part.find("=")]
+ if "cache-control" in headers:
+ parts = headers["cache-control"].split(",")
+ parts_with_args = [
+ tuple([x.strip().lower() for x in part.split("=", 1)]) for part in parts if -1 != part.find("=")
+ ]
parts_wo_args = [(name.strip().lower(), 1) for name in parts if -1 == name.find("=")]
retval = dict(parts_with_args + parts_wo_args)
return retval
+
# Whether to use a strict mode to parse WWW-Authenticate headers
# Might lead to bad results in case of ill-formed header value,
# so disabled by default, falling back to relaxed parsing.
# Set to true to turn on, usefull for testing servers.
USE_WWW_AUTH_STRICT_PARSING = 0
-# In regex below:
-# [^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+ matches a "token" as defined by HTTP
-# "(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?" matches a "quoted-string" as defined by HTTP, when LWS have already been replaced by a single space
-# Actually, as an auth-param value can be either a token or a quoted-string, they are combined in a single pattern which matches both:
-# \"?((?<=\")(?:[^\0-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?
-WWW_AUTH_STRICT = re.compile(r"^(?:\s*(?:,\s*)?([^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+)\s*=\s*\"?((?<=\")(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?)(.*)$")
-WWW_AUTH_RELAXED = re.compile(r"^(?:\s*(?:,\s*)?([^ \t\r\n=]+)\s*=\s*\"?((?<=\")(?:[^\\\"]|\\.)*?(?=\")|(? 0:
+ if service == "xapi" and request_uri.find("calendar") > 0:
service = "cl"
# No point in guessing Base or Spreadsheet
- #elif request_uri.find("spreadsheets") > 0:
+ # elif request_uri.find("spreadsheets") > 0:
# service = "wise"
- auth = dict(Email=credentials[0], Passwd=credentials[1], service=service, source=headers['user-agent'])
- resp, content = self.http.request("https://www.google.com/accounts/ClientLogin", method="POST", body=urlencode(auth), headers={'Content-Type': 'application/x-www-form-urlencoded'})
- lines = content.split('\n')
+ auth = dict(Email=credentials[0], Passwd=credentials[1], service=service, source=headers["user-agent"],)
+ resp, content = self.http.request(
+ "https://www.google.com/accounts/ClientLogin",
+ method="POST",
+ body=urlencode(auth),
+ headers={"Content-Type": "application/x-www-form-urlencoded"},
+ )
+ lines = content.split("\n")
d = dict([tuple(line.split("=", 1)) for line in lines if line])
if resp.status == 403:
self.Auth = ""
else:
- self.Auth = d['Auth']
+ self.Auth = d["Auth"]
def request(self, method, request_uri, headers, content):
"""Modify the request headers to add the appropriate
Authorization header."""
- headers['authorization'] = 'GoogleLogin Auth=' + self.Auth
+ headers["authorization"] = "GoogleLogin Auth=" + self.Auth
AUTH_SCHEME_CLASSES = {
@@ -720,7 +797,7 @@ def request(self, method, request_uri, headers, content):
"wsse": WsseAuthentication,
"digest": DigestAuthentication,
"hmacdigest": HmacDigestAuthentication,
- "googlelogin": GoogleLoginAuthentication
+ "googlelogin": GoogleLoginAuthentication,
}
AUTH_SCHEME_ORDER = ["hmacdigest", "googlelogin", "digest", "wsse", "basic"]
@@ -731,6 +808,7 @@ class FileCache(object):
Not really safe to use if multiple threads or processes are going to
be running on the same cache.
"""
+
def __init__(self, cache, safe=safename): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior
self.cache = cache
self.safe = safe
@@ -779,7 +857,14 @@ def iter(self, domain):
class KeyCerts(Credentials):
"""Identical to Credentials except that
name/password are mapped to key/cert."""
- pass
+
+ def add(self, key, cert, domain, password):
+ self.credentials.append((domain.lower(), key, cert, password))
+
+ def iter(self, domain):
+ for (cdomain, key, cert, password) in self.credentials:
+ if cdomain == "" or domain == cdomain:
+ yield (key, cert, password)
class AllHosts(object):
@@ -788,32 +873,28 @@ class AllHosts(object):
class ProxyInfo(object):
"""Collect information required to use a proxy."""
- bypass_hosts = ()
- def __init__(self, proxy_type, proxy_host, proxy_port,
- proxy_rdns=True, proxy_user=None, proxy_pass=None, proxy_headers=None):
- """
- Args:
- proxy_type: The type of proxy server. This must be set to one of
- socks.PROXY_TYPE_XXX constants. For example:
+ bypass_hosts = ()
- p = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP,
- proxy_host='localhost', proxy_port=8000)
+ def __init__(
+ self, proxy_type, proxy_host, proxy_port, proxy_rdns=True, proxy_user=None, proxy_pass=None, proxy_headers=None,
+ ):
+ """Args:
+ proxy_type: The type of proxy server. This must be set to one of
+ socks.PROXY_TYPE_XXX constants. For example: p =
+ ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost',
+ proxy_port=8000)
proxy_host: The hostname or IP address of the proxy server.
-
proxy_port: The port that the proxy server is running on.
-
proxy_rdns: If True (default), DNS queries will not be performed
locally, and instead, handed to the proxy to resolve. This is useful
- if the network does not allow resolution of non-local names. In
+ if the network does not allow resolution of non-local names. In
httplib2 0.9 and earlier, this defaulted to False.
-
proxy_user: The username used to authenticate with the proxy server.
-
proxy_pass: The password used to authenticate with the proxy server.
-
- proxy_headers: Additional or modified headers for the proxy connect request.
+ proxy_headers: Additional or modified headers for the proxy connect
+ request.
"""
self.proxy_type = proxy_type
self.proxy_host = proxy_host
@@ -824,8 +905,15 @@ def __init__(self, proxy_type, proxy_host, proxy_port,
self.proxy_headers = proxy_headers
def astuple(self):
- return (self.proxy_type, self.proxy_host, self.proxy_port,
- self.proxy_rdns, self.proxy_user, self.proxy_pass, self.proxy_headers)
+ return (
+ self.proxy_type,
+ self.proxy_host,
+ self.proxy_port,
+ self.proxy_rdns,
+ self.proxy_user,
+ self.proxy_pass,
+ self.proxy_headers,
+ )
def isgood(self):
return (self.proxy_host != None) and (self.proxy_port != None)
@@ -838,81 +926,61 @@ def bypass_host(self, hostname):
if self.bypass_hosts is AllHosts:
return True
- hostname = '.' + hostname.lstrip('.')
+ hostname = "." + hostname.lstrip(".")
for skip_name in self.bypass_hosts:
# *.suffix
- if skip_name.startswith('.') and hostname.endswith(skip_name):
+ if skip_name.startswith(".") and hostname.endswith(skip_name):
return True
# exact match
- if hostname == '.' + skip_name:
+ if hostname == "." + skip_name:
return True
return False
def __repr__(self):
return (
- '').format(p=self)
+ ""
+ ).format(p=self)
-def proxy_info_from_environment(method='http'):
- """
- Read proxy info from the environment variables.
+def proxy_info_from_environment(method="http"):
+ """Read proxy info from the environment variables.
"""
- if method not in ['http', 'https']:
+ if method not in ["http", "https"]:
return
- env_var = method + '_proxy'
+ env_var = method + "_proxy"
url = os.environ.get(env_var, os.environ.get(env_var.upper()))
if not url:
return
return proxy_info_from_url(url, method, None)
-def proxy_info_from_url(url, method='http', noproxy=None):
- """
- Construct a ProxyInfo from a URL (such as http_proxy env var)
+def proxy_info_from_url(url, method="http", noproxy=None):
+ """Construct a ProxyInfo from a URL (such as http_proxy env var)
"""
url = urlparse.urlparse(url)
- username = None
- password = None
- port = None
- if '@' in url[1]:
- ident, host_port = url[1].split('@', 1)
- if ':' in ident:
- username, password = ident.split(':', 1)
- else:
- password = ident
- else:
- host_port = url[1]
- if ':' in host_port:
- host, port = host_port.split(':', 1)
- else:
- host = host_port
-
- if port:
- port = int(port)
- else:
- port = dict(https=443, http=80)[method]
proxy_type = 3 # socks.PROXY_TYPE_HTTP
pi = ProxyInfo(
- proxy_type = proxy_type,
- proxy_host = host,
- proxy_port = port,
- proxy_user = username or None,
- proxy_pass = password or None,
- proxy_headers = None,
+ proxy_type=proxy_type,
+ proxy_host=url.hostname,
+ proxy_port=url.port or dict(https=443, http=80)[method],
+ proxy_user=url.username or None,
+ proxy_pass=url.password or None,
+ proxy_headers=None,
)
bypass_hosts = []
# If not given an explicit noproxy value, respect values in env vars.
if noproxy is None:
- noproxy = os.environ.get('no_proxy', os.environ.get('NO_PROXY', ''))
+ noproxy = os.environ.get("no_proxy", os.environ.get("NO_PROXY", ""))
# Special case: A single '*' character means all hosts should be bypassed.
- if noproxy == '*':
+ if noproxy == "*":
bypass_hosts = AllHosts
elif noproxy.strip():
- bypass_hosts = noproxy.split(',')
+ bypass_hosts = noproxy.split(",")
bypass_hosts = filter(bool, bypass_hosts) # To exclude empty string.
pi.bypass_hosts = bypass_hosts
@@ -920,8 +988,7 @@ def proxy_info_from_url(url, method='http', noproxy=None):
class HTTPConnectionWithTimeout(httplib.HTTPConnection):
- """
- HTTPConnection subclass that supports timeouts
+ """HTTPConnection subclass that supports timeouts
All timeouts are in seconds. If None is passed for timeout then
Python's default timeout for sockets will be used. See for example
@@ -938,12 +1005,18 @@ def connect(self):
"""Connect to the host and port specified in __init__."""
# Mostly verbatim from httplib.py.
if self.proxy_info and socks is None:
- raise ProxiesUnavailableError(
- 'Proxy support missing but proxy use was requested!')
- msg = "getaddrinfo returns an empty list"
+ raise ProxiesUnavailableError("Proxy support missing but proxy use was requested!")
if self.proxy_info and self.proxy_info.isgood():
use_proxy = True
- proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = self.proxy_info.astuple()
+ (
+ proxy_type,
+ proxy_host,
+ proxy_port,
+ proxy_rdns,
+ proxy_user,
+ proxy_pass,
+ proxy_headers,
+ ) = self.proxy_info.astuple()
host = proxy_host
port = proxy_port
@@ -953,12 +1026,16 @@ def connect(self):
host = self.host
port = self.port
+ socket_err = None
+
for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
af, socktype, proto, canonname, sa = res
try:
if use_proxy:
self.sock = socks.socksocket(af, socktype, proto)
- self.sock.setproxy(proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers)
+ self.sock.setproxy(
+ proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,
+ )
else:
self.sock = socket.socket(af, socktype, proto)
self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
@@ -969,48 +1046,72 @@ def connect(self):
if self.debuglevel > 0:
print("connect: (%s, %s) ************" % (self.host, self.port))
if use_proxy:
- print("proxy: %s ************" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers)))
+ print(
+ "proxy: %s ************"
+ % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,))
+ )
if use_proxy:
self.sock.connect((self.host, self.port) + sa[2:])
else:
self.sock.connect(sa)
- except socket.error as msg:
+ except socket.error as e:
+ socket_err = e
if self.debuglevel > 0:
print("connect fail: (%s, %s)" % (self.host, self.port))
if use_proxy:
- print("proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers)))
+ print(
+ "proxy: %s"
+ % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,))
+ )
if self.sock:
self.sock.close()
self.sock = None
continue
break
if not self.sock:
- raise socket.error, msg
+ raise socket_err or socket.error("getaddrinfo returns an empty list")
class HTTPSConnectionWithTimeout(httplib.HTTPSConnection):
- """
- This class allows communication via SSL.
+ """This class allows communication via SSL.
All timeouts are in seconds. If None is passed for timeout then
Python's default timeout for sockets will be used. See for example
the docs of socket.setdefaulttimeout():
http://docs.python.org/library/socket.html#socket.setdefaulttimeout
"""
- def __init__(self, host, port=None, key_file=None, cert_file=None,
- strict=None, timeout=None, proxy_info=None,
- ca_certs=None, disable_ssl_certificate_validation=False,
- ssl_version=None):
- httplib.HTTPSConnection.__init__(self, host, port=port,
- key_file=key_file,
- cert_file=cert_file, strict=strict)
+
+ def __init__(
+ self,
+ host,
+ port=None,
+ key_file=None,
+ cert_file=None,
+ strict=None,
+ timeout=None,
+ proxy_info=None,
+ ca_certs=None,
+ disable_ssl_certificate_validation=False,
+ ssl_version=None,
+ key_password=None,
+ ):
+ if key_password:
+ httplib.HTTPSConnection.__init__(self, host, port=port, strict=strict)
+ self._context.load_cert_chain(cert_file, key_file, key_password)
+ self.key_file = key_file
+ self.cert_file = cert_file
+ self.key_password = key_password
+ else:
+ httplib.HTTPSConnection.__init__(
+ self, host, port=port, key_file=key_file, cert_file=cert_file, strict=strict
+ )
+ self.key_password = None
self.timeout = timeout
self.proxy_info = proxy_info
if ca_certs is None:
ca_certs = CA_CERTS
self.ca_certs = ca_certs
- self.disable_ssl_certificate_validation = \
- disable_ssl_certificate_validation
+ self.disable_ssl_certificate_validation = disable_ssl_certificate_validation
self.ssl_version = ssl_version
# The following two methods were adapted from https_wrapper.py, released
@@ -1041,12 +1142,10 @@ def _GetValidHostsForCert(self, cert):
Returns:
list: A list of valid host globs.
"""
- if 'subjectAltName' in cert:
- return [x[1] for x in cert['subjectAltName']
- if x[0].lower() == 'dns']
+ if "subjectAltName" in cert:
+ return [x[1] for x in cert["subjectAltName"] if x[0].lower() == "dns"]
else:
- return [x[0][1] for x in cert['subject']
- if x[0][0].lower() == 'commonname']
+ return [x[0][1] for x in cert["subject"] if x[0][0].lower() == "commonname"]
def _ValidateCertificateHostname(self, cert, hostname):
"""Validates that a given hostname is valid for an SSL certificate.
@@ -1059,18 +1158,25 @@ def _ValidateCertificateHostname(self, cert, hostname):
"""
hosts = self._GetValidHostsForCert(cert)
for host in hosts:
- host_re = host.replace('.', '\.').replace('*', '[^.]*')
- if re.search('^%s$' % (host_re,), hostname, re.I):
+ host_re = host.replace(".", "\.").replace("*", "[^.]*")
+ if re.search("^%s$" % (host_re,), hostname, re.I):
return True
return False
def connect(self):
"Connect to a host on a given (SSL) port."
- msg = "getaddrinfo returns an empty list"
if self.proxy_info and self.proxy_info.isgood():
use_proxy = True
- proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = self.proxy_info.astuple()
+ (
+ proxy_type,
+ proxy_host,
+ proxy_port,
+ proxy_rdns,
+ proxy_user,
+ proxy_pass,
+ proxy_headers,
+ ) = self.proxy_info.astuple()
host = proxy_host
port = proxy_port
@@ -1080,13 +1186,17 @@ def connect(self):
host = self.host
port = self.port
+ socket_err = None
+
address_info = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM)
for family, socktype, proto, canonname, sockaddr in address_info:
try:
if use_proxy:
sock = socks.socksocket(family, socktype, proto)
- sock.setproxy(proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers)
+ sock.setproxy(
+ proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,
+ )
else:
sock = socket.socket(family, socktype, proto)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
@@ -1098,22 +1208,33 @@ def connect(self):
sock.connect((self.host, self.port) + sockaddr[:2])
else:
sock.connect(sockaddr)
- self.sock =_ssl_wrap_socket(
- sock, self.key_file, self.cert_file,
- self.disable_ssl_certificate_validation, self.ca_certs,
- self.ssl_version, self.host)
+ self.sock = _ssl_wrap_socket(
+ sock,
+ self.key_file,
+ self.cert_file,
+ self.disable_ssl_certificate_validation,
+ self.ca_certs,
+ self.ssl_version,
+ self.host,
+ self.key_password,
+ )
if self.debuglevel > 0:
print("connect: (%s, %s)" % (self.host, self.port))
if use_proxy:
- print("proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers)))
+ print(
+ "proxy: %s"
+ % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,))
+ )
if not self.disable_ssl_certificate_validation:
cert = self.sock.getpeercert()
- hostname = self.host.split(':', 0)[0]
+ hostname = self.host.split(":", 0)[0]
if not self._ValidateCertificateHostname(cert, hostname):
raise CertificateHostnameMismatch(
- 'Server presented certificate that does not match '
- 'host %s: %s' % (hostname, cert), hostname, cert)
- except (ssl_SSLError, ssl_CertificateError, CertificateHostnameMismatch) as e:
+ "Server presented certificate that does not match " "host %s: %s" % (hostname, cert),
+ hostname,
+ cert,
+ )
+ except (ssl_SSLError, ssl_CertificateError, CertificateHostnameMismatch,) as e:
if sock:
sock.close()
if self.sock:
@@ -1123,41 +1244,51 @@ def connect(self):
# to get at more detailed error information, in particular
# whether the error is due to certificate validation or
# something else (such as SSL protocol mismatch).
- if getattr(e, 'errno', None) == ssl.SSL_ERROR_SSL:
+ if getattr(e, "errno", None) == ssl.SSL_ERROR_SSL:
raise SSLHandshakeError(e)
else:
raise
except (socket.timeout, socket.gaierror):
raise
- except socket.error as msg:
+ except socket.error as e:
+ socket_err = e
if self.debuglevel > 0:
print("connect fail: (%s, %s)" % (self.host, self.port))
if use_proxy:
- print("proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers)))
+ print(
+ "proxy: %s"
+ % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,))
+ )
if self.sock:
self.sock.close()
self.sock = None
continue
break
if not self.sock:
- raise socket.error, msg
+ raise socket_err or socket.error("getaddrinfo returns an empty list")
+
SCHEME_TO_CONNECTION = {
- 'http': HTTPConnectionWithTimeout,
- 'https': HTTPSConnectionWithTimeout
+ "http": HTTPConnectionWithTimeout,
+ "https": HTTPSConnectionWithTimeout,
}
def _new_fixed_fetch(validate_certificate):
- def fixed_fetch(url, payload=None, method="GET", headers={},
- allow_truncated=False, follow_redirects=True,
- deadline=None):
- if deadline is None:
- deadline = socket.getdefaulttimeout()
- return fetch(url, payload=payload, method=method, headers=headers,
- allow_truncated=allow_truncated,
- follow_redirects=follow_redirects, deadline=deadline,
- validate_certificate=validate_certificate)
+ def fixed_fetch(
+ url, payload=None, method="GET", headers={}, allow_truncated=False, follow_redirects=True, deadline=None,
+ ):
+ return fetch(
+ url,
+ payload=payload,
+ method=method,
+ headers=headers,
+ allow_truncated=allow_truncated,
+ follow_redirects=follow_redirects,
+ deadline=deadline,
+ validate_certificate=validate_certificate,
+ )
+
return fixed_fetch
@@ -1168,12 +1299,21 @@ class AppEngineHttpConnection(httplib.HTTPConnection):
disable_ssl_certificate_validation, and ssl_version are all dropped on
the ground.
"""
- def __init__(self, host, port=None, key_file=None, cert_file=None,
- strict=None, timeout=None, proxy_info=None, ca_certs=None,
- disable_ssl_certificate_validation=False,
- ssl_version=None):
- httplib.HTTPConnection.__init__(self, host, port=port,
- strict=strict, timeout=timeout)
+
+ def __init__(
+ self,
+ host,
+ port=None,
+ key_file=None,
+ cert_file=None,
+ strict=None,
+ timeout=None,
+ proxy_info=None,
+ ca_certs=None,
+ disable_ssl_certificate_validation=False,
+ ssl_version=None,
+ ):
+ httplib.HTTPConnection.__init__(self, host, port=port, strict=strict, timeout=timeout)
class AppEngineHttpsConnection(httplib.HTTPSConnection):
@@ -1182,38 +1322,58 @@ class AppEngineHttpsConnection(httplib.HTTPSConnection):
The parameters proxy_info, ca_certs, disable_ssl_certificate_validation,
and ssl_version are all dropped on the ground.
"""
- def __init__(self, host, port=None, key_file=None, cert_file=None,
- strict=None, timeout=None, proxy_info=None, ca_certs=None,
- disable_ssl_certificate_validation=False,
- ssl_version=None):
- httplib.HTTPSConnection.__init__(self, host, port=port,
- key_file=key_file,
- cert_file=cert_file, strict=strict,
- timeout=timeout)
- self._fetch = _new_fixed_fetch(
- not disable_ssl_certificate_validation)
-
-# Use a different connection object for Google App Engine
+
+ def __init__(
+ self,
+ host,
+ port=None,
+ key_file=None,
+ cert_file=None,
+ strict=None,
+ timeout=None,
+ proxy_info=None,
+ ca_certs=None,
+ disable_ssl_certificate_validation=False,
+ ssl_version=None,
+ key_password=None,
+ ):
+ if key_password:
+ raise NotSupportedOnThisPlatform("Certificate with password is not supported.")
+ httplib.HTTPSConnection.__init__(
+ self, host, port=port, key_file=key_file, cert_file=cert_file, strict=strict, timeout=timeout,
+ )
+ self._fetch = _new_fixed_fetch(not disable_ssl_certificate_validation)
+
+
+# Use a different connection object for Google App Engine Standard Environment.
+def is_gae_instance():
+ server_software = os.environ.get("SERVER_SOFTWARE", "")
+ if (
+ server_software.startswith("Google App Engine/")
+ or server_software.startswith("Development/")
+ or server_software.startswith("testutil/")
+ ):
+ return True
+ return False
+
+
try:
- server_software = os.environ.get('SERVER_SOFTWARE')
- if not server_software:
- raise NotRunningAppEngineEnvironment()
- elif not (server_software.startswith('Google App Engine/') or
- server_software.startswith('Development/')):
+ if not is_gae_instance():
raise NotRunningAppEngineEnvironment()
from google.appengine.api import apiproxy_stub_map
- if apiproxy_stub_map.apiproxy.GetStub('urlfetch') is None:
- raise ImportError # Bail out; we're not actually running on App Engine.
+
+ if apiproxy_stub_map.apiproxy.GetStub("urlfetch") is None:
+ raise ImportError
+
from google.appengine.api.urlfetch import fetch
- from google.appengine.api.urlfetch import InvalidURLError
# Update the connection classes to use the Googel App Engine specific ones.
SCHEME_TO_CONNECTION = {
- 'http': AppEngineHttpConnection,
- 'https': AppEngineHttpsConnection
+ "http": AppEngineHttpConnection,
+ "https": AppEngineHttpsConnection,
}
-except (ImportError, AttributeError, NotRunningAppEngineEnvironment):
+except (ImportError, NotRunningAppEngineEnvironment):
pass
@@ -1231,10 +1391,16 @@ class Http(object):
and more.
"""
- def __init__(self, cache=None, timeout=None,
- proxy_info=proxy_info_from_environment,
- ca_certs=None, disable_ssl_certificate_validation=False,
- ssl_version=None):
+
+ def __init__(
+ self,
+ cache=None,
+ timeout=None,
+ proxy_info=proxy_info_from_environment,
+ ca_certs=None,
+ disable_ssl_certificate_validation=False,
+ ssl_version=None,
+ ):
"""If 'cache' is a string then it is used as a directory name for
a disk cache. Otherwise it must be an object that supports the
same interface as FileCache.
@@ -1262,8 +1428,7 @@ def __init__(self, cache=None, timeout=None,
"""
self.proxy_info = proxy_info
self.ca_certs = ca_certs
- self.disable_ssl_certificate_validation = \
- disable_ssl_certificate_validation
+ self.disable_ssl_certificate_validation = disable_ssl_certificate_validation
self.ssl_version = ssl_version
# Map domain name to an httplib connection
@@ -1287,10 +1452,14 @@ def __init__(self, cache=None, timeout=None,
# If set to False then no redirects are followed, even safe ones.
self.follow_redirects = True
+ self.redirect_codes = REDIRECT_CODES
+
# Which HTTP methods do we apply optimistic concurrency to, i.e.
# which methods get an "if-match:" etag header added to them.
self.optimistic_concurrency_methods = ["PUT", "PATCH"]
+ self.safe_methods = list(SAFE_METHODS)
+
# If 'follow_redirects' is True, and this is set to True then
# all redirecs are followed, including unsafe ones.
self.follow_all_redirects = False
@@ -1304,14 +1473,24 @@ def __init__(self, cache=None, timeout=None,
# Keep Authorization: headers on a redirect.
self.forward_authorization_headers = False
+ def close(self):
+ """Close persistent connections, clear sensitive data.
+ Not thread-safe, requires external synchronization against concurrent requests.
+ """
+ existing, self.connections = self.connections, {}
+ for _, c in existing.iteritems():
+ c.close()
+ self.certificates.clear()
+ self.clear_credentials()
+
def __getstate__(self):
state_dict = copy.copy(self.__dict__)
# In case request is augmented by some foreign object such as
# credentials which handle auth
- if 'request' in state_dict:
- del state_dict['request']
- if 'connections' in state_dict:
- del state_dict['connections']
+ if "request" in state_dict:
+ del state_dict["request"]
+ if "connections" in state_dict:
+ del state_dict["connections"]
return state_dict
def __setstate__(self, state):
@@ -1322,7 +1501,7 @@ def _auth_from_challenge(self, host, request_uri, headers, response, content):
"""A generator that creates Authorization objects
that can be applied to requests.
"""
- challenges = _parse_www_authenticate(response, 'www-authenticate')
+ challenges = auth._parse_www_authenticate(response, "www-authenticate")
for cred in self.credentials.iter(host):
for scheme in AUTH_SCHEME_ORDER:
if scheme in challenges:
@@ -1333,10 +1512,10 @@ def add_credentials(self, name, password, domain=""):
any time a request requires authentication."""
self.credentials.add(name, password, domain)
- def add_certificate(self, key, cert, domain):
+ def add_certificate(self, key, cert, domain, password=None):
"""Add a key and cert that will be used
any time a request requires authentication."""
- self.certificates.add(key, cert, domain)
+ self.certificates.add(key, cert, domain, password)
def clear_credentials(self):
"""Remove all the names and passwords
@@ -1350,7 +1529,7 @@ def _conn_request(self, conn, request_uri, method, body, headers):
while i < RETRIES:
i += 1
try:
- if hasattr(conn, 'sock') and conn.sock is None:
+ if hasattr(conn, "sock") and conn.sock is None:
conn.connect()
conn.request(method, request_uri, body, headers)
except socket.timeout:
@@ -1363,8 +1542,8 @@ def _conn_request(self, conn, request_uri, method, body, headers):
raise
except socket.error as e:
err = 0
- if hasattr(e, 'args'):
- err = getattr(e, 'args')[0]
+ if hasattr(e, "args"):
+ err = getattr(e, "args")[0]
else:
err = e.errno
if err == errno.ECONNREFUSED: # Connection refused
@@ -1374,15 +1553,15 @@ def _conn_request(self, conn, request_uri, method, body, headers):
except httplib.HTTPException:
# Just because the server closed the connection doesn't apparently mean
# that the server didn't send a response.
- if hasattr(conn, 'sock') and conn.sock is None:
- if i < RETRIES-1:
+ if hasattr(conn, "sock") and conn.sock is None:
+ if i < RETRIES - 1:
conn.close()
conn.connect()
continue
else:
conn.close()
raise
- if i < RETRIES-1:
+ if i < RETRIES - 1:
conn.close()
conn.connect()
continue
@@ -1402,7 +1581,7 @@ def _conn_request(self, conn, request_uri, method, body, headers):
conn.close()
raise
except (socket.error, httplib.HTTPException):
- if i < RETRIES-1:
+ if i < RETRIES - 1:
conn.close()
conn.connect()
continue
@@ -1421,8 +1600,9 @@ def _conn_request(self, conn, request_uri, method, body, headers):
break
return (response, content)
-
- def _request(self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey):
+ def _request(
+ self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey,
+ ):
"""Do the actual request using the connection object
and also follow one level of redirects if necessary"""
@@ -1436,62 +1616,65 @@ def _request(self, conn, host, absolute_uri, request_uri, method, body, headers,
if auth:
if auth.response(response, body):
auth.request(method, request_uri, headers, body)
- (response, content) = self._conn_request(conn, request_uri, method, body, headers )
+ (response, content) = self._conn_request(conn, request_uri, method, body, headers)
response._stale_digest = 1
if response.status == 401:
for authorization in self._auth_from_challenge(host, request_uri, headers, response, content):
authorization.request(method, request_uri, headers, body)
- (response, content) = self._conn_request(conn, request_uri, method, body, headers, )
+ (response, content) = self._conn_request(conn, request_uri, method, body, headers)
if response.status != 401:
self.authorizations.append(authorization)
authorization.response(response, body)
break
- if (self.follow_all_redirects or (method in ["GET", "HEAD"]) or response.status == 303):
- if self.follow_redirects and response.status in [300, 301, 302, 303, 307]:
+ if self.follow_all_redirects or method in self.safe_methods or response.status in (303, 308):
+ if self.follow_redirects and response.status in self.redirect_codes:
# Pick out the location header and basically start from the beginning
# remembering first to strip the ETag header and decrement our 'depth'
if redirections:
- if 'location' not in response and response.status != 300:
- raise RedirectMissingLocation( _("Redirected but the response is missing a Location: header."), response, content)
+ if "location" not in response and response.status != 300:
+ raise RedirectMissingLocation(
+ _("Redirected but the response is missing a Location: header."), response, content,
+ )
# Fix-up relative redirects (which violate an RFC 2616 MUST)
- if 'location' in response:
- location = response['location']
+ if "location" in response:
+ location = response["location"]
(scheme, authority, path, query, fragment) = parse_uri(location)
if authority == None:
- response['location'] = urlparse.urljoin(absolute_uri, location)
- if response.status == 301 and method in ["GET", "HEAD"]:
- response['-x-permanent-redirect-url'] = response['location']
- if 'content-location' not in response:
- response['content-location'] = absolute_uri
+ response["location"] = urlparse.urljoin(absolute_uri, location)
+ if response.status == 308 or (response.status == 301 and method in self.safe_methods):
+ response["-x-permanent-redirect-url"] = response["location"]
+ if "content-location" not in response:
+ response["content-location"] = absolute_uri
_updateCache(headers, response, content, self.cache, cachekey)
- if 'if-none-match' in headers:
- del headers['if-none-match']
- if 'if-modified-since' in headers:
- del headers['if-modified-since']
- if 'authorization' in headers and not self.forward_authorization_headers:
- del headers['authorization']
- if 'location' in response:
- location = response['location']
+ if "if-none-match" in headers:
+ del headers["if-none-match"]
+ if "if-modified-since" in headers:
+ del headers["if-modified-since"]
+ if "authorization" in headers and not self.forward_authorization_headers:
+ del headers["authorization"]
+ if "location" in response:
+ location = response["location"]
old_response = copy.deepcopy(response)
- if 'content-location' not in old_response:
- old_response['content-location'] = absolute_uri
+ if "content-location" not in old_response:
+ old_response["content-location"] = absolute_uri
redirect_method = method
if response.status in [302, 303]:
redirect_method = "GET"
body = None
(response, content) = self.request(
- location, method=redirect_method,
- body=body, headers=headers,
- redirections=redirections - 1)
+ location, method=redirect_method, body=body, headers=headers, redirections=redirections - 1,
+ )
response.previous = old_response
else:
- raise RedirectLimit("Redirected more times than rediection_limit allows.", response, content)
- elif response.status in [200, 203] and method in ["GET", "HEAD"]:
+ raise RedirectLimit(
+ "Redirected more times than rediection_limit allows.", response, content,
+ )
+ elif response.status in [200, 203] and method in self.safe_methods:
# Don't cache 206's since we aren't going to handle byte range requests
- if 'content-location' not in response:
- response['content-location'] = absolute_uri
+ if "content-location" not in response:
+ response["content-location"] = absolute_uri
_updateCache(headers, response, content, self.cache, cachekey)
return (response, content)
@@ -1499,12 +1682,13 @@ def _request(self, conn, host, absolute_uri, request_uri, method, body, headers,
def _normalize_headers(self, headers):
return _normalize_headers(headers)
-# Need to catch and rebrand some exceptions
-# Then need to optionally turn all exceptions into status codes
-# including all socket.* and httplib.* exceptions.
-
+ # Need to catch and rebrand some exceptions
+ # Then need to optionally turn all exceptions into status codes
+ # including all socket.* and httplib.* exceptions.
- def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None):
+ def request(
+ self, uri, method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None,
+ ):
""" Performs a single HTTP request.
The 'uri' is the URI of the HTTP resource and can begin with either
@@ -1526,63 +1710,68 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU
being and instance of the 'Response' class, the second being
a string that contains the response entity body.
"""
+ conn_key = ""
+
try:
if headers is None:
headers = {}
else:
headers = self._normalize_headers(headers)
- if 'user-agent' not in headers:
- headers['user-agent'] = "Python-httplib2/%s (gzip)" % __version__
+ if "user-agent" not in headers:
+ headers["user-agent"] = "Python-httplib2/%s (gzip)" % __version__
uri = iri2uri(uri)
+ # Prevent CWE-75 space injection to manipulate request via part of uri.
+ # Prevent CWE-93 CRLF injection to modify headers via part of uri.
+ uri = uri.replace(" ", "%20").replace("\r", "%0D").replace("\n", "%0A")
(scheme, authority, request_uri, defrag_uri) = urlnorm(uri)
- domain_port = authority.split(":")[0:2]
- if len(domain_port) == 2 and domain_port[1] == '443' and scheme == 'http':
- scheme = 'https'
- authority = domain_port[0]
proxy_info = self._get_proxy_info(scheme, authority)
- conn_key = scheme+":"+authority
- if conn_key in self.connections:
- conn = self.connections[conn_key]
- else:
+ conn_key = scheme + ":" + authority
+ conn = self.connections.get(conn_key)
+ if conn is None:
if not connection_type:
connection_type = SCHEME_TO_CONNECTION[scheme]
certs = list(self.certificates.iter(authority))
- if scheme == 'https':
+ if scheme == "https":
if certs:
conn = self.connections[conn_key] = connection_type(
- authority, key_file=certs[0][0],
- cert_file=certs[0][1], timeout=self.timeout,
- proxy_info=proxy_info,
- ca_certs=self.ca_certs,
- disable_ssl_certificate_validation=
- self.disable_ssl_certificate_validation,
- ssl_version=self.ssl_version)
+ authority,
+ key_file=certs[0][0],
+ cert_file=certs[0][1],
+ timeout=self.timeout,
+ proxy_info=proxy_info,
+ ca_certs=self.ca_certs,
+ disable_ssl_certificate_validation=self.disable_ssl_certificate_validation,
+ ssl_version=self.ssl_version,
+ key_password=certs[0][2],
+ )
else:
conn = self.connections[conn_key] = connection_type(
- authority, timeout=self.timeout,
- proxy_info=proxy_info,
- ca_certs=self.ca_certs,
- disable_ssl_certificate_validation=
- self.disable_ssl_certificate_validation,
- ssl_version=self.ssl_version)
+ authority,
+ timeout=self.timeout,
+ proxy_info=proxy_info,
+ ca_certs=self.ca_certs,
+ disable_ssl_certificate_validation=self.disable_ssl_certificate_validation,
+ ssl_version=self.ssl_version,
+ )
else:
conn = self.connections[conn_key] = connection_type(
- authority, timeout=self.timeout,
- proxy_info=proxy_info)
+ authority, timeout=self.timeout, proxy_info=proxy_info
+ )
conn.set_debuglevel(debuglevel)
- if 'range' not in headers and 'accept-encoding' not in headers:
- headers['accept-encoding'] = 'gzip, deflate'
+ if "range" not in headers and "accept-encoding" not in headers:
+ headers["accept-encoding"] = "gzip, deflate"
info = email.Message.Message()
+ cachekey = None
cached_value = None
if self.cache:
- cachekey = defrag_uri.encode('utf-8')
+ cachekey = defrag_uri.encode("utf-8")
cached_value = self.cache.get(cachekey)
if cached_value:
# info = email.message_from_string(cached_value)
@@ -1591,7 +1780,7 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU
# to fix the non-existent bug not fixed in this
# bug report: http://mail.python.org/pipermail/python-bugs-list/2005-September/030289.html
try:
- info, content = cached_value.split('\r\n\r\n', 1)
+ info, content = cached_value.split("\r\n\r\n", 1)
feedparser = email.FeedParser.FeedParser()
feedparser.feed(info)
info = feedparser.close()
@@ -1600,37 +1789,56 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU
self.cache.delete(cachekey)
cachekey = None
cached_value = None
- else:
- cachekey = None
- if method in self.optimistic_concurrency_methods and self.cache and 'etag' in info and not self.ignore_etag and 'if-match' not in headers:
+ if (
+ method in self.optimistic_concurrency_methods
+ and self.cache
+ and "etag" in info
+ and not self.ignore_etag
+ and "if-match" not in headers
+ ):
# http://www.w3.org/1999/04/Editing/
- headers['if-match'] = info['etag']
+ headers["if-match"] = info["etag"]
- if method not in ["GET", "HEAD"] and self.cache and cachekey:
- # RFC 2616 Section 13.10
+ # https://tools.ietf.org/html/rfc7234
+ # A cache MUST invalidate the effective Request URI as well as [...] Location and Content-Location
+ # when a non-error status code is received in response to an unsafe request method.
+ if self.cache and cachekey and method not in self.safe_methods:
self.cache.delete(cachekey)
# Check the vary header in the cache to see if this request
# matches what varies in the cache.
- if method in ['GET', 'HEAD'] and 'vary' in info:
- vary = info['vary']
- vary_headers = vary.lower().replace(' ', '').split(',')
+ if method in self.safe_methods and "vary" in info:
+ vary = info["vary"]
+ vary_headers = vary.lower().replace(" ", "").split(",")
for header in vary_headers:
- key = '-varied-%s' % header
+ key = "-varied-%s" % header
value = info[key]
if headers.get(header, None) != value:
cached_value = None
break
- if cached_value and method in ["GET", "HEAD"] and self.cache and 'range' not in headers:
- if '-x-permanent-redirect-url' in info:
+ if (
+ self.cache
+ and cached_value
+ and (method in self.safe_methods or info["status"] == "308")
+ and "range" not in headers
+ ):
+ redirect_method = method
+ if info["status"] not in ("307", "308"):
+ redirect_method = "GET"
+ if "-x-permanent-redirect-url" in info:
# Should cached permanent redirects be counted in our redirection count? For now, yes.
if redirections <= 0:
- raise RedirectLimit("Redirected more times than rediection_limit allows.", {}, "")
+ raise RedirectLimit(
+ "Redirected more times than rediection_limit allows.", {}, "",
+ )
(response, new_content) = self.request(
- info['-x-permanent-redirect-url'], method='GET',
- headers=headers, redirections=redirections - 1)
+ info["-x-permanent-redirect-url"],
+ method=redirect_method,
+ headers=headers,
+ redirections=redirections - 1,
+ )
response.previous = Response(info)
response.previous.fromcache = True
else:
@@ -1646,7 +1854,7 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU
if entry_disposition == "FRESH":
if not cached_value:
- info['status'] = '504'
+ info["status"] = "504"
content = ""
response = Response(info)
if cached_value:
@@ -1654,14 +1862,16 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU
return (response, content)
if entry_disposition == "STALE":
- if 'etag' in info and not self.ignore_etag and not 'if-none-match' in headers:
- headers['if-none-match'] = info['etag']
- if 'last-modified' in info and not 'last-modified' in headers:
- headers['if-modified-since'] = info['last-modified']
+ if "etag" in info and not self.ignore_etag and not "if-none-match" in headers:
+ headers["if-none-match"] = info["etag"]
+ if "last-modified" in info and not "last-modified" in headers:
+ headers["if-modified-since"] = info["last-modified"]
elif entry_disposition == "TRANSPARENT":
pass
- (response, new_content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
+ (response, new_content) = self._request(
+ conn, authority, uri, request_uri, method, body, headers, redirections, cachekey,
+ )
if response.status == 304 and method == "GET":
# Rewrite the cache entry with the new end-to-end headers
@@ -1686,39 +1896,38 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU
content = new_content
else:
cc = _parse_cache_control(headers)
- if 'only-if-cached' in cc:
- info['status'] = '504'
+ if "only-if-cached" in cc:
+ info["status"] = "504"
response = Response(info)
content = ""
else:
- (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
+ (response, content) = self._request(
+ conn, authority, uri, request_uri, method, body, headers, redirections, cachekey,
+ )
except Exception as e:
+ is_timeout = isinstance(e, socket.timeout)
+ if is_timeout:
+ conn = self.connections.pop(conn_key, None)
+ if conn:
+ conn.close()
+
if self.force_exception_to_status_code:
if isinstance(e, HttpLib2ErrorWithResponse):
response = e.response
content = e.content
response.status = 500
response.reason = str(e)
- elif isinstance(e, socket.timeout):
+ elif is_timeout:
content = "Request Timeout"
- response = Response({
- "content-type": "text/plain",
- "status": "408",
- "content-length": len(content)
- })
+ response = Response({"content-type": "text/plain", "status": "408", "content-length": len(content),})
response.reason = "Request Timeout"
else:
content = str(e)
- response = Response({
- "content-type": "text/plain",
- "status": "400",
- "content-length": len(content)
- })
+ response = Response({"content-type": "text/plain", "status": "400", "content-length": len(content),})
response.reason = "Bad Request"
else:
raise
-
return (response, content)
def _get_proxy_info(self, scheme, authority):
@@ -1730,8 +1939,7 @@ def _get_proxy_info(self, scheme, authority):
if callable(proxy_info):
proxy_info = proxy_info(scheme)
- if (hasattr(proxy_info, 'applies_to')
- and not proxy_info.applies_to(hostname)):
+ if hasattr(proxy_info, "applies_to") and not proxy_info.applies_to(hostname):
proxy_info = None
return proxy_info
@@ -1741,13 +1949,14 @@ class Response(dict):
"""Is this response from our local cache"""
fromcache = False
+ """HTTP protocol version used by server.
- """HTTP protocol version used by server. 10 for HTTP/1.0, 11 for HTTP/1.1. """
+ 10 for HTTP/1.0, 11 for HTTP/1.1.
+ """
version = 11
"Status code returned by server. "
status = 200
-
"""Reason phrase returned by server."""
reason = "Ok"
@@ -1760,21 +1969,21 @@ def __init__(self, info):
for key, value in info.getheaders():
self[key.lower()] = value
self.status = info.status
- self['status'] = str(self.status)
+ self["status"] = str(self.status)
self.reason = info.reason
self.version = info.version
elif isinstance(info, email.Message.Message):
for key, value in info.items():
self[key.lower()] = value
- self.status = int(self['status'])
+ self.status = int(self["status"])
else:
for key, value in info.iteritems():
self[key.lower()] = value
- self.status = int(self.get('status', self.status))
- self.reason = self.get('reason', self.reason)
+ self.status = int(self.get("status", self.status))
+ self.reason = self.get("reason", self.reason)
def __getattr__(self, name):
- if name == 'dict':
+ if name == "dict":
return self
else:
raise AttributeError(name)
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/auth.py b/third_party/gsutil/third_party/httplib2/python2/httplib2/auth.py
new file mode 100644
index 00000000000..84b5831766f
--- /dev/null
+++ b/third_party/gsutil/third_party/httplib2/python2/httplib2/auth.py
@@ -0,0 +1,63 @@
+import base64
+import re
+
+import pyparsing as pp
+
+from .error import *
+
+UNQUOTE_PAIRS = re.compile(r"\\(.)")
+unquote = lambda s, l, t: UNQUOTE_PAIRS.sub(r"\1", t[0][1:-1])
+
+# https://tools.ietf.org/html/rfc7235#section-1.2
+# https://tools.ietf.org/html/rfc7235#appendix-B
+tchar = "!#$%&'*+-.^_`|~" + pp.nums + pp.alphas
+token = pp.Word(tchar).setName("token")
+token68 = pp.Combine(pp.Word("-._~+/" + pp.nums + pp.alphas) + pp.Optional(pp.Word("=").leaveWhitespace())).setName(
+ "token68"
+)
+
+quoted_string = pp.dblQuotedString.copy().setName("quoted-string").setParseAction(unquote)
+auth_param_name = token.copy().setName("auth-param-name").addParseAction(pp.downcaseTokens)
+auth_param = auth_param_name + pp.Suppress("=") + (quoted_string | token)
+params = pp.Dict(pp.delimitedList(pp.Group(auth_param)))
+
+scheme = token("scheme")
+challenge = scheme + (params("params") | token68("token"))
+
+authentication_info = params.copy()
+www_authenticate = pp.delimitedList(pp.Group(challenge))
+
+
+def _parse_authentication_info(headers, headername="authentication-info"):
+ """https://tools.ietf.org/html/rfc7615
+ """
+ header = headers.get(headername, "").strip()
+ if not header:
+ return {}
+ try:
+ parsed = authentication_info.parseString(header)
+ except pp.ParseException as ex:
+ # print(ex.explain(ex))
+ raise MalformedHeader(headername)
+
+ return parsed.asDict()
+
+
+def _parse_www_authenticate(headers, headername="www-authenticate"):
+ """Returns a dictionary of dictionaries, one dict per auth_scheme."""
+ header = headers.get(headername, "").strip()
+ if not header:
+ return {}
+ try:
+ parsed = www_authenticate.parseString(header)
+ except pp.ParseException as ex:
+ # print(ex.explain(ex))
+ raise MalformedHeader(headername)
+
+ retval = {
+ challenge["scheme"].lower(): challenge["params"].asDict()
+ if "params" in challenge
+ else {"token": challenge.get("token")}
+ for challenge in parsed
+ }
+ return retval
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/cacerts.txt b/third_party/gsutil/third_party/httplib2/python2/httplib2/cacerts.txt
index a2a9833de51..78a444c43af 100644
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2/cacerts.txt
+++ b/third_party/gsutil/third_party/httplib2/python2/httplib2/cacerts.txt
@@ -2138,34 +2138,6 @@ hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr
so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI
-----END CERTIFICATE-----
-# Issuer: O=Digital Signature Trust Co., CN=DST Root CA X3
-# Subject: O=Digital Signature Trust Co., CN=DST Root CA X3
-# Label: "IdenTrust DST Root CA X3"
-# Serial: 44AFB080D6A327BA893039862EF8406B
-# MD5 Fingerprint: 41:03:52:DC:0F:F7:50:1B:16:F0:02:8E:BA:6F:45:C5
-# SHA1 Fingerprint: DA:C9:02:4F:54:D8:F6:DF:94:93:5F:B1:73:26:38:CA:6A:D7:7C:13
-# SHA256 Fingerprint: 06:87:26:03:31:A7:24:03:D9:09:F1:05:E6:9B:CF:0D:32:E1:BD:24:93:FF:C6:D9:20:6D:11:BC:D6:77:07:39
------BEGIN CERTIFICATE-----
-MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
-MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
-DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
-PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
-Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
-rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
-OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
-xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
-7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
-aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
-HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
-SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
-ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
-AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
-R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
-JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
-Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
------END CERTIFICATE-----
-
# Issuer: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US
# Subject: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US
# Serial: 33af1e6a711a9a0bb2864b11d09fae5
@@ -2194,3 +2166,60 @@ Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91
pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
MrY=
-----END CERTIFICATE-----
+
+# Issuer: /C=US/O=Internet Security Research Group/CN=ISRG Root X1
+# Subject: /C=US/O=Internet Security Research Group/CN=ISRG Root X1
+# Serial: 8210CFB0D240E3594463E0BB63828B00
+# SHA1 Fingerprint: CA:BD:2A:79:A1:07:6A:31:F2:1D:25:36:35:CB:03:9D:43:29:A5:E8
+# SHA256 Fingerprint: 96:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6
+-----BEGIN CERTIFICATE-----
+MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
+TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
+cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
+WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
+ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
+MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
+h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
+0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
+A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
+T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
+B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
+B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
+KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
+OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
+jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
+qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
+rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
+hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
+ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
+3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
+NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
+ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
+TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
+jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
+oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
+4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
+mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
+emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
+-----END CERTIFICATE-----
+
+# Issuer: /C=US/O=Internet Security Research Group/CN=ISRG Root X2
+# Subject: /C=US/O=Internet Security Research Group/CN=ISRG Root X2
+# Serial: 41D29DD172EAEEA780C12C6CE92F8752
+# SHA1 Fingerprint: BD:B1:B9:3C:D5:97:8D:45:C6:26:14:55:F8:DB:95:C7:5A:D1:53:AF
+# SHA256 Fingerprint: 69:72:9B:8E:15:A8:6E:FC:17:7A:57:AF:B7:17:1D:FC:64:AD:D2:8C:2F:CA:8C:F1:50:7E:34:45:3C:CB:14:70
+-----BEGIN CERTIFICATE-----
+MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw
+CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg
+R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00
+MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT
+ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw
+EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW
++1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9
+ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T
+AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI
+zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW
+tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1
+/q4AaOeMSQ+2b1tbFfLn
+-----END CERTIFICATE-----
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/certs.py b/third_party/gsutil/third_party/httplib2/python2/httplib2/certs.py
new file mode 100644
index 00000000000..59d1ffc7027
--- /dev/null
+++ b/third_party/gsutil/third_party/httplib2/python2/httplib2/certs.py
@@ -0,0 +1,42 @@
+"""Utilities for certificate management."""
+
+import os
+
+certifi_available = False
+certifi_where = None
+try:
+ from certifi import where as certifi_where
+ certifi_available = True
+except ImportError:
+ pass
+
+custom_ca_locater_available = False
+custom_ca_locater_where = None
+try:
+ from ca_certs_locater import get as custom_ca_locater_where
+ custom_ca_locater_available = True
+except ImportError:
+ pass
+
+
+BUILTIN_CA_CERTS = os.path.join(
+ os.path.dirname(os.path.abspath(__file__)), "cacerts.txt"
+)
+
+
+def where():
+ env = os.environ.get("HTTPLIB2_CA_CERTS")
+ if env is not None:
+ if os.path.isfile(env):
+ return env
+ else:
+ raise RuntimeError("Environment variable HTTPLIB2_CA_CERTS not a valid file")
+ if custom_ca_locater_available:
+ return custom_ca_locater_where()
+ if certifi_available:
+ return certifi_where()
+ return BUILTIN_CA_CERTS
+
+
+if __name__ == "__main__":
+ print(where())
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/error.py b/third_party/gsutil/third_party/httplib2/python2/httplib2/error.py
new file mode 100644
index 00000000000..0e68c12a852
--- /dev/null
+++ b/third_party/gsutil/third_party/httplib2/python2/httplib2/error.py
@@ -0,0 +1,48 @@
+# All exceptions raised here derive from HttpLib2Error
+class HttpLib2Error(Exception):
+ pass
+
+
+# Some exceptions can be caught and optionally
+# be turned back into responses.
+class HttpLib2ErrorWithResponse(HttpLib2Error):
+ def __init__(self, desc, response, content):
+ self.response = response
+ self.content = content
+ HttpLib2Error.__init__(self, desc)
+
+
+class RedirectMissingLocation(HttpLib2ErrorWithResponse):
+ pass
+
+
+class RedirectLimit(HttpLib2ErrorWithResponse):
+ pass
+
+
+class FailedToDecompressContent(HttpLib2ErrorWithResponse):
+ pass
+
+
+class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse):
+ pass
+
+
+class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse):
+ pass
+
+
+class MalformedHeader(HttpLib2Error):
+ pass
+
+
+class RelativeURIError(HttpLib2Error):
+ pass
+
+
+class ServerNotFoundError(HttpLib2Error):
+ pass
+
+
+class ProxiesUnavailableError(HttpLib2Error):
+ pass
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/iri2uri.py b/third_party/gsutil/third_party/httplib2/python2/httplib2/iri2uri.py
index d88c91fdfb7..0a978a7841d 100644
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2/iri2uri.py
+++ b/third_party/gsutil/third_party/httplib2/python2/httplib2/iri2uri.py
@@ -1,20 +1,13 @@
-"""
-iri2uri
+"""Converts an IRI to a URI."""
-Converts an IRI to a URI.
-
-"""
__author__ = "Joe Gregorio (joe@bitworking.org)"
__copyright__ = "Copyright 2006, Joe Gregorio"
__contributors__ = []
__version__ = "1.0.0"
__license__ = "MIT"
-__history__ = """
-"""
import urlparse
-
# Convert an IRI to a URI following the rules in RFC 3987
#
# The characters we need to enocde and escape are defined in the spec:
@@ -50,6 +43,7 @@
(0x100000, 0x10FFFD),
]
+
def encode(c):
retval = c
i = ord(c)
@@ -57,7 +51,7 @@ def encode(c):
if i < low:
break
if i >= low and i <= high:
- retval = "".join(["%%%2X" % ord(o) for o in c.encode('utf-8')])
+ retval = "".join(["%%%2X" % ord(o) for o in c.encode("utf-8")])
break
return retval
@@ -66,9 +60,9 @@ def iri2uri(uri):
"""Convert an IRI to a URI. Note that IRIs must be
passed in a unicode strings. That is, do not utf-8 encode
the IRI before passing it into the function."""
- if isinstance(uri ,unicode):
+ if isinstance(uri, unicode):
(scheme, authority, path, query, fragment) = urlparse.urlsplit(uri)
- authority = authority.encode('idna')
+ authority = authority.encode("idna")
# For each character in 'ucschar' or 'iprivate'
# 1. encode as utf-8
# 2. then %-encode each octet of that utf-8
@@ -76,11 +70,11 @@ def iri2uri(uri):
uri = "".join([encode(c) for c in uri])
return uri
+
if __name__ == "__main__":
import unittest
class Test(unittest.TestCase):
-
def test_uris(self):
"""Test that URIs are invariant under the transformation."""
invariant = [
@@ -91,20 +85,39 @@ def test_uris(self):
u"news:comp.infosystems.www.servers.unix",
u"tel:+1-816-555-1212",
u"telnet://192.0.2.16:80/",
- u"urn:oasis:names:specification:docbook:dtd:xml:4.1.2" ]
+ u"urn:oasis:names:specification:docbook:dtd:xml:4.1.2",
+ ]
for uri in invariant:
self.assertEqual(uri, iri2uri(uri))
def test_iri(self):
- """ Test that the right type of escaping is done for each part of the URI."""
- self.assertEqual("http://xn--o3h.com/%E2%98%84", iri2uri(u"http://\N{COMET}.com/\N{COMET}"))
- self.assertEqual("http://bitworking.org/?fred=%E2%98%84", iri2uri(u"http://bitworking.org/?fred=\N{COMET}"))
- self.assertEqual("http://bitworking.org/#%E2%98%84", iri2uri(u"http://bitworking.org/#\N{COMET}"))
+ """Test that the right type of escaping is done for each part of the URI."""
+ self.assertEqual(
+ "http://xn--o3h.com/%E2%98%84",
+ iri2uri(u"http://\N{COMET}.com/\N{COMET}"),
+ )
+ self.assertEqual(
+ "http://bitworking.org/?fred=%E2%98%84",
+ iri2uri(u"http://bitworking.org/?fred=\N{COMET}"),
+ )
+ self.assertEqual(
+ "http://bitworking.org/#%E2%98%84",
+ iri2uri(u"http://bitworking.org/#\N{COMET}"),
+ )
self.assertEqual("#%E2%98%84", iri2uri(u"#\N{COMET}"))
- self.assertEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}"))
- self.assertEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}")))
- self.assertNotEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}".encode('utf-8')))
+ self.assertEqual(
+ "/fred?bar=%E2%98%9A#%E2%98%84",
+ iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}"),
+ )
+ self.assertEqual(
+ "/fred?bar=%E2%98%9A#%E2%98%84",
+ iri2uri(iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}")),
+ )
+ self.assertNotEqual(
+ "/fred?bar=%E2%98%9A#%E2%98%84",
+ iri2uri(
+ u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}".encode("utf-8")
+ ),
+ )
unittest.main()
-
-
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/socks.py b/third_party/gsutil/third_party/httplib2/python2/httplib2/socks.py
index dbbe5114bee..71eb4ebf96e 100644
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2/socks.py
+++ b/third_party/gsutil/third_party/httplib2/python2/httplib2/socks.py
@@ -1,4 +1,5 @@
"""SocksiPy - Python SOCKS module.
+
Version 1.00
Copyright 2006 Dan-Haim. All rights reserved.
@@ -24,20 +25,14 @@
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMANGE.
-
This module provides a standard socket-like interface for Python
for tunneling connections through SOCKS proxies.
-"""
-
-"""
-
-Minor modifications made by Christopher Gilbert (http://motomastyle.com/)
-for use in PyLoris (http://pyloris.sourceforge.net/)
+Minor modifications made by Christopher Gilbert (http://motomastyle.com/) for
+use in PyLoris (http://pyloris.sourceforge.net/).
Minor modifications made by Mario Vilas (http://breakingcode.wordpress.com/)
-mainly to merge bug fixes found in Sourceforge
-
+mainly to merge bug fixes found in Sourceforge.
"""
import base64
@@ -45,8 +40,8 @@
import struct
import sys
-if getattr(socket, 'socket', None) is None:
- raise ImportError('socket.socket missing, proxy support unusable')
+if getattr(socket, "socket", None) is None:
+ raise ImportError("socket.socket missing, proxy support unusable")
PROXY_TYPE_SOCKS4 = 1
PROXY_TYPE_SOCKS5 = 2
@@ -56,21 +51,42 @@
_defaultproxy = None
_orgsocket = socket.socket
-class ProxyError(Exception): pass
-class GeneralProxyError(ProxyError): pass
-class Socks5AuthError(ProxyError): pass
-class Socks5Error(ProxyError): pass
-class Socks4Error(ProxyError): pass
-class HTTPError(ProxyError): pass
-_generalerrors = ("success",
+class ProxyError(Exception):
+ pass
+
+
+class GeneralProxyError(ProxyError):
+ pass
+
+
+class Socks5AuthError(ProxyError):
+ pass
+
+
+class Socks5Error(ProxyError):
+ pass
+
+
+class Socks4Error(ProxyError):
+ pass
+
+
+class HTTPError(ProxyError):
+ pass
+
+
+_generalerrors = (
+ "success",
"invalid data",
"not connected",
"not available",
"bad proxy type",
- "bad input")
+ "bad input",
+)
-_socks5errors = ("succeeded",
+_socks5errors = (
+ "succeeded",
"general SOCKS server failure",
"connection not allowed by ruleset",
"Network unreachable",
@@ -79,21 +95,30 @@ class HTTPError(ProxyError): pass
"TTL expired",
"Command not supported",
"Address type not supported",
- "Unknown error")
+ "Unknown error",
+)
-_socks5autherrors = ("succeeded",
+_socks5autherrors = (
+ "succeeded",
"authentication is required",
"all offered authentication methods were rejected",
"unknown username or invalid password",
- "unknown error")
+ "unknown error",
+)
-_socks4errors = ("request granted",
+_socks4errors = (
+ "request granted",
"request rejected or failed",
"request rejected because SOCKS server cannot connect to identd on the client",
- "request rejected because the client program and identd report different user-ids",
- "unknown error")
+ "request rejected because the client program and identd report different "
+ "user-ids",
+ "unknown error",
+)
-def setdefaultproxy(proxytype=None, addr=None, port=None, rdns=True, username=None, password=None):
+
+def setdefaultproxy(
+ proxytype=None, addr=None, port=None, rdns=True, username=None, password=None
+):
"""setdefaultproxy(proxytype, addr[, port[, rdns[, username[, password]]]])
Sets a default proxy which all further socksocket objects will use,
unless explicitly changed.
@@ -101,11 +126,14 @@ def setdefaultproxy(proxytype=None, addr=None, port=None, rdns=True, username=No
global _defaultproxy
_defaultproxy = (proxytype, addr, port, rdns, username, password)
+
def wrapmodule(module):
"""wrapmodule(module)
+
Attempts to replace a module's socket library with a SOCKS socket. Must set
a default proxy using setdefaultproxy(...) first.
- This will only work on modules that import socket directly into the namespace;
+ This will only work on modules that import socket directly into the
+ namespace;
most of the Python Standard Library falls into this category.
"""
if _defaultproxy != None:
@@ -113,6 +141,7 @@ def wrapmodule(module):
else:
raise GeneralProxyError((4, "no proxy specified"))
+
class socksocket(socket.socket):
"""socksocket([family[, type[, proto]]]) -> socket object
Open a SOCKS enabled socket. The parameters are the same as
@@ -120,7 +149,9 @@ class socksocket(socket.socket):
you must specify family=AF_INET, type=SOCK_STREAM and proto=0.
"""
- def __init__(self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, _sock=None):
+ def __init__(
+ self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, _sock=None
+ ):
_orgsocket.__init__(self, family, type, proto, _sock)
if _defaultproxy != None:
self.__proxy = _defaultproxy
@@ -137,8 +168,9 @@ def __recvall(self, count):
"""
data = self.recv(count)
while len(data) < count:
- d = self.recv(count-len(data))
- if not d: raise GeneralProxyError((0, "connection closed unexpectedly"))
+ d = self.recv(count - len(data))
+ if not d:
+ raise GeneralProxyError((0, "connection closed unexpectedly"))
data = data + d
return data
@@ -167,7 +199,7 @@ def __rewriteproxy(self, header):
hdrs.remove(endpt)
host = host.split(" ")[1]
endpt = endpt.split(" ")
- if (self.__proxy[4] != None and self.__proxy[5] != None):
+ if self.__proxy[4] != None and self.__proxy[5] != None:
hdrs.insert(0, self.__getauthheader())
hdrs.insert(0, "Host: %s" % host)
hdrs.insert(0, "%s http://%s%s %s" % (endpt[0], host, endpt[1], endpt[2]))
@@ -177,8 +209,18 @@ def __getauthheader(self):
auth = self.__proxy[4] + ":" + self.__proxy[5]
return "Proxy-Authorization: Basic " + base64.b64encode(auth)
- def setproxy(self, proxytype=None, addr=None, port=None, rdns=True, username=None, password=None, headers=None):
+ def setproxy(
+ self,
+ proxytype=None,
+ addr=None,
+ port=None,
+ rdns=True,
+ username=None,
+ password=None,
+ headers=None,
+ ):
"""setproxy(proxytype, addr[, port[, rdns[, username[, password]]]])
+
Sets the proxy to be used.
proxytype - The type of the proxy to be used. Three types
are supported: PROXY_TYPE_SOCKS4 (including socks4a),
@@ -193,24 +235,33 @@ def setproxy(self, proxytype=None, addr=None, port=None, rdns=True, username=Non
The default is no authentication.
password - Password to authenticate with to the server.
Only relevant when username is also provided.
- headers - Additional or modified headers for the proxy connect request.
+ headers - Additional or modified headers for the proxy connect
+ request.
"""
- self.__proxy = (proxytype, addr, port, rdns, username, password, headers)
+ self.__proxy = (
+ proxytype,
+ addr,
+ port,
+ rdns,
+ username.encode() if username else None,
+ password.encode() if password else None,
+ headers,
+ )
def __negotiatesocks5(self, destaddr, destport):
"""__negotiatesocks5(self,destaddr,destport)
Negotiates a connection through a SOCKS5 server.
"""
# First we'll send the authentication packages we support.
- if (self.__proxy[4]!=None) and (self.__proxy[5]!=None):
+ if (self.__proxy[4] != None) and (self.__proxy[5] != None):
# The username/password details were supplied to the
# setproxy method so we support the USERNAME/PASSWORD
# authentication (in addition to the standard none).
- self.sendall(struct.pack('BBBB', 0x05, 0x02, 0x00, 0x02))
+ self.sendall(struct.pack("BBBB", 0x05, 0x02, 0x00, 0x02))
else:
# No username/password were entered, therefore we
# only support connections with no authentication.
- self.sendall(struct.pack('BBB', 0x05, 0x01, 0x00))
+ self.sendall(struct.pack("BBB", 0x05, 0x01, 0x00))
# We'll receive the server's response to determine which
# method was selected
chosenauth = self.__recvall(2)
@@ -224,7 +275,13 @@ def __negotiatesocks5(self, destaddr, destport):
elif chosenauth[1:2] == chr(0x02).encode():
# Okay, we need to perform a basic username/password
# authentication.
- self.sendall(chr(0x01).encode() + chr(len(self.__proxy[4])) + self.__proxy[4] + chr(len(self.__proxy[5])) + self.__proxy[5])
+ self.sendall(
+ chr(0x01).encode()
+ + chr(len(self.__proxy[4]))
+ + self.__proxy[4]
+ + chr(len(self.__proxy[5]))
+ + self.__proxy[5]
+ )
authstat = self.__recvall(2)
if authstat[0:1] != chr(0x01).encode():
# Bad response
@@ -243,7 +300,7 @@ def __negotiatesocks5(self, destaddr, destport):
else:
raise GeneralProxyError((1, _generalerrors[1]))
# Now we can request the actual connection
- req = struct.pack('BBB', 0x05, 0x01, 0x00)
+ req = struct.pack("BBB", 0x05, 0x01, 0x00)
# If the given destination address is an IP address, we'll
# use the IPv4 address request even if remote resolving was specified.
try:
@@ -254,7 +311,12 @@ def __negotiatesocks5(self, destaddr, destport):
if self.__proxy[3]:
# Resolve remotely
ipaddr = None
- req = req + chr(0x03).encode() + chr(len(destaddr)).encode() + destaddr.encode()
+ req = (
+ req
+ + chr(0x03).encode()
+ + chr(len(destaddr)).encode()
+ + destaddr.encode()
+ )
else:
# Resolve locally
ipaddr = socket.inet_aton(socket.gethostbyname(destaddr))
@@ -269,7 +331,7 @@ def __negotiatesocks5(self, destaddr, destport):
elif resp[1:2] != chr(0x00).encode():
# Connection failed
self.close()
- if ord(resp[1:2])<=8:
+ if ord(resp[1:2]) <= 8:
raise Socks5Error((ord(resp[1:2]), _socks5errors[ord(resp[1:2])]))
else:
raise Socks5Error((9, _socks5errors[9]))
@@ -281,7 +343,7 @@ def __negotiatesocks5(self, destaddr, destport):
boundaddr = self.__recvall(ord(resp[4:5]))
else:
self.close()
- raise GeneralProxyError((1,_generalerrors[1]))
+ raise GeneralProxyError((1, _generalerrors[1]))
boundport = struct.unpack(">H", self.__recvall(2))[0]
self.__proxysockname = (boundaddr, boundport)
if ipaddr != None:
@@ -308,7 +370,7 @@ def getpeername(self):
"""
return self.__proxypeername
- def __negotiatesocks4(self,destaddr,destport):
+ def __negotiatesocks4(self, destaddr, destport):
"""__negotiatesocks4(self,destaddr,destport)
Negotiates a connection through a SOCKS4 server.
"""
@@ -340,7 +402,7 @@ def __negotiatesocks4(self,destaddr,destport):
if resp[0:1] != chr(0x00).encode():
# Bad data
self.close()
- raise GeneralProxyError((1,_generalerrors[1]))
+ raise GeneralProxyError((1, _generalerrors[1]))
if resp[1:2] != chr(0x5A).encode():
# Server returned an error
self.close()
@@ -350,7 +412,10 @@ def __negotiatesocks4(self,destaddr,destport):
else:
raise Socks4Error((94, _socks4errors[4]))
# Get the bound address/port
- self.__proxysockname = (socket.inet_ntoa(resp[4:]), struct.unpack(">H", resp[2:4])[0])
+ self.__proxysockname = (
+ socket.inet_ntoa(resp[4:]),
+ struct.unpack(">H", resp[2:4])[0],
+ )
if rmtrslv != None:
self.__proxypeername = (socket.inet_ntoa(ipaddr), destport)
else:
@@ -365,18 +430,18 @@ def __negotiatehttp(self, destaddr, destport):
addr = socket.gethostbyname(destaddr)
else:
addr = destaddr
- headers = ["CONNECT ", addr, ":", str(destport), " HTTP/1.1\r\n"]
+ headers = ["CONNECT ", addr, ":", str(destport), " HTTP/1.1\r\n"]
wrote_host_header = False
wrote_auth_header = False
if self.__proxy[6] != None:
for key, val in self.__proxy[6].iteritems():
headers += [key, ": ", val, "\r\n"]
- wrote_host_header = (key.lower() == "host")
- wrote_auth_header = (key.lower() == "proxy-authorization")
+ wrote_host_header = key.lower() == "host"
+ wrote_auth_header = key.lower() == "proxy-authorization"
if not wrote_host_header:
headers += ["Host: ", destaddr, "\r\n"]
if not wrote_auth_header:
- if (self.__proxy[4] != None and self.__proxy[5] != None):
+ if self.__proxy[4] != None and self.__proxy[5] != None:
headers += [self.__getauthheader(), "\r\n"]
headers.append("\r\n")
self.sendall("".join(headers).encode())
@@ -409,7 +474,12 @@ def connect(self, destpair):
To select the proxy server use setproxy().
"""
# Do a minimal input check first
- if (not type(destpair) in (list,tuple)) or (len(destpair) < 2) or (not isinstance(destpair[0], basestring)) or (type(destpair[1]) != int):
+ if (
+ (not type(destpair) in (list, tuple))
+ or (len(destpair) < 2)
+ or (not isinstance(destpair[0], basestring))
+ or (type(destpair[1]) != int)
+ ):
raise GeneralProxyError((5, _generalerrors[5]))
if self.__proxy[0] == PROXY_TYPE_SOCKS5:
if self.__proxy[2] != None:
@@ -423,23 +493,23 @@ def connect(self, destpair):
portnum = self.__proxy[2]
else:
portnum = 1080
- _orgsocket.connect(self,(self.__proxy[1], portnum))
+ _orgsocket.connect(self, (self.__proxy[1], portnum))
self.__negotiatesocks4(destpair[0], destpair[1])
elif self.__proxy[0] == PROXY_TYPE_HTTP:
if self.__proxy[2] != None:
portnum = self.__proxy[2]
else:
portnum = 8080
- _orgsocket.connect(self,(self.__proxy[1], portnum))
+ _orgsocket.connect(self, (self.__proxy[1], portnum))
self.__negotiatehttp(destpair[0], destpair[1])
elif self.__proxy[0] == PROXY_TYPE_HTTP_NO_TUNNEL:
if self.__proxy[2] != None:
portnum = self.__proxy[2]
else:
portnum = 8080
- _orgsocket.connect(self,(self.__proxy[1],portnum))
+ _orgsocket.connect(self, (self.__proxy[1], portnum))
if destpair[1] == 443:
- self.__negotiatehttp(destpair[0],destpair[1])
+ self.__negotiatehttp(destpair[0], destpair[1])
else:
self.__httptunnel = False
elif self.__proxy[0] == None:
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/brokensocket/socket.py b/third_party/gsutil/third_party/httplib2/python2/httplib2/test/brokensocket/socket.py
deleted file mode 100644
index ff7c0b74001..00000000000
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/brokensocket/socket.py
+++ /dev/null
@@ -1 +0,0 @@
-from realsocket import gaierror, error, getaddrinfo, SOCK_STREAM
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/functional/test_proxies.py b/third_party/gsutil/third_party/httplib2/python2/httplib2/test/functional/test_proxies.py
deleted file mode 100644
index e11369dafda..00000000000
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/functional/test_proxies.py
+++ /dev/null
@@ -1,89 +0,0 @@
-from __future__ import print_function
-import unittest
-import errno
-import os
-import signal
-import subprocess
-import tempfile
-
-import nose
-
-import httplib2
-from httplib2 import socks
-from httplib2.test import miniserver
-
-tinyproxy_cfg = """
-User "%(user)s"
-Port %(port)s
-Listen 127.0.0.1
-PidFile "%(pidfile)s"
-LogFile "%(logfile)s"
-MaxClients 2
-StartServers 1
-LogLevel Info
-"""
-
-
-class FunctionalProxyHttpTest(unittest.TestCase):
- def setUp(self):
- if not socks:
- raise nose.SkipTest('socks module unavailable')
- if not subprocess:
- raise nose.SkipTest('subprocess module unavailable')
-
- # start a short-lived miniserver so we can get a likely port
- # for the proxy
- self.httpd, self.proxyport = miniserver.start_server(
- miniserver.ThisDirHandler)
- self.httpd.shutdown()
- self.httpd, self.port = miniserver.start_server(
- miniserver.ThisDirHandler)
-
- self.pidfile = tempfile.mktemp()
- self.logfile = tempfile.mktemp()
- fd, self.conffile = tempfile.mkstemp()
- f = os.fdopen(fd, 'w')
- our_cfg = tinyproxy_cfg % {'user': os.getlogin(),
- 'pidfile': self.pidfile,
- 'port': self.proxyport,
- 'logfile': self.logfile}
- f.write(our_cfg)
- f.close()
- try:
- # TODO use subprocess.check_call when 2.4 is dropped
- ret = subprocess.call(['tinyproxy', '-c', self.conffile])
- self.assertEqual(0, ret)
- except OSError as e:
- if e.errno == errno.ENOENT:
- raise nose.SkipTest('tinyproxy not available')
- raise
-
- def tearDown(self):
- self.httpd.shutdown()
- try:
- pid = int(open(self.pidfile).read())
- os.kill(pid, signal.SIGTERM)
- except OSError as e:
- if e.errno == errno.ESRCH:
- print('\n\n\nTinyProxy Failed to start, log follows:')
- print(open(self.logfile).read())
- print('end tinyproxy log\n\n\n')
- raise
- map(os.unlink, (self.pidfile,
- self.logfile,
- self.conffile))
-
- def testSimpleProxy(self):
- proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP,
- 'localhost', self.proxyport)
- client = httplib2.Http(proxy_info=proxy_info)
- src = 'miniserver.py'
- response, body = client.request('http://localhost:%d/%s' %
- (self.port, src))
- self.assertEqual(response.status, 200)
- self.assertEqual(body, open(os.path.join(miniserver.HERE, src)).read())
- lf = open(self.logfile).read()
- expect = ('Established connection to host "127.0.0.1" '
- 'using file descriptor')
- self.assertTrue(expect in lf,
- 'tinyproxy did not proxy a request for miniserver')
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/server.key b/third_party/gsutil/third_party/httplib2/python2/httplib2/test/server.key
deleted file mode 100644
index 4c21facfefa..00000000000
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/server.key
+++ /dev/null
@@ -1,146 +0,0 @@
-Private TLS server key file used for HTTPS-related unit tests
--------------------------------------------------------------
-
-Public Key Info:
- Public Key Algorithm: RSA
- Key Security Level: Medium (2048 bits)
-
-modulus:
- 00:cc:fb:f1:c5:de:29:29:40:3f:c4:9f:af:da:f6:be
- 27:f4:6a:00:ae:5a:f2:99:c3:5f:7a:e6:9b:cf:d9:08
- 34:01:9b:ea:fb:da:b5:d0:b5:b2:4e:60:b4:0d:8d:05
- 57:e4:2e:04:d4:57:1a:58:3c:0b:3a:ed:67:a3:13:31
- 58:0a:c2:eb:fd:d6:27:ee:07:95:30:35:b5:98:91:c7
- a5:9b:be:a9:7e:ae:fd:73:c3:6b:21:bc:52:f8:ef:71
- db:d3:b1:cd:51:df:b3:37:b3:fd:7d:ae:7e:02:38:be
- 8e:6f:45:55:e5:6d:8a:02:cb:36:c4:17:7a:ea:24:9a
- 72:8d:1e:75:03:3a:6f:c4:cb:a0:3a:50:56:32:bb:4c
- e2:ea:74:f0:96:31:74:b2:c1:03:e8:c3:d4:a3:59:fc
- 7a:cc:68:35:c4:97:eb:aa:46:fa:64:c3:f9:55:59:22
- b5:2b:3c:96:84:c6:d2:7d:b4:9f:b9:9c:af:d1:20:30
- 7c:e8:60:4e:ee:0a:60:a0:9d:4e:8a:d8:34:74:bd:f2
- 40:bc:d7:c2:b3:1a:b2:bb:d7:a5:4a:4c:65:94:43:82
- 16:9a:8f:76:2a:05:b0:9e:3d:a7:fb:e2:c7:78:25:f7
- df:ca:08:ee:ec:4f:cd:1a:3c:03:41:ec:91:c5:50:70
- 4b:
-
-public exponent:
- 01:00:01:
-
-private exponent:
- 00:ad:01:83:b8:7d:dd:fd:ab:f5:66:2d:64:ce:08:ec
- cb:6a:15:41:87:e6:c8:d5:10:39:78:d0:43:f7:73:f4
- e1:77:ee:31:b0:e9:92:04:9a:25:e8:d2:e3:84:80:5e
- 5f:24:fd:d6:23:a5:74:5d:be:27:b8:4f:80:e5:f9:1f
- ef:6f:fd:be:12:1a:7a:cf:02:65:5f:30:25:99:a4:88
- 7d:74:ea:c1:c1:63:4e:15:33:7d:2b:16:f8:6c:94:23
- 63:e6:d3:2d:38:89:f6:87:f0:08:e5:d7:ad:10:90:f5
- fb:df:5c:04:b8:43:f0:74:95:31:1e:e5:b6:5f:02:0f
- bb:55:cb:e1:b5:48:9f:1f:d3:1b:55:a7:bc:39:2b:8e
- 6d:14:64:3b:bf:e8:ca:6b:af:a9:f3:13:9a:c6:df:15
- ef:6d:17:4e:8e:67:6c:41:20:dc:6b:08:0d:b9:14:cd
- 83:10:62:15:e6:b0:89:5d:37:fb:f6:fd:f0:bf:3b:9c
- 0b:e9:fd:b8:de:e4:64:90:bf:81:d5:59:2c:30:43:07
- b9:60:8c:d0:ac:4f:95:87:aa:38:62:bd:c7:06:a7:c4
- 2d:08:c1:3c:86:10:c7:8e:1e:df:58:bf:95:ad:39:84
- a0:2b:13:e2:18:e6:4a:80:f0:bc:04:50:bd:7d:cf:23
- a1:
-
-prime1:
- 00:f0:8f:ad:2f:c9:64:f3:0d:2c:aa:06:17:05:8f:2f
- d5:cb:92:22:90:05:66:3c:78:75:9d:7b:4c:6a:af:a9
- 1e:d6:28:4f:13:0e:3a:e7:31:49:3d:87:ef:2c:17:70
- be:69:b3:42:82:6d:9c:b4:13:0a:e4:bc:8c:0f:1a:bd
- 04:b6:a0:be:ba:12:15:bf:04:db:91:1c:26:91:d6:d7
- f2:ff:2f:0e:5f:96:a1:7c:4b:90:a8:2f:07:2a:cb:dc
- 40:a0:0b:1d:2a:1d:48:98:bd:4a:6b:9d:5c:69:b0:2b
- 6e:9b:2c:b2:a9:cb:28:fe:fa:7f:93:eb:20:c8:59:d0
- 11:
-
-prime2:
- 00:da:23:c0:3e:82:4c:88:7c:d4:fb:de:24:45:eb:9c
- ae:2c:80:2d:52:a6:95:05:33:b9:d8:c1:7b:52:01:62
- 11:e6:b6:c6:0d:56:a3:68:39:26:9a:90:08:95:12:a9
- 1c:59:f6:0b:1d:af:6d:c0:c6:9b:2e:7a:62:98:21:36
- e1:15:4c:e6:6d:a4:08:ac:90:af:57:86:71:78:2e:0e
- cf:59:0f:35:79:cb:6a:a2:e2:30:2a:a8:f2:84:68:bc
- 8a:f2:48:3b:07:d5:a5:34:f3:d3:ec:25:61:38:f1:0a
- 07:f7:7e:29:61:e4:15:01:80:e3:7b:bd:63:9c:2e:16
- 9b:
-
-coefficient:
- 00:cb:b4:d2:9f:b4:04:db:8c:54:e6:ae:a9:28:a0:c9
- 70:ad:7a:94:72:5e:86:33:91:d9:43:61:2b:4d:55:e8
- b7:25:d2:cd:db:1e:c4:56:95:68:85:e2:9b:4f:31:24
- 3a:40:06:41:1c:aa:7a:31:13:fa:07:e0:a6:59:c3:d1
- d2:c5:2c:6a:82:98:bb:a1:59:c0:6f:ad:d7:2e:ed:5a
- 64:5f:e6:ea:4a:ee:45:29:d9:0f:96:b3:39:f7:ab:57
- 97:aa:c9:f7:b6:9c:c0:51:5d:9f:01:2c:ec:58:8d:06
- 6a:19:d0:33:74:11:6a:25:7c:8f:b7:31:d2:97:05:02
- 6f:
-
-exp1:
- 00:87:60:43:95:1d:e0:0a:8b:82:74:18:43:42:64:a7
- 05:c8:ae:ef:76:5f:23:7e:aa:47:7e:1d:52:0e:c3:d6
- 07:bd:7b:27:ac:d0:98:43:5c:d0:1b:a9:70:e6:3e:36
- bb:61:5e:78:f2:4f:5f:1d:53:8e:10:d5:2e:78:9d:92
- 7b:a1:8e:ea:66:6a:21:04:c3:66:10:ce:67:c2:30:c6
- 8c:40:21:2a:14:8e:ff:47:a4:7a:be:ba:e0:6c:ac:16
- c1:e3:8e:fd:95:a2:af:25:0d:79:61:00:48:6e:4d:ae
- d3:6a:ce:07:a9:57:e4:35:41:a1:24:0b:f1:01:ee:d1
- 11:
-
-exp2:
- 00:ca:ca:bd:a7:de:fe:43:4c:b9:bb:c4:d2:37:e6:47
- ec:6c:16:65:0c:17:2d:26:7e:e5:e1:2a:4d:f8:f8:ac
- 31:34:28:ea:89:ef:e7:4d:b7:03:ba:60:f8:79:8d:b5
- 85:53:e4:b6:84:cc:57:de:05:44:b2:ba:b7:f9:f1:b6
- d1:1d:3a:36:65:eb:3e:dd:1e:4c:c3:b3:8a:bd:4d:24
- 1b:83:11:ee:86:e1:a2:aa:f6:58:0c:f0:af:34:85:21
- f2:92:36:b0:1a:22:75:c9:7a:7b:a3:67:44:b0:e8:f4
- 88:5f:7e:fb:fd:b3:4a:0b:f1:c4:89:7e:91:a1:d9:fe
- cd:
-
-
-Public Key ID: 92:D5:B4:2A:B6:A8:64:67:2C:2A:08:DB:51:B8:97:86:5E:44:CD:6C
-Public key's random art:
-+--[ RSA 2048]----+
-| + . |
-| . E o . |
-| o . . o |
-| . o o . |
-| = .= S |
-|. +.=o + |
-|o++== . |
-|++o= |
-|o . |
-+-----------------+
-
-
------BEGIN RSA PRIVATE KEY-----
-MIIEpgIBAAKCAQEAzPvxxd4pKUA/xJ+v2va+J/RqAK5a8pnDX3rmm8/ZCDQBm+r7
-2rXQtbJOYLQNjQVX5C4E1FcaWDwLOu1noxMxWArC6/3WJ+4HlTA1tZiRx6Wbvql+
-rv1zw2shvFL473Hb07HNUd+zN7P9fa5+Aji+jm9FVeVtigLLNsQXeuokmnKNHnUD
-Om/Ey6A6UFYyu0zi6nTwljF0ssED6MPUo1n8esxoNcSX66pG+mTD+VVZIrUrPJaE
-xtJ9tJ+5nK/RIDB86GBO7gpgoJ1Oitg0dL3yQLzXwrMasrvXpUpMZZRDghaaj3Yq
-BbCePaf74sd4Jfffygju7E/NGjwDQeyRxVBwSwIDAQABAoIBAQCtAYO4fd39q/Vm
-LWTOCOzLahVBh+bI1RA5eNBD93P04XfuMbDpkgSaJejS44SAXl8k/dYjpXRdvie4
-T4Dl+R/vb/2+Ehp6zwJlXzAlmaSIfXTqwcFjThUzfSsW+GyUI2Pm0y04ifaH8Ajl
-160QkPX731wEuEPwdJUxHuW2XwIPu1XL4bVInx/TG1WnvDkrjm0UZDu/6Mprr6nz
-E5rG3xXvbRdOjmdsQSDcawgNuRTNgxBiFeawiV03+/b98L87nAvp/bje5GSQv4HV
-WSwwQwe5YIzQrE+Vh6o4Yr3HBqfELQjBPIYQx44e31i/la05hKArE+IY5kqA8LwE
-UL19zyOhAoGBAPCPrS/JZPMNLKoGFwWPL9XLkiKQBWY8eHWde0xqr6ke1ihPEw46
-5zFJPYfvLBdwvmmzQoJtnLQTCuS8jA8avQS2oL66EhW/BNuRHCaR1tfy/y8OX5ah
-fEuQqC8HKsvcQKALHSodSJi9SmudXGmwK26bLLKpyyj++n+T6yDIWdARAoGBANoj
-wD6CTIh81PveJEXrnK4sgC1SppUFM7nYwXtSAWIR5rbGDVajaDkmmpAIlRKpHFn2
-Cx2vbcDGmy56YpghNuEVTOZtpAiskK9XhnF4Lg7PWQ81ectqouIwKqjyhGi8ivJI
-OwfVpTTz0+wlYTjxCgf3filh5BUBgON7vWOcLhabAoGBAIdgQ5Ud4AqLgnQYQ0Jk
-pwXIru92XyN+qkd+HVIOw9YHvXsnrNCYQ1zQG6lw5j42u2FeePJPXx1TjhDVLnid
-knuhjupmaiEEw2YQzmfCMMaMQCEqFI7/R6R6vrrgbKwWweOO/ZWiryUNeWEASG5N
-rtNqzgepV+Q1QaEkC/EB7tERAoGBAMrKvafe/kNMubvE0jfmR+xsFmUMFy0mfuXh
-Kk34+KwxNCjqie/nTbcDumD4eY21hVPktoTMV94FRLK6t/nxttEdOjZl6z7dHkzD
-s4q9TSQbgxHuhuGiqvZYDPCvNIUh8pI2sBoidcl6e6NnRLDo9Ihffvv9s0oL8cSJ
-fpGh2f7NAoGBAMu00p+0BNuMVOauqSigyXCtepRyXoYzkdlDYStNVei3JdLN2x7E
-VpVoheKbTzEkOkAGQRyqejET+gfgplnD0dLFLGqCmLuhWcBvrdcu7VpkX+bqSu5F
-KdkPlrM596tXl6rJ97acwFFdnwEs7FiNBmoZ0DN0EWolfI+3MdKXBQJv
------END RSA PRIVATE KEY-----
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/server.pem b/third_party/gsutil/third_party/httplib2/python2/httplib2/test/server.pem
deleted file mode 100644
index 49b6efc88a8..00000000000
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/server.pem
+++ /dev/null
@@ -1,50 +0,0 @@
-Public, self-signed TLS server key file used for HTTPS-related unit tests
--------------------------------------------------------------------------
-
-Public Key Information:
- Public Key Algorithm: RSA
- Algorithm Security Level: Medium (2048 bits)
- Modulus (bits 2048):
- 00:cc:fb:f1:c5:de:29:29:40:3f:c4:9f:af:da:f6:be
- 27:f4:6a:00:ae:5a:f2:99:c3:5f:7a:e6:9b:cf:d9:08
- 34:01:9b:ea:fb:da:b5:d0:b5:b2:4e:60:b4:0d:8d:05
- 57:e4:2e:04:d4:57:1a:58:3c:0b:3a:ed:67:a3:13:31
- 58:0a:c2:eb:fd:d6:27:ee:07:95:30:35:b5:98:91:c7
- a5:9b:be:a9:7e:ae:fd:73:c3:6b:21:bc:52:f8:ef:71
- db:d3:b1:cd:51:df:b3:37:b3:fd:7d:ae:7e:02:38:be
- 8e:6f:45:55:e5:6d:8a:02:cb:36:c4:17:7a:ea:24:9a
- 72:8d:1e:75:03:3a:6f:c4:cb:a0:3a:50:56:32:bb:4c
- e2:ea:74:f0:96:31:74:b2:c1:03:e8:c3:d4:a3:59:fc
- 7a:cc:68:35:c4:97:eb:aa:46:fa:64:c3:f9:55:59:22
- b5:2b:3c:96:84:c6:d2:7d:b4:9f:b9:9c:af:d1:20:30
- 7c:e8:60:4e:ee:0a:60:a0:9d:4e:8a:d8:34:74:bd:f2
- 40:bc:d7:c2:b3:1a:b2:bb:d7:a5:4a:4c:65:94:43:82
- 16:9a:8f:76:2a:05:b0:9e:3d:a7:fb:e2:c7:78:25:f7
- df:ca:08:ee:ec:4f:cd:1a:3c:03:41:ec:91:c5:50:70
- 4b
- Exponent (bits 24):
- 01:00:01
-
-Public Key Usage:
-
-Public Key ID: 92d5b42ab6a864672c2a08db51b897865e44cd6c
-
-
------BEGIN CERTIFICATE-----
-MIIC+zCCAeOgAwIBAgIJAISbkoXpX75CMA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV
-BAMMCWxvY2FsaG9zdDAeFw0xNjA2MTcxNDA1NTlaFw0yNjA2MTUxNDA1NTlaMBQx
-EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAMz78cXeKSlAP8Sfr9r2vif0agCuWvKZw1965pvP2Qg0AZvq+9q10LWyTmC0
-DY0FV+QuBNRXGlg8CzrtZ6MTMVgKwuv91ifuB5UwNbWYkcelm76pfq79c8NrIbxS
-+O9x29OxzVHfszez/X2ufgI4vo5vRVXlbYoCyzbEF3rqJJpyjR51AzpvxMugOlBW
-MrtM4up08JYxdLLBA+jD1KNZ/HrMaDXEl+uqRvpkw/lVWSK1KzyWhMbSfbSfuZyv
-0SAwfOhgTu4KYKCdTorYNHS98kC818KzGrK716VKTGWUQ4IWmo92KgWwnj2n++LH
-eCX338oI7uxPzRo8A0HskcVQcEsCAwEAAaNQME4wHQYDVR0OBBYEFFdXD8Z8k0et
-ZNyM4e4WypNnGlcCMB8GA1UdIwQYMBaAFFdXD8Z8k0etZNyM4e4WypNnGlcCMAwG
-A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAC4FsnK1Ph/JpdoqSRTCJiVM
-MPFaaavKEEyYdAKPk/Acmb9vf07sqsT+OZg/0obsZG9LxJb7x0iAnhfM3aS+CmO9
-Ym2lXeFDaJ2bHooB9MsG2C3+n8lJUMwxm7Cqpff/lpCK6Z+6MGPx3GRs6HUEl34k
-BB5pue2vqhtFQ03UdHMpAK0M7n3TloAWbFb1a/JmqzTbsQ0oaMHGoECQEAbaBl+a
-/up6vA3iZHq+ZPYS1KIx+xuT/SapLcyUtjfhmq1bROVZP4+6EHMsBMnhJBYKxxHy
-0qKvqJL9X3NQLMgMKKUKzX+BuG2u5aRRyVIqewT/ORjaUr9Y8lU7WlXPf7Ljm6s=
------END CERTIFICATE-----
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/smoke_test.py b/third_party/gsutil/third_party/httplib2/python2/httplib2/test/smoke_test.py
deleted file mode 100644
index 9f1e6f01d6d..00000000000
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/smoke_test.py
+++ /dev/null
@@ -1,23 +0,0 @@
-import os
-import unittest
-
-import httplib2
-
-from httplib2.test import miniserver
-
-
-class HttpSmokeTest(unittest.TestCase):
- def setUp(self):
- self.httpd, self.port = miniserver.start_server(
- miniserver.ThisDirHandler)
-
- def tearDown(self):
- self.httpd.shutdown()
-
- def testGetFile(self):
- client = httplib2.Http()
- src = 'miniserver.py'
- response, body = client.request('http://localhost:%d/%s' %
- (self.port, src))
- self.assertEqual(response.status, 200)
- self.assertEqual(body, open(os.path.join(miniserver.HERE, src)).read())
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/test_no_socket.py b/third_party/gsutil/third_party/httplib2/python2/httplib2/test/test_no_socket.py
deleted file mode 100644
index 66ba0563764..00000000000
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2/test/test_no_socket.py
+++ /dev/null
@@ -1,24 +0,0 @@
-"""Tests for httplib2 when the socket module is missing.
-
-This helps ensure compatibility with environments such as AppEngine.
-"""
-import os
-import sys
-import unittest
-
-import httplib2
-
-class MissingSocketTest(unittest.TestCase):
- def setUp(self):
- self._oldsocks = httplib2.socks
- httplib2.socks = None
-
- def tearDown(self):
- httplib2.socks = self._oldsocks
-
- def testProxyDisabled(self):
- proxy_info = httplib2.ProxyInfo('blah',
- 'localhost', 0)
- client = httplib2.Http(proxy_info=proxy_info)
- self.assertRaises(httplib2.ProxiesUnavailableError,
- client.request, 'http://localhost:-1/')
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2test.py b/third_party/gsutil/third_party/httplib2/python2/httplib2test.py
deleted file mode 100644
index 82faabc0d65..00000000000
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2test.py
+++ /dev/null
@@ -1,1703 +0,0 @@
-#!/usr/bin/env python2.4
-"""
-httplib2test
-
-A set of unit tests for httplib2.py.
-
-Requires Python 2.4 or later
-"""
-
-__author__ = "Joe Gregorio (joe@bitworking.org)"
-__copyright__ = "Copyright 2006, Joe Gregorio"
-__contributors__ = []
-__license__ = "MIT"
-__history__ = """ """
-__version__ = "0.1 ($Rev: 118 $)"
-
-
-import StringIO
-import base64
-import httplib
-import httplib2
-import os
-import pickle
-import socket
-import sys
-import time
-import unittest
-import urlparse
-
-try:
- import ssl
-except ImportError:
- pass
-
-# Python 2.3 support
-if not hasattr(unittest.TestCase, 'assertTrue'):
- unittest.TestCase.assertTrue = unittest.TestCase.failUnless
- unittest.TestCase.assertFalse = unittest.TestCase.failIf
-
-# The test resources base uri
-base = 'http://bitworking.org/projects/httplib2/test/'
-#base = 'http://localhost/projects/httplib2/test/'
-cacheDirName = ".cache"
-
-
-class CredentialsTest(unittest.TestCase):
- def test(self):
- c = httplib2.Credentials()
- c.add("joe", "password")
- self.assertEqual(("joe", "password"), list(c.iter("bitworking.org"))[0])
- self.assertEqual(("joe", "password"), list(c.iter(""))[0])
- c.add("fred", "password2", "wellformedweb.org")
- self.assertEqual(("joe", "password"), list(c.iter("bitworking.org"))[0])
- self.assertEqual(1, len(list(c.iter("bitworking.org"))))
- self.assertEqual(2, len(list(c.iter("wellformedweb.org"))))
- self.assertTrue(("fred", "password2") in list(c.iter("wellformedweb.org")))
- c.clear()
- self.assertEqual(0, len(list(c.iter("bitworking.org"))))
- c.add("fred", "password2", "wellformedweb.org")
- self.assertTrue(("fred", "password2") in list(c.iter("wellformedweb.org")))
- self.assertEqual(0, len(list(c.iter("bitworking.org"))))
- self.assertEqual(0, len(list(c.iter(""))))
-
-
-class ParserTest(unittest.TestCase):
- def testFromStd66(self):
- self.assertEqual( ('http', 'example.com', '', None, None ), httplib2.parse_uri("http://example.com"))
- self.assertEqual( ('https', 'example.com', '', None, None ), httplib2.parse_uri("https://example.com"))
- self.assertEqual( ('https', 'example.com:8080', '', None, None ), httplib2.parse_uri("https://example.com:8080"))
- self.assertEqual( ('http', 'example.com', '/', None, None ), httplib2.parse_uri("http://example.com/"))
- self.assertEqual( ('http', 'example.com', '/path', None, None ), httplib2.parse_uri("http://example.com/path"))
- self.assertEqual( ('http', 'example.com', '/path', 'a=1&b=2', None ), httplib2.parse_uri("http://example.com/path?a=1&b=2"))
- self.assertEqual( ('http', 'example.com', '/path', 'a=1&b=2', 'fred' ), httplib2.parse_uri("http://example.com/path?a=1&b=2#fred"))
- self.assertEqual( ('http', 'example.com', '/path', 'a=1&b=2', 'fred' ), httplib2.parse_uri("http://example.com/path?a=1&b=2#fred"))
-
-
-class UrlNormTest(unittest.TestCase):
- def test(self):
- self.assertEqual( "http://example.org/", httplib2.urlnorm("http://example.org")[-1])
- self.assertEqual( "http://example.org/", httplib2.urlnorm("http://EXAMple.org")[-1])
- self.assertEqual( "http://example.org/?=b", httplib2.urlnorm("http://EXAMple.org?=b")[-1])
- self.assertEqual( "http://example.org/mypath?a=b", httplib2.urlnorm("http://EXAMple.org/mypath?a=b")[-1])
- self.assertEqual( "http://localhost:80/", httplib2.urlnorm("http://localhost:80")[-1])
- self.assertEqual( httplib2.urlnorm("http://localhost:80/"), httplib2.urlnorm("HTTP://LOCALHOST:80"))
- try:
- httplib2.urlnorm("/")
- self.fail("Non-absolute URIs should raise an exception")
- except httplib2.RelativeURIError:
- pass
-
-class UrlSafenameTest(unittest.TestCase):
- def test(self):
- # Test that different URIs end up generating different safe names
- self.assertEqual( "example.org,fred,a=b,58489f63a7a83c3b7794a6a398ee8b1f", httplib2.safename("http://example.org/fred/?a=b"))
- self.assertEqual( "example.org,fred,a=b,8c5946d56fec453071f43329ff0be46b", httplib2.safename("http://example.org/fred?/a=b"))
- self.assertEqual( "www.example.org,fred,a=b,499c44b8d844a011b67ea2c015116968", httplib2.safename("http://www.example.org/fred?/a=b"))
- self.assertEqual( httplib2.safename(httplib2.urlnorm("http://www")[-1]), httplib2.safename(httplib2.urlnorm("http://WWW")[-1]))
- self.assertEqual( "www.example.org,fred,a=b,692e843a333484ce0095b070497ab45d", httplib2.safename("https://www.example.org/fred?/a=b"))
- self.assertNotEqual( httplib2.safename("http://www"), httplib2.safename("https://www"))
- # Test the max length limits
- uri = "http://" + ("w" * 200) + ".org"
- uri2 = "http://" + ("w" * 201) + ".org"
- self.assertNotEqual( httplib2.safename(uri2), httplib2.safename(uri))
- # Max length should be 200 + 1 (",") + 32
- self.assertEqual(233, len(httplib2.safename(uri2)))
- self.assertEqual(233, len(httplib2.safename(uri)))
- # Unicode
- if sys.version_info >= (2,3):
- self.assertEqual( "xn--http,-4y1d.org,fred,a=b,579924c35db315e5a32e3d9963388193", httplib2.safename(u"http://\u2304.org/fred/?a=b"))
-
-class _MyResponse(StringIO.StringIO):
- def __init__(self, body, **kwargs):
- StringIO.StringIO.__init__(self, body)
- self.headers = kwargs
-
- def iteritems(self):
- return self.headers.iteritems()
-
-
-class _MyHTTPConnection(object):
- "This class is just a mock of httplib.HTTPConnection used for testing"
-
- def __init__(self, host, port=None, key_file=None, cert_file=None,
- strict=None, timeout=None, proxy_info=None):
- self.host = host
- self.port = port
- self.timeout = timeout
- self.log = ""
- self.sock = None
-
- def set_debuglevel(self, level):
- pass
-
- def connect(self):
- "Connect to a host on a given port."
- pass
-
- def close(self):
- pass
-
- def request(self, method, request_uri, body, headers):
- pass
-
- def getresponse(self):
- return _MyResponse("the body", status="200")
-
-class _MyHTTPBadStatusConnection(object):
- "Mock of httplib.HTTPConnection that raises BadStatusLine."
-
- num_calls = 0
-
- def __init__(self, host, port=None, key_file=None, cert_file=None,
- strict=None, timeout=None, proxy_info=None):
- self.host = host
- self.port = port
- self.timeout = timeout
- self.log = ""
- self.sock = None
- _MyHTTPBadStatusConnection.num_calls = 0
-
- def set_debuglevel(self, level):
- pass
-
- def connect(self):
- pass
-
- def close(self):
- pass
-
- def request(self, method, request_uri, body, headers):
- pass
-
- def getresponse(self):
- _MyHTTPBadStatusConnection.num_calls += 1
- raise httplib.BadStatusLine("")
-
-
-class HttpTest(unittest.TestCase):
- def setUp(self):
- if os.path.exists(cacheDirName):
- [os.remove(os.path.join(cacheDirName, file)) for file in os.listdir(cacheDirName)]
-
- if sys.version_info < (2, 6):
- disable_cert_validation = True
- else:
- disable_cert_validation = False
- self.http = httplib2.Http(
- cacheDirName,
- disable_ssl_certificate_validation=disable_cert_validation)
- self.http.clear_credentials()
-
- def testIPv6NoSSL(self):
- try:
- self.http.request("http://[::1]/")
- except socket.gaierror:
- self.fail("should get the address family right for IPv6")
- except socket.error:
- # Even if IPv6 isn't installed on a machine it should just raise socket.error
- pass
-
- def testIPv6SSL(self):
- try:
- self.http.request("https://[::1]/")
- except socket.gaierror:
- self.fail("should get the address family right for IPv6")
- except httplib2.CertificateHostnameMismatch:
- # We connected and verified that the certificate doesn't match
- # the name. Good enough.
- pass
- except socket.error:
- # Even if IPv6 isn't installed on a machine it should just raise socket.error
- pass
-
- def testConnectionType(self):
- self.http.force_exception_to_status_code = False
- response, content = self.http.request("http://bitworking.org", connection_type=_MyHTTPConnection)
- self.assertEqual(response['content-location'], "http://bitworking.org")
- self.assertEqual(content, "the body")
-
- def testBadStatusLineRetry(self):
- old_retries = httplib2.RETRIES
- httplib2.RETRIES = 1
- self.http.force_exception_to_status_code = False
- try:
- response, content = self.http.request("http://bitworking.org",
- connection_type=_MyHTTPBadStatusConnection)
- except httplib.BadStatusLine:
- self.assertEqual(2, _MyHTTPBadStatusConnection.num_calls)
- httplib2.RETRIES = old_retries
-
- def testGetUnknownServer(self):
- self.http.force_exception_to_status_code = False
- try:
- self.http.request("http://fred.bitworking.org/")
- self.fail("An httplib2.ServerNotFoundError Exception must be thrown on an unresolvable server.")
- except httplib2.ServerNotFoundError:
- pass
-
- # Now test with exceptions turned off
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request("http://fred.bitworking.org/")
- self.assertEqual(response['content-type'], 'text/plain')
- self.assertTrue(content.startswith("Unable to find"))
- self.assertEqual(response.status, 400)
-
- def testGetConnectionRefused(self):
- self.http.force_exception_to_status_code = False
- try:
- self.http.request("http://localhost:7777/")
- self.fail("An socket.error exception must be thrown on Connection Refused.")
- except socket.error:
- pass
-
- # Now test with exceptions turned off
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request("http://localhost:7777/")
- self.assertEqual(response['content-type'], 'text/plain')
- self.assertTrue("Connection refused" in content
- or "actively refused" in content,
- "Unexpected status %(content)s" % vars())
- self.assertEqual(response.status, 400)
-
- def testGetIRI(self):
- if sys.version_info >= (2,3):
- uri = urlparse.urljoin(base, u"reflector/reflector.cgi?d=\N{CYRILLIC CAPITAL LETTER DJE}")
- (response, content) = self.http.request(uri, "GET")
- d = self.reflector(content)
- self.assertTrue('QUERY_STRING' in d)
- self.assertTrue(d['QUERY_STRING'].find('%D0%82') > 0)
-
- def testGetIsDefaultMethod(self):
- # Test that GET is the default method
- uri = urlparse.urljoin(base, "methods/method_reflector.cgi")
- (response, content) = self.http.request(uri)
- self.assertEqual(response['x-method'], "GET")
-
- def testDifferentMethods(self):
- # Test that all methods can be used
- uri = urlparse.urljoin(base, "methods/method_reflector.cgi")
- for method in ["GET", "PUT", "DELETE", "POST"]:
- (response, content) = self.http.request(uri, method, body=" ")
- self.assertEqual(response['x-method'], method)
-
- def testHeadRead(self):
- # Test that we don't try to read the response of a HEAD request
- # since httplib blocks response.read() for HEAD requests.
- # Oddly enough this doesn't appear as a problem when doing HEAD requests
- # against Apache servers.
- uri = "http://www.google.com/"
- (response, content) = self.http.request(uri, "HEAD")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, "")
-
- def testGetNoCache(self):
- # Test that can do a GET w/o the cache turned on.
- http = httplib2.Http()
- uri = urlparse.urljoin(base, "304/test_etag.txt")
- (response, content) = http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.previous, None)
-
- def testGetOnlyIfCachedCacheHit(self):
- # Test that can do a GET with cache and 'only-if-cached'
- uri = urlparse.urljoin(base, "304/test_etag.txt")
- (response, content) = self.http.request(uri, "GET")
- (response, content) = self.http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
- self.assertEqual(response.fromcache, True)
- self.assertEqual(response.status, 200)
-
- def testGetOnlyIfCachedCacheMiss(self):
- # Test that can do a GET with no cache with 'only-if-cached'
- uri = urlparse.urljoin(base, "304/test_etag.txt")
- (response, content) = self.http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
- self.assertEqual(response.fromcache, False)
- self.assertEqual(response.status, 504)
-
- def testGetOnlyIfCachedNoCacheAtAll(self):
- # Test that can do a GET with no cache with 'only-if-cached'
- # Of course, there might be an intermediary beyond us
- # that responds to the 'only-if-cached', so this
- # test can't really be guaranteed to pass.
- http = httplib2.Http()
- uri = urlparse.urljoin(base, "304/test_etag.txt")
- (response, content) = http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
- self.assertEqual(response.fromcache, False)
- self.assertEqual(response.status, 504)
-
- def testUserAgent(self):
- # Test that we provide a default user-agent
- uri = urlparse.urljoin(base, "user-agent/test.cgi")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertTrue(content.startswith("Python-httplib2/"))
-
- def testUserAgentNonDefault(self):
- # Test that the default user-agent can be over-ridden
-
- uri = urlparse.urljoin(base, "user-agent/test.cgi")
- (response, content) = self.http.request(uri, "GET", headers={'User-Agent': 'fred/1.0'})
- self.assertEqual(response.status, 200)
- self.assertTrue(content.startswith("fred/1.0"))
-
- def testGet300WithLocation(self):
- # Test the we automatically follow 300 redirects if a Location: header is provided
- uri = urlparse.urljoin(base, "300/with-location-header.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, "This is the final destination.\n")
- self.assertEqual(response.previous.status, 300)
- self.assertEqual(response.previous.fromcache, False)
-
- # Confirm that the intermediate 300 is not cached
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, "This is the final destination.\n")
- self.assertEqual(response.previous.status, 300)
- self.assertEqual(response.previous.fromcache, False)
-
- def testGet300WithLocationNoRedirect(self):
- # Test the we automatically follow 300 redirects if a Location: header is provided
- self.http.follow_redirects = False
- uri = urlparse.urljoin(base, "300/with-location-header.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 300)
-
- def testGet300WithoutLocation(self):
- # Not giving a Location: header in a 300 response is acceptable
- # In which case we just return the 300 response
- uri = urlparse.urljoin(base, "300/without-location-header.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 300)
- self.assertTrue(response['content-type'].startswith("text/html"))
- self.assertEqual(response.previous, None)
-
- def testGet301(self):
- # Test that we automatically follow 301 redirects
- # and that we cache the 301 response
- uri = urlparse.urljoin(base, "301/onestep.asis")
- destination = urlparse.urljoin(base, "302/final-destination.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertTrue('content-location' in response)
- self.assertEqual(response['content-location'], destination)
- self.assertEqual(content, "This is the final destination.\n")
- self.assertEqual(response.previous.status, 301)
- self.assertEqual(response.previous.fromcache, False)
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response['content-location'], destination)
- self.assertEqual(content, "This is the final destination.\n")
- self.assertEqual(response.previous.status, 301)
- self.assertEqual(response.previous.fromcache, True)
-
- def testHead301(self):
- # Test that we automatically follow 301 redirects
- uri = urlparse.urljoin(base, "301/onestep.asis")
- destination = urlparse.urljoin(base, "302/final-destination.txt")
- (response, content) = self.http.request(uri, "HEAD")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.previous.status, 301)
- self.assertEqual(response.previous.fromcache, False)
-
- def testGet301NoRedirect(self):
- # Test that we automatically follow 301 redirects
- # and that we cache the 301 response
- self.http.follow_redirects = False
- uri = urlparse.urljoin(base, "301/onestep.asis")
- destination = urlparse.urljoin(base, "302/final-destination.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 301)
-
-
- def testGet302(self):
- # Test that we automatically follow 302 redirects
- # and that we DO NOT cache the 302 response
- uri = urlparse.urljoin(base, "302/onestep.asis")
- destination = urlparse.urljoin(base, "302/final-destination.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response['content-location'], destination)
- self.assertEqual(content, "This is the final destination.\n")
- self.assertEqual(response.previous.status, 302)
- self.assertEqual(response.previous.fromcache, False)
-
- uri = urlparse.urljoin(base, "302/onestep.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- self.assertEqual(response['content-location'], destination)
- self.assertEqual(content, "This is the final destination.\n")
- self.assertEqual(response.previous.status, 302)
- self.assertEqual(response.previous.fromcache, False)
- self.assertEqual(response.previous['content-location'], uri)
-
- uri = urlparse.urljoin(base, "302/twostep.asis")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- self.assertEqual(content, "This is the final destination.\n")
- self.assertEqual(response.previous.status, 302)
- self.assertEqual(response.previous.fromcache, False)
-
- def testGet302RedirectionLimit(self):
- # Test that we can set a lower redirection limit
- # and that we raise an exception when we exceed
- # that limit.
- self.http.force_exception_to_status_code = False
-
- uri = urlparse.urljoin(base, "302/twostep.asis")
- try:
- (response, content) = self.http.request(uri, "GET", redirections = 1)
- self.fail("This should not happen")
- except httplib2.RedirectLimit:
- pass
- except Exception as e:
- self.fail("Threw wrong kind of exception ")
-
- # Re-run the test with out the exceptions
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request(uri, "GET", redirections = 1)
- self.assertEqual(response.status, 500)
- self.assertTrue(response.reason.startswith("Redirected more"))
- self.assertEqual("302", response['status'])
- self.assertTrue(content.startswith(""))
- self.assertTrue(response.previous != None)
-
- def testGet302NoLocation(self):
- # Test that we throw an exception when we get
- # a 302 with no Location: header.
- self.http.force_exception_to_status_code = False
- uri = urlparse.urljoin(base, "302/no-location.asis")
- try:
- (response, content) = self.http.request(uri, "GET")
- self.fail("Should never reach here")
- except httplib2.RedirectMissingLocation:
- pass
- except Exception as e:
- self.fail("Threw wrong kind of exception ")
-
- # Re-run the test with out the exceptions
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 500)
- self.assertTrue(response.reason.startswith("Redirected but"))
- self.assertEqual("302", response['status'])
- self.assertTrue(content.startswith("This is content"))
-
- def testGet301ViaHttps(self):
- # Google always redirects to https://www.google.com
- (response, content) = self.http.request("https://code.google.com/apis/", "GET")
- self.assertEqual(200, response.status)
- self.assertEqual(301, response.previous.status)
-
- def testGetViaHttps(self):
- # Test that we can handle HTTPS
- (response, content) = self.http.request("https://www.google.com/adsense/", "GET")
- self.assertEqual(200, response.status)
-
- def testGetViaHttpsSpecViolationOnLocation(self):
- # Test that we follow redirects through HTTPS
- # even if they violate the spec by including
- # a relative Location: header instead of an
- # absolute one.
- (response, content) = self.http.request("https://www.google.com/adsense", "GET")
- self.assertEqual(200, response.status)
- self.assertNotEqual(None, response.previous)
-
- def testSslCertValidationDoubleDots(self):
- pass
- # No longer a valid test.
- #if sys.version_info >= (2, 6):
- # Test that we get match a double dot cert
- #try:
- # self.http.request("https://www.appspot.com/", "GET")
- #except httplib2.CertificateHostnameMismatch:
- # self.fail('cert with *.*.appspot.com should not raise an exception.')
-
- def testSslHostnameValidation(self):
- pass
- # No longer a valid test.
- #if sys.version_info >= (2, 6):
- # The SSL server at google.com:443 returns a certificate for
- # 'www.google.com', which results in a host name mismatch.
- # Note that this test only works because the ssl module and httplib2
- # do not support SNI; for requests specifying a server name of
- # 'google.com' via SNI, a matching cert would be returned.
- # self.assertRaises(httplib2.CertificateHostnameMismatch,
- # self.http.request, "https://google.com/", "GET")
-
- def testSslCertValidationWithoutSslModuleFails(self):
- if sys.version_info < (2, 6):
- http = httplib2.Http(disable_ssl_certificate_validation=False)
- self.assertRaises(httplib2.CertificateValidationUnsupported,
- http.request, "https://www.google.com/", "GET")
-
- def testGetViaHttpsKeyCert(self):
- # At this point I can only test
- # that the key and cert files are passed in
- # correctly to httplib. It would be nice to have
- # a real https endpoint to test against.
-
- # bitworking.org presents an certificate for a non-matching host
- # (*.webfaction.com), so we need to disable cert checking for this test.
- http = httplib2.Http(timeout=2, disable_ssl_certificate_validation=True)
-
- http.add_certificate("akeyfile", "acertfile", "bitworking.org")
- try:
- (response, content) = http.request("https://bitworking.org", "GET")
- except:
- pass
- self.assertEqual(http.connections["https:bitworking.org"].key_file, "akeyfile")
- self.assertEqual(http.connections["https:bitworking.org"].cert_file, "acertfile")
-
- try:
- (response, content) = http.request("https://notthere.bitworking.org", "GET")
- except:
- pass
- self.assertEqual(http.connections["https:notthere.bitworking.org"].key_file, None)
- self.assertEqual(http.connections["https:notthere.bitworking.org"].cert_file, None)
-
-
-
-
- def testGet303(self):
- # Do a follow-up GET on a Location: header
- # returned from a POST that gave a 303.
- uri = urlparse.urljoin(base, "303/303.cgi")
- (response, content) = self.http.request(uri, "POST", " ")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, "This is the final destination.\n")
- self.assertEqual(response.previous.status, 303)
-
- def testGet303NoRedirect(self):
- # Do a follow-up GET on a Location: header
- # returned from a POST that gave a 303.
- self.http.follow_redirects = False
- uri = urlparse.urljoin(base, "303/303.cgi")
- (response, content) = self.http.request(uri, "POST", " ")
- self.assertEqual(response.status, 303)
-
- def test303ForDifferentMethods(self):
- # Test that all methods can be used
- uri = urlparse.urljoin(base, "303/redirect-to-reflector.cgi")
- for (method, method_on_303) in [("PUT", "GET"), ("DELETE", "GET"), ("POST", "GET"), ("GET", "GET"), ("HEAD", "GET")]:
- (response, content) = self.http.request(uri, method, body=" ")
- self.assertEqual(response['x-method'], method_on_303)
-
- def test303AndForwardAuthorizationHeader(self):
- # Test that all methods can be used
- uri = urlparse.urljoin(base, "303/redirect-to-header-reflector.cgi")
- headers = {'authorization': 'Bearer foo'}
- response, content = self.http.request(uri, 'GET', body=" ",
- headers=headers)
- # self.assertTrue('authorization' not in content)
- self.http.follow_all_redirects = True
- self.http.forward_authorization_headers = True
- response, content = self.http.request(uri, 'GET', body=" ",
- headers=headers)
- # Oh, how I wish Apache didn't eat the Authorization header.
- # self.assertTrue('authorization' in content)
-
- def testGet304(self):
- # Test that we use ETags properly to validate our cache
- uri = urlparse.urljoin(base, "304/test_etag.txt")
- (response, content) = self.http.request(uri, "GET", headers= {'accept-encoding': 'identity'})
- self.assertNotEqual(response['etag'], "")
-
- (response, content) = self.http.request(uri, "GET")
- (response, content) = self.http.request(uri, "GET", headers = {'cache-control': 'must-revalidate'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
-
- cache_file_name = os.path.join(cacheDirName, httplib2.safename(httplib2.urlnorm(uri)[-1]))
- f = open(cache_file_name, "r")
- status_line = f.readline()
- f.close()
-
- self.assertTrue(status_line.startswith("status:"))
-
- (response, content) = self.http.request(uri, "HEAD")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
-
- (response, content) = self.http.request(uri, "GET", headers = {'range': 'bytes=0-0'})
- self.assertEqual(response.status, 206)
- self.assertEqual(response.fromcache, False)
-
- def testGetIgnoreEtag(self):
- # Test that we can forcibly ignore ETags
- uri = urlparse.urljoin(base, "reflector/reflector.cgi")
- (response, content) = self.http.request(uri, "GET", headers= {'accept-encoding': 'identity'})
- self.assertNotEqual(response['etag'], "")
-
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'cache-control': 'max-age=0'})
- d = self.reflector(content)
- self.assertTrue('HTTP_IF_NONE_MATCH' in d)
-
- self.http.ignore_etag = True
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'cache-control': 'max-age=0'})
- d = self.reflector(content)
- self.assertEqual(response.fromcache, False)
- self.assertFalse('HTTP_IF_NONE_MATCH' in d)
-
- def testOverrideEtag(self):
- # Test that we can forcibly ignore ETags
- uri = urlparse.urljoin(base, "reflector/reflector.cgi")
- (response, content) = self.http.request(uri, "GET", headers= {'accept-encoding': 'identity'})
- self.assertNotEqual(response['etag'], "")
-
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'cache-control': 'max-age=0'})
- d = self.reflector(content)
- self.assertTrue('HTTP_IF_NONE_MATCH' in d)
- self.assertNotEqual(d['HTTP_IF_NONE_MATCH'], "fred")
-
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'cache-control': 'max-age=0', 'if-none-match': 'fred'})
- d = self.reflector(content)
- self.assertTrue('HTTP_IF_NONE_MATCH' in d)
- self.assertEqual(d['HTTP_IF_NONE_MATCH'], "fred")
-
-#MAP-commented this out because it consistently fails
-# def testGet304EndToEnd(self):
-# # Test that end to end headers get overwritten in the cache
-# uri = urlparse.urljoin(base, "304/end2end.cgi")
-# (response, content) = self.http.request(uri, "GET")
-# self.assertNotEqual(response['etag'], "")
-# old_date = response['date']
-# time.sleep(2)
-#
-# (response, content) = self.http.request(uri, "GET", headers = {'Cache-Control': 'max-age=0'})
-# # The response should be from the cache, but the Date: header should be updated.
-# new_date = response['date']
-# self.assertNotEqual(new_date, old_date)
-# self.assertEqual(response.status, 200)
-# self.assertEqual(response.fromcache, True)
-
- def testGet304LastModified(self):
- # Test that we can still handle a 304
- # by only using the last-modified cache validator.
- uri = urlparse.urljoin(base, "304/last-modified-only/last-modified-only.txt")
- (response, content) = self.http.request(uri, "GET")
-
- self.assertNotEqual(response['last-modified'], "")
- (response, content) = self.http.request(uri, "GET")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
-
- def testGet307(self):
- # Test that we do follow 307 redirects but
- # do not cache the 307
- uri = urlparse.urljoin(base, "307/onestep.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, "This is the final destination.\n")
- self.assertEqual(response.previous.status, 307)
- self.assertEqual(response.previous.fromcache, False)
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- self.assertEqual(content, "This is the final destination.\n")
- self.assertEqual(response.previous.status, 307)
- self.assertEqual(response.previous.fromcache, False)
-
- def testGet410(self):
- # Test that we pass 410's through
- uri = urlparse.urljoin(base, "410/410.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 410)
-
- def testVaryHeaderSimple(self):
- """
- RFC 2616 13.6
- When the cache receives a subsequent request whose Request-URI
- specifies one or more cache entries including a Vary header field,
- the cache MUST NOT use such a cache entry to construct a response
- to the new request unless all of the selecting request-headers
- present in the new request match the corresponding stored
- request-headers in the original request.
- """
- # test that the vary header is sent
- uri = urlparse.urljoin(base, "vary/accept.asis")
- (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/plain'})
- self.assertEqual(response.status, 200)
- self.assertTrue('vary' in response)
-
- # get the resource again, from the cache since accept header in this
- # request is the same as the request
- (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/plain'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True, msg="Should be from cache")
-
- # get the resource again, not from cache since Accept headers does not match
- (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/html'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False, msg="Should not be from cache")
-
- # get the resource again, without any Accept header, so again no match
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False, msg="Should not be from cache")
-
- def testNoVary(self):
- pass
- # when there is no vary, a different Accept header (e.g.) should not
- # impact if the cache is used
- # test that the vary header is not sent
- # uri = urlparse.urljoin(base, "vary/no-vary.asis")
- # (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/plain'})
- # self.assertEqual(response.status, 200)
- # self.assertFalse(response.has_key('vary'))
-
- # (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/plain'})
- # self.assertEqual(response.status, 200)
- # self.assertEqual(response.fromcache, True, msg="Should be from cache")
- #
- # (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/html'})
- # self.assertEqual(response.status, 200)
- # self.assertEqual(response.fromcache, True, msg="Should be from cache")
-
- def testVaryHeaderDouble(self):
- uri = urlparse.urljoin(base, "vary/accept-double.asis")
- (response, content) = self.http.request(uri, "GET", headers={
- 'Accept': 'text/plain', 'Accept-Language': 'da, en-gb;q=0.8, en;q=0.7'})
- self.assertEqual(response.status, 200)
- self.assertTrue('vary' in response)
-
- # we are from cache
- (response, content) = self.http.request(uri, "GET", headers={
- 'Accept': 'text/plain', 'Accept-Language': 'da, en-gb;q=0.8, en;q=0.7'})
- self.assertEqual(response.fromcache, True, msg="Should be from cache")
-
- (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/plain'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- # get the resource again, not from cache, varied headers don't match exact
- (response, content) = self.http.request(uri, "GET", headers={'Accept-Language': 'da'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False, msg="Should not be from cache")
-
- def testVaryUnusedHeader(self):
- # A header's value is not considered to vary if it's not used at all.
- uri = urlparse.urljoin(base, "vary/unused-header.asis")
- (response, content) = self.http.request(uri, "GET", headers={
- 'Accept': 'text/plain'})
- self.assertEqual(response.status, 200)
- self.assertTrue('vary' in response)
-
- # we are from cache
- (response, content) = self.http.request(uri, "GET", headers={
- 'Accept': 'text/plain',})
- self.assertEqual(response.fromcache, True, msg="Should be from cache")
-
-
- def testHeadGZip(self):
- # Test that we don't try to decompress a HEAD response
- uri = urlparse.urljoin(base, "gzip/final-destination.txt")
- (response, content) = self.http.request(uri, "HEAD")
- self.assertEqual(response.status, 200)
- self.assertNotEqual(int(response['content-length']), 0)
- self.assertEqual(content, "")
-
- def testGetGZip(self):
- # Test that we support gzip compression
- uri = urlparse.urljoin(base, "gzip/final-destination.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertFalse('content-encoding' in response)
- self.assertTrue('-content-encoding' in response)
- self.assertEqual(int(response['content-length']), len("This is the final destination.\n"))
- self.assertEqual(content, "This is the final destination.\n")
-
- def testPostAndGZipResponse(self):
- uri = urlparse.urljoin(base, "gzip/post.cgi")
- (response, content) = self.http.request(uri, "POST", body=" ")
- self.assertEqual(response.status, 200)
- self.assertFalse('content-encoding' in response)
- self.assertTrue('-content-encoding' in response)
-
- def testGetGZipFailure(self):
- # Test that we raise a good exception when the gzip fails
- self.http.force_exception_to_status_code = False
- uri = urlparse.urljoin(base, "gzip/failed-compression.asis")
- try:
- (response, content) = self.http.request(uri, "GET")
- self.fail("Should never reach here")
- except httplib2.FailedToDecompressContent:
- pass
- except Exception:
- self.fail("Threw wrong kind of exception")
-
- # Re-run the test with out the exceptions
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 500)
- self.assertTrue(response.reason.startswith("Content purported"))
-
- def testTimeout(self):
- self.http.force_exception_to_status_code = True
- uri = urlparse.urljoin(base, "timeout/timeout.cgi")
- try:
- import socket
- socket.setdefaulttimeout(1)
- except:
- # Don't run the test if we can't set the timeout
- return
- (response, content) = self.http.request(uri)
- self.assertEqual(response.status, 408)
- self.assertTrue(response.reason.startswith("Request Timeout"))
- self.assertTrue(content.startswith("Request Timeout"))
-
- def testIndividualTimeout(self):
- uri = urlparse.urljoin(base, "timeout/timeout.cgi")
- http = httplib2.Http(timeout=1)
- http.force_exception_to_status_code = True
-
- (response, content) = http.request(uri)
- self.assertEqual(response.status, 408)
- self.assertTrue(response.reason.startswith("Request Timeout"))
- self.assertTrue(content.startswith("Request Timeout"))
-
-
- def testHTTPSInitTimeout(self):
- c = httplib2.HTTPSConnectionWithTimeout('localhost', 80, timeout=47)
- self.assertEqual(47, c.timeout)
-
- def testGetDeflate(self):
- # Test that we support deflate compression
- uri = urlparse.urljoin(base, "deflate/deflated.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertFalse('content-encoding' in response)
- self.assertEqual(int(response['content-length']), len("This is the final destination."))
- self.assertEqual(content, "This is the final destination.")
-
- def testGetDeflateFailure(self):
- # Test that we raise a good exception when the deflate fails
- self.http.force_exception_to_status_code = False
-
- uri = urlparse.urljoin(base, "deflate/failed-compression.asis")
- try:
- (response, content) = self.http.request(uri, "GET")
- self.fail("Should never reach here")
- except httplib2.FailedToDecompressContent:
- pass
- except Exception:
- self.fail("Threw wrong kind of exception")
-
- # Re-run the test with out the exceptions
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 500)
- self.assertTrue(response.reason.startswith("Content purported"))
-
- def testGetDuplicateHeaders(self):
- # Test that duplicate headers get concatenated via ','
- uri = urlparse.urljoin(base, "duplicate-headers/multilink.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, "This is content\n")
- self.assertEqual(response['link'].split(",")[0], '; rel="home"; title="BitWorking"')
-
- def testGetCacheControlNoCache(self):
- # Test Cache-Control: no-cache on requests
- uri = urlparse.urljoin(base, "304/test_etag.txt")
- (response, content) = self.http.request(uri, "GET", headers= {'accept-encoding': 'identity'})
- self.assertNotEqual(response['etag'], "")
- (response, content) = self.http.request(uri, "GET", headers= {'accept-encoding': 'identity'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
-
- (response, content) = self.http.request(uri, "GET", headers={'accept-encoding': 'identity', 'Cache-Control': 'no-cache'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- def testGetCacheControlPragmaNoCache(self):
- # Test Pragma: no-cache on requests
- uri = urlparse.urljoin(base, "304/test_etag.txt")
- (response, content) = self.http.request(uri, "GET", headers= {'accept-encoding': 'identity'})
- self.assertNotEqual(response['etag'], "")
- (response, content) = self.http.request(uri, "GET", headers= {'accept-encoding': 'identity'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
-
- (response, content) = self.http.request(uri, "GET", headers={'accept-encoding': 'identity', 'Pragma': 'no-cache'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- def testGetCacheControlNoStoreRequest(self):
- # A no-store request means that the response should not be stored.
- uri = urlparse.urljoin(base, "304/test_etag.txt")
-
- (response, content) = self.http.request(uri, "GET", headers={'Cache-Control': 'no-store'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- (response, content) = self.http.request(uri, "GET", headers={'Cache-Control': 'no-store'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- def testGetCacheControlNoStoreResponse(self):
- # A no-store response means that the response should not be stored.
- uri = urlparse.urljoin(base, "no-store/no-store.asis")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- def testGetCacheControlNoCacheNoStoreRequest(self):
- # Test that a no-store, no-cache clears the entry from the cache
- # even if it was cached previously.
- uri = urlparse.urljoin(base, "304/test_etag.txt")
-
- (response, content) = self.http.request(uri, "GET")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.fromcache, True)
- (response, content) = self.http.request(uri, "GET", headers={'Cache-Control': 'no-store, no-cache'})
- (response, content) = self.http.request(uri, "GET", headers={'Cache-Control': 'no-store, no-cache'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- def testUpdateInvalidatesCache(self):
- # Test that calling PUT or DELETE on a
- # URI that is cache invalidates that cache.
- uri = urlparse.urljoin(base, "304/test_etag.txt")
-
- (response, content) = self.http.request(uri, "GET")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.fromcache, True)
- (response, content) = self.http.request(uri, "DELETE")
- self.assertEqual(response.status, 405)
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.fromcache, False)
-
- def testUpdateUsesCachedETag(self):
- # Test that we natively support http://www.w3.org/1999/04/Editing/
- uri = urlparse.urljoin(base, "conditional-updates/test.cgi")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- (response, content) = self.http.request(uri, "PUT", body="foo")
- self.assertEqual(response.status, 200)
- (response, content) = self.http.request(uri, "PUT", body="foo")
- self.assertEqual(response.status, 412)
-
- def testUpdatePatchUsesCachedETag(self):
- # Test that we natively support http://www.w3.org/1999/04/Editing/
- uri = urlparse.urljoin(base, "conditional-updates/test.cgi")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- (response, content) = self.http.request(uri, "PATCH", body="foo")
- self.assertEqual(response.status, 200)
- (response, content) = self.http.request(uri, "PATCH", body="foo")
- self.assertEqual(response.status, 412)
-
-
- def testUpdateUsesCachedETagAndOCMethod(self):
- # Test that we natively support http://www.w3.org/1999/04/Editing/
- uri = urlparse.urljoin(base, "conditional-updates/test.cgi")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- self.http.optimistic_concurrency_methods.append("DELETE")
- (response, content) = self.http.request(uri, "DELETE")
- self.assertEqual(response.status, 200)
-
-
- def testUpdateUsesCachedETagOverridden(self):
- # Test that we natively support http://www.w3.org/1999/04/Editing/
- uri = urlparse.urljoin(base, "conditional-updates/test.cgi")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- (response, content) = self.http.request(uri, "PUT", body="foo", headers={'if-match': 'fred'})
- self.assertEqual(response.status, 412)
-
- def testBasicAuth(self):
- # Test Basic Authentication
- uri = urlparse.urljoin(base, "basic/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- uri = urlparse.urljoin(base, "basic/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- self.http.add_credentials('joe', 'password')
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urlparse.urljoin(base, "basic/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- def testBasicAuthWithDomain(self):
- # Test Basic Authentication
- uri = urlparse.urljoin(base, "basic/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- uri = urlparse.urljoin(base, "basic/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- self.http.add_credentials('joe', 'password', "example.org")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- uri = urlparse.urljoin(base, "basic/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- domain = urlparse.urlparse(base)[1]
- self.http.add_credentials('joe', 'password', domain)
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urlparse.urljoin(base, "basic/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
-
-
-
-
-
- def testBasicAuthTwoDifferentCredentials(self):
- # Test Basic Authentication with multiple sets of credentials
- uri = urlparse.urljoin(base, "basic2/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- uri = urlparse.urljoin(base, "basic2/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- self.http.add_credentials('fred', 'barney')
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urlparse.urljoin(base, "basic2/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- def testBasicAuthNested(self):
- # Test Basic Authentication with resources
- # that are nested
- uri = urlparse.urljoin(base, "basic-nested/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- uri = urlparse.urljoin(base, "basic-nested/subdir")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- # Now add in credentials one at a time and test.
- self.http.add_credentials('joe', 'password')
-
- uri = urlparse.urljoin(base, "basic-nested/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urlparse.urljoin(base, "basic-nested/subdir")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- self.http.add_credentials('fred', 'barney')
-
- uri = urlparse.urljoin(base, "basic-nested/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urlparse.urljoin(base, "basic-nested/subdir")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- def testDigestAuth(self):
- # Test that we support Digest Authentication
- uri = urlparse.urljoin(base, "digest/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- self.http.add_credentials('joe', 'password')
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urlparse.urljoin(base, "digest/file.txt")
- (response, content) = self.http.request(uri, "GET")
-
- def testDigestAuthNextNonceAndNC(self):
- # Test that if the server sets nextnonce that we reset
- # the nonce count back to 1
- uri = urlparse.urljoin(base, "digest/file.txt")
- self.http.add_credentials('joe', 'password')
- (response, content) = self.http.request(uri, "GET", headers = {"cache-control":"no-cache"})
- info = httplib2._parse_www_authenticate(response, 'authentication-info')
- self.assertEqual(response.status, 200)
- (response, content) = self.http.request(uri, "GET", headers = {"cache-control":"no-cache"})
- info2 = httplib2._parse_www_authenticate(response, 'authentication-info')
- self.assertEqual(response.status, 200)
-
- if 'nextnonce' in info:
- self.assertEqual(info2['nc'], 1)
-
- def testDigestAuthStale(self):
- # Test that we can handle a nonce becoming stale
- uri = urlparse.urljoin(base, "digest-expire/file.txt")
- self.http.add_credentials('joe', 'password')
- (response, content) = self.http.request(uri, "GET", headers = {"cache-control":"no-cache"})
- info = httplib2._parse_www_authenticate(response, 'authentication-info')
- self.assertEqual(response.status, 200)
-
- time.sleep(3)
- # Sleep long enough that the nonce becomes stale
-
- (response, content) = self.http.request(uri, "GET", headers = {"cache-control":"no-cache"})
- self.assertFalse(response.fromcache)
- self.assertTrue(response._stale_digest)
- info3 = httplib2._parse_www_authenticate(response, 'authentication-info')
- self.assertEqual(response.status, 200)
-
- def reflector(self, content):
- return dict( [tuple(x.split("=", 1)) for x in content.strip().split("\n")] )
-
- def testReflector(self):
- uri = urlparse.urljoin(base, "reflector/reflector.cgi")
- (response, content) = self.http.request(uri, "GET")
- d = self.reflector(content)
- self.assertTrue('HTTP_USER_AGENT' in d)
-
- def testConnectionClose(self):
- uri = "http://www.google.com/"
- (response, content) = self.http.request(uri, "GET")
- for c in self.http.connections.values():
- self.assertNotEqual(None, c.sock)
- (response, content) = self.http.request(uri, "GET", headers={"connection": "close"})
- for c in self.http.connections.values():
- self.assertEqual(None, c.sock)
-
- def testPickleHttp(self):
- pickled_http = pickle.dumps(self.http)
- new_http = pickle.loads(pickled_http)
-
- self.assertEqual(sorted(new_http.__dict__.keys()),
- sorted(self.http.__dict__.keys()))
- for key in new_http.__dict__:
- if key in ('certificates', 'credentials'):
- self.assertEqual(new_http.__dict__[key].credentials,
- self.http.__dict__[key].credentials)
- elif key == 'cache':
- self.assertEqual(new_http.__dict__[key].cache,
- self.http.__dict__[key].cache)
- else:
- self.assertEqual(new_http.__dict__[key],
- self.http.__dict__[key])
-
- def testPickleHttpWithConnection(self):
- self.http.request('http://bitworking.org',
- connection_type=_MyHTTPConnection)
- pickled_http = pickle.dumps(self.http)
- new_http = pickle.loads(pickled_http)
-
- self.assertEqual(self.http.connections.keys(), ['http:bitworking.org'])
- self.assertEqual(new_http.connections, {})
-
- def testPickleCustomRequestHttp(self):
- def dummy_request(*args, **kwargs):
- return new_request(*args, **kwargs)
- dummy_request.dummy_attr = 'dummy_value'
-
- self.http.request = dummy_request
- pickled_http = pickle.dumps(self.http)
- self.assertFalse("S'request'" in pickled_http)
-
-try:
- import memcache
- class HttpTestMemCached(HttpTest):
- def setUp(self):
- self.cache = memcache.Client(['127.0.0.1:11211'], debug=0)
- #self.cache = memcache.Client(['10.0.0.4:11211'], debug=1)
- self.http = httplib2.Http(self.cache)
- self.cache.flush_all()
- # Not exactly sure why the sleep is needed here, but
- # if not present then some unit tests that rely on caching
- # fail. Memcached seems to lose some sets immediately
- # after a flush_all if the set is to a value that
- # was previously cached. (Maybe the flush is handled async?)
- time.sleep(1)
- self.http.clear_credentials()
-except:
- pass
-
-
-
-
-# ------------------------------------------------------------------------
-
-class HttpPrivateTest(unittest.TestCase):
-
- def testParseCacheControl(self):
- # Test that we can parse the Cache-Control header
- self.assertEqual({}, httplib2._parse_cache_control({}))
- self.assertEqual({'no-cache': 1}, httplib2._parse_cache_control({'cache-control': ' no-cache'}))
- cc = httplib2._parse_cache_control({'cache-control': ' no-cache, max-age = 7200'})
- self.assertEqual(cc['no-cache'], 1)
- self.assertEqual(cc['max-age'], '7200')
- cc = httplib2._parse_cache_control({'cache-control': ' , '})
- self.assertEqual(cc[''], 1)
-
- try:
- cc = httplib2._parse_cache_control({'cache-control': 'Max-age=3600;post-check=1800,pre-check=3600'})
- self.assertTrue("max-age" in cc)
- except:
- self.fail("Should not throw exception")
-
- def testNormalizeHeaders(self):
- # Test that we normalize headers to lowercase
- h = httplib2._normalize_headers({'Cache-Control': 'no-cache', 'Other': 'Stuff'})
- self.assertTrue('cache-control' in h)
- self.assertTrue('other' in h)
- self.assertEqual('Stuff', h['other'])
-
- def testExpirationModelTransparent(self):
- # Test that no-cache makes our request TRANSPARENT
- response_headers = {
- 'cache-control': 'max-age=7200'
- }
- request_headers = {
- 'cache-control': 'no-cache'
- }
- self.assertEqual("TRANSPARENT", httplib2._entry_disposition(response_headers, request_headers))
-
- def testMaxAgeNonNumeric(self):
- # Test that no-cache makes our request TRANSPARENT
- response_headers = {
- 'cache-control': 'max-age=fred, min-fresh=barney'
- }
- request_headers = {
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
-
- def testExpirationModelNoCacheResponse(self):
- # The date and expires point to an entry that should be
- # FRESH, but the no-cache over-rides that.
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'expires': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now+4)),
- 'cache-control': 'no-cache'
- }
- request_headers = {
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelStaleRequestMustReval(self):
- # must-revalidate forces STALE
- self.assertEqual("STALE", httplib2._entry_disposition({}, {'cache-control': 'must-revalidate'}))
-
- def testExpirationModelStaleResponseMustReval(self):
- # must-revalidate forces STALE
- self.assertEqual("STALE", httplib2._entry_disposition({'cache-control': 'must-revalidate'}, {}))
-
- def testExpirationModelFresh(self):
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()),
- 'cache-control': 'max-age=2'
- }
- request_headers = {
- }
- self.assertEqual("FRESH", httplib2._entry_disposition(response_headers, request_headers))
- time.sleep(3)
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationMaxAge0(self):
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()),
- 'cache-control': 'max-age=0'
- }
- request_headers = {
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelDateAndExpires(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'expires': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now+2)),
- }
- request_headers = {
- }
- self.assertEqual("FRESH", httplib2._entry_disposition(response_headers, request_headers))
- time.sleep(3)
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpiresZero(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'expires': "0",
- }
- request_headers = {
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelDateOnly(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now+3)),
- }
- request_headers = {
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelOnlyIfCached(self):
- response_headers = {
- }
- request_headers = {
- 'cache-control': 'only-if-cached',
- }
- self.assertEqual("FRESH", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelMaxAgeBoth(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'cache-control': 'max-age=2'
- }
- request_headers = {
- 'cache-control': 'max-age=0'
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelDateAndExpiresMinFresh1(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'expires': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now+2)),
- }
- request_headers = {
- 'cache-control': 'min-fresh=2'
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelDateAndExpiresMinFresh2(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'expires': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now+4)),
- }
- request_headers = {
- 'cache-control': 'min-fresh=2'
- }
- self.assertEqual("FRESH", httplib2._entry_disposition(response_headers, request_headers))
-
- def testParseWWWAuthenticateEmpty(self):
- res = httplib2._parse_www_authenticate({})
- self.assertEqual(len(res.keys()), 0)
-
- def testParseWWWAuthenticate(self):
- # different uses of spaces around commas
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Test realm="test realm" , foo=foo ,bar="bar", baz=baz,qux=qux'})
- self.assertEqual(len(res.keys()), 1)
- self.assertEqual(len(res['test'].keys()), 5)
-
- # tokens with non-alphanum
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'T*!%#st realm=to*!%#en, to*!%#en="quoted string"'})
- self.assertEqual(len(res.keys()), 1)
- self.assertEqual(len(res['t*!%#st'].keys()), 2)
-
- # quoted string with quoted pairs
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Test realm="a \\"test\\" realm"'})
- self.assertEqual(len(res.keys()), 1)
- self.assertEqual(res['test']['realm'], 'a "test" realm')
-
- def testParseWWWAuthenticateStrict(self):
- httplib2.USE_WWW_AUTH_STRICT_PARSING = 1;
- self.testParseWWWAuthenticate();
- httplib2.USE_WWW_AUTH_STRICT_PARSING = 0;
-
- def testParseWWWAuthenticateBasic(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Basic realm="me"'})
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
-
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Basic realm="me", algorithm="MD5"'})
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
- self.assertEqual('MD5', basic['algorithm'])
-
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Basic realm="me", algorithm=MD5'})
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
- self.assertEqual('MD5', basic['algorithm'])
-
- def testParseWWWAuthenticateBasic2(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Basic realm="me",other="fred" '})
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
- self.assertEqual('fred', basic['other'])
-
- def testParseWWWAuthenticateBasic3(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Basic REAlm="me" '})
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
-
-
- def testParseWWWAuthenticateDigest(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate':
- 'Digest realm="testrealm@host.com", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41"'})
- digest = res['digest']
- self.assertEqual('testrealm@host.com', digest['realm'])
- self.assertEqual('auth,auth-int', digest['qop'])
-
-
- def testParseWWWAuthenticateMultiple(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate':
- 'Digest realm="testrealm@host.com", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41" Basic REAlm="me" '})
- digest = res['digest']
- self.assertEqual('testrealm@host.com', digest['realm'])
- self.assertEqual('auth,auth-int', digest['qop'])
- self.assertEqual('dcd98b7102dd2f0e8b11d0f600bfb0c093', digest['nonce'])
- self.assertEqual('5ccc069c403ebaf9f0171e9517f40e41', digest['opaque'])
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
-
- def testParseWWWAuthenticateMultiple2(self):
- # Handle an added comma between challenges, which might get thrown in if the challenges were
- # originally sent in separate www-authenticate headers.
- res = httplib2._parse_www_authenticate({ 'www-authenticate':
- 'Digest realm="testrealm@host.com", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41", Basic REAlm="me" '})
- digest = res['digest']
- self.assertEqual('testrealm@host.com', digest['realm'])
- self.assertEqual('auth,auth-int', digest['qop'])
- self.assertEqual('dcd98b7102dd2f0e8b11d0f600bfb0c093', digest['nonce'])
- self.assertEqual('5ccc069c403ebaf9f0171e9517f40e41', digest['opaque'])
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
-
- def testParseWWWAuthenticateMultiple3(self):
- # Handle an added comma between challenges, which might get thrown in if the challenges were
- # originally sent in separate www-authenticate headers.
- res = httplib2._parse_www_authenticate({ 'www-authenticate':
- 'Digest realm="testrealm@host.com", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41", Basic REAlm="me", WSSE realm="foo", profile="UsernameToken"'})
- digest = res['digest']
- self.assertEqual('testrealm@host.com', digest['realm'])
- self.assertEqual('auth,auth-int', digest['qop'])
- self.assertEqual('dcd98b7102dd2f0e8b11d0f600bfb0c093', digest['nonce'])
- self.assertEqual('5ccc069c403ebaf9f0171e9517f40e41', digest['opaque'])
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
- wsse = res['wsse']
- self.assertEqual('foo', wsse['realm'])
- self.assertEqual('UsernameToken', wsse['profile'])
-
- def testParseWWWAuthenticateMultiple4(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate':
- 'Digest realm="test-real.m@host.com", qop \t=\t"\tauth,auth-int", nonce="(*)&^&$%#",opaque="5ccc069c403ebaf9f0171e9517f40e41", Basic REAlm="me", WSSE realm="foo", profile="UsernameToken"'})
- digest = res['digest']
- self.assertEqual('test-real.m@host.com', digest['realm'])
- self.assertEqual('\tauth,auth-int', digest['qop'])
- self.assertEqual('(*)&^&$%#', digest['nonce'])
-
- def testParseWWWAuthenticateMoreQuoteCombos(self):
- res = httplib2._parse_www_authenticate({'www-authenticate':'Digest realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", algorithm=MD5, qop="auth", stale=true'})
- digest = res['digest']
- self.assertEqual('myrealm', digest['realm'])
-
- def testParseWWWAuthenticateMalformed(self):
- try:
- res = httplib2._parse_www_authenticate({'www-authenticate':'OAuth "Facebook Platform" "invalid_token" "Invalid OAuth access token."'})
- self.fail("should raise an exception")
- except httplib2.MalformedHeader:
- pass
-
- def testDigestObject(self):
- credentials = ('joe', 'password')
- host = None
- request_uri = '/projects/httplib2/test/digest/'
- headers = {}
- response = {
- 'www-authenticate': 'Digest realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", algorithm=MD5, qop="auth"'
- }
- content = ""
-
- d = httplib2.DigestAuthentication(credentials, host, request_uri, headers, response, content, None)
- d.request("GET", request_uri, headers, content, cnonce="33033375ec278a46")
- our_request = "authorization: %s" % headers['authorization']
- working_request = 'authorization: Digest username="joe", realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", uri="/projects/httplib2/test/digest/", algorithm=MD5, response="97ed129401f7cdc60e5db58a80f3ea8b", qop=auth, nc=00000001, cnonce="33033375ec278a46"'
- self.assertEqual(our_request, working_request)
-
- def testDigestObjectWithOpaque(self):
- credentials = ('joe', 'password')
- host = None
- request_uri = '/projects/httplib2/test/digest/'
- headers = {}
- response = {
- 'www-authenticate': 'Digest realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", algorithm=MD5, qop="auth", opaque="atestopaque"'
- }
- content = ""
-
- d = httplib2.DigestAuthentication(credentials, host, request_uri, headers, response, content, None)
- d.request("GET", request_uri, headers, content, cnonce="33033375ec278a46")
- our_request = "authorization: %s" % headers['authorization']
- working_request = 'authorization: Digest username="joe", realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", uri="/projects/httplib2/test/digest/", algorithm=MD5, response="97ed129401f7cdc60e5db58a80f3ea8b", qop=auth, nc=00000001, cnonce="33033375ec278a46", opaque="atestopaque"'
- self.assertEqual(our_request, working_request)
-
- def testDigestObjectStale(self):
- credentials = ('joe', 'password')
- host = None
- request_uri = '/projects/httplib2/test/digest/'
- headers = {}
- response = httplib2.Response({ })
- response['www-authenticate'] = 'Digest realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", algorithm=MD5, qop="auth", stale=true'
- response.status = 401
- content = ""
- d = httplib2.DigestAuthentication(credentials, host, request_uri, headers, response, content, None)
- # Returns true to force a retry
- self.assertTrue( d.response(response, content) )
-
- def testDigestObjectAuthInfo(self):
- credentials = ('joe', 'password')
- host = None
- request_uri = '/projects/httplib2/test/digest/'
- headers = {}
- response = httplib2.Response({ })
- response['www-authenticate'] = 'Digest realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", algorithm=MD5, qop="auth", stale=true'
- response['authentication-info'] = 'nextnonce="fred"'
- content = ""
- d = httplib2.DigestAuthentication(credentials, host, request_uri, headers, response, content, None)
- # Returns true to force a retry
- self.assertFalse( d.response(response, content) )
- self.assertEqual('fred', d.challenge['nonce'])
- self.assertEqual(1, d.challenge['nc'])
-
- def testWsseAlgorithm(self):
- digest = httplib2._wsse_username_token("d36e316282959a9ed4c89851497a717f", "2003-12-15T14:43:07Z", "taadtaadpstcsm")
- expected = "quR/EWLAV4xLf9Zqyw4pDmfV9OY="
- self.assertEqual(expected, digest)
-
- def testEnd2End(self):
- # one end to end header
- response = {'content-type': 'application/atom+xml', 'te': 'deflate'}
- end2end = httplib2._get_end2end_headers(response)
- self.assertTrue('content-type' in end2end)
- self.assertTrue('te' not in end2end)
- self.assertTrue('connection' not in end2end)
-
- # one end to end header that gets eliminated
- response = {'connection': 'content-type', 'content-type': 'application/atom+xml', 'te': 'deflate'}
- end2end = httplib2._get_end2end_headers(response)
- self.assertTrue('content-type' not in end2end)
- self.assertTrue('te' not in end2end)
- self.assertTrue('connection' not in end2end)
-
- # Degenerate case of no headers
- response = {}
- end2end = httplib2._get_end2end_headers(response)
- self.assertEquals(0, len(end2end))
-
- # Degenerate case of connection referrring to a header not passed in
- response = {'connection': 'content-type'}
- end2end = httplib2._get_end2end_headers(response)
- self.assertEquals(0, len(end2end))
-
-
-class TestProxyInfo(unittest.TestCase):
- def setUp(self):
- self.orig_env = dict(os.environ)
-
- def tearDown(self):
- os.environ.clear()
- os.environ.update(self.orig_env)
-
- def test_from_url(self):
- pi = httplib2.proxy_info_from_url('http://myproxy.example.com')
- self.assertEquals(pi.proxy_host, 'myproxy.example.com')
- self.assertEquals(pi.proxy_port, 80)
- self.assertEquals(pi.proxy_user, None)
-
- def test_from_url_ident(self):
- pi = httplib2.proxy_info_from_url('http://zoidberg:fish@someproxy:99')
- self.assertEquals(pi.proxy_host, 'someproxy')
- self.assertEquals(pi.proxy_port, 99)
- self.assertEquals(pi.proxy_user, 'zoidberg')
- self.assertEquals(pi.proxy_pass, 'fish')
-
- def test_from_env(self):
- os.environ['http_proxy'] = 'http://myproxy.example.com:8080'
- pi = httplib2.proxy_info_from_environment()
- self.assertEquals(pi.proxy_host, 'myproxy.example.com')
- self.assertEquals(pi.proxy_port, 8080)
- self.assertEquals(pi.bypass_hosts, [])
-
- def test_from_env_no_proxy(self):
- os.environ['http_proxy'] = 'http://myproxy.example.com:80'
- os.environ['https_proxy'] = 'http://myproxy.example.com:81'
- os.environ['no_proxy'] = 'localhost,otherhost.domain.local'
- pi = httplib2.proxy_info_from_environment('https')
- self.assertEquals(pi.proxy_host, 'myproxy.example.com')
- self.assertEquals(pi.proxy_port, 81)
- self.assertEquals(pi.bypass_hosts, ['localhost',
- 'otherhost.domain.local'])
-
- def test_from_env_none(self):
- os.environ.clear()
- pi = httplib2.proxy_info_from_environment()
- self.assertEquals(pi, None)
-
- def test_applies_to(self):
- os.environ['http_proxy'] = 'http://myproxy.example.com:80'
- os.environ['https_proxy'] = 'http://myproxy.example.com:81'
- os.environ['no_proxy'] = 'localhost,otherhost.domain.local,example.com'
- pi = httplib2.proxy_info_from_environment()
- self.assertFalse(pi.applies_to('localhost'))
- self.assertTrue(pi.applies_to('www.google.com'))
- self.assertFalse(pi.applies_to('www.example.com'))
-
- def test_no_proxy_star(self):
- os.environ['http_proxy'] = 'http://myproxy.example.com:80'
- os.environ['NO_PROXY'] = '*'
- pi = httplib2.proxy_info_from_environment()
- for host in ('localhost', '169.254.38.192', 'www.google.com'):
- self.assertFalse(pi.applies_to(host))
-
- def test_proxy_headers(self):
- headers = {'key0': 'val0', 'key1': 'val1'}
- pi = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP, 'localhost', 1234, proxy_headers = headers)
- self.assertEquals(pi.proxy_headers, headers)
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/third_party/gsutil/third_party/httplib2/python2/httplib2test_appengine.py b/third_party/gsutil/third_party/httplib2/python2/httplib2test_appengine.py
deleted file mode 100644
index 9fad05a580e..00000000000
--- a/third_party/gsutil/third_party/httplib2/python2/httplib2test_appengine.py
+++ /dev/null
@@ -1,79 +0,0 @@
-"""Tests for httplib2 on Google App Engine."""
-
-import mock
-import os
-import sys
-import unittest
-
-APP_ENGINE_PATH='/usr/local/google_appengine'
-
-sys.path.insert(0, APP_ENGINE_PATH)
-
-import dev_appserver
-dev_appserver.fix_sys_path()
-
-from google.appengine.ext import testbed
-
-# Ensure that we are not loading the httplib2 version included in the Google
-# App Engine SDK.
-sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
-
-
-class AberrationsTest(unittest.TestCase):
-
- def setUp(self):
- self.testbed = testbed.Testbed()
- self.testbed.activate()
- self.testbed.init_urlfetch_stub()
-
- def tearDown(self):
- self.testbed.deactivate()
-
- @mock.patch.dict('os.environ', {'SERVER_SOFTWARE': ''})
- def testConnectionInit(self):
- global httplib2
- import httplib2
- self.assertNotEqual(
- httplib2.SCHEME_TO_CONNECTION['https'], httplib2.AppEngineHttpsConnection)
- self.assertNotEqual(
- httplib2.SCHEME_TO_CONNECTION['http'], httplib2.AppEngineHttpConnection)
- del globals()['httplib2']
-
-
-class AppEngineHttpTest(unittest.TestCase):
-
- def setUp(self):
- self.testbed = testbed.Testbed()
- self.testbed.activate()
- self.testbed.init_urlfetch_stub()
- global httplib2
- import httplib2
- reload(httplib2)
-
- def tearDown(self):
- self.testbed.deactivate()
- del globals()['httplib2']
-
- def testConnectionInit(self):
- self.assertEqual(
- httplib2.SCHEME_TO_CONNECTION['https'], httplib2.AppEngineHttpsConnection)
- self.assertEqual(
- httplib2.SCHEME_TO_CONNECTION['http'], httplib2.AppEngineHttpConnection)
-
- def testGet(self):
- http = httplib2.Http()
- response, content = http.request("http://www.google.com")
- self.assertEqual(httplib2.SCHEME_TO_CONNECTION['https'],
- httplib2.AppEngineHttpsConnection)
- self.assertEquals(1, len(http.connections))
- self.assertEquals(response.status, 200)
- self.assertEquals(response['status'], '200')
-
- def testProxyInfoIgnored(self):
- http = httplib2.Http(proxy_info=mock.MagicMock())
- response, content = http.request("http://www.google.com")
- self.assertEquals(response.status, 200)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/third_party/gsutil/third_party/httplib2/python2/ssl_protocol_test.py b/third_party/gsutil/third_party/httplib2/python2/ssl_protocol_test.py
deleted file mode 100644
index bac84c03860..00000000000
--- a/third_party/gsutil/third_party/httplib2/python2/ssl_protocol_test.py
+++ /dev/null
@@ -1,57 +0,0 @@
-"""Tests for SSL handling in httplib2."""
-
-import httplib2
-import os
-import ssl
-import sys
-import unittest
-
-
-class TestSslProtocol(unittest.TestCase):
-
- def testSslCertValidationWithInvalidCaCert(self):
- if sys.version_info >= (2, 6):
- http = httplib2.Http(ca_certs='/nosuchfile')
- if sys.version_info >= (2, 7):
- with self.assertRaises(IOError):
- http.request('https://www.google.com/', 'GET')
- else:
- self.assertRaises(
- ssl.SSLError, http.request, 'https://www.google.com/', 'GET')
-
- def testSslCertValidationWithSelfSignedCaCert(self):
- if sys.version_info >= (2, 7):
- other_ca_certs = os.path.join(
- os.path.dirname(os.path.abspath(httplib2.__file__ )), 'test',
- 'other_cacerts.txt')
- http = httplib2.Http(ca_certs=other_ca_certs)
- if sys.platform != 'darwin':
- with self.assertRaises(httplib2.SSLHandshakeError):
- http.request('https://www.google.com/', 'GET')
-
- def testSslProtocolTlsV1AndShouldPass(self):
- http = httplib2.Http(ssl_version=ssl.PROTOCOL_TLSv1)
- urls = ['https://www.amazon.com',
- 'https://www.apple.com',
- 'https://www.twitter.com']
- for url in urls:
- if sys.version_info >= (2, 7):
- self.assertIsNotNone(http.request(uri=url))
-
- def testSslProtocolV3AndShouldFailDueToPoodle(self):
- http = httplib2.Http(ssl_version=ssl.PROTOCOL_SSLv3)
- urls = ['https://www.amazon.com',
- 'https://www.apple.com',
- 'https://www.twitter.com']
- for url in urls:
- if sys.version_info >= (2, 7):
- with self.assertRaises(httplib2.SSLHandshakeError):
- http.request(url)
- try:
- http.request(url)
- except httplib2.SSLHandshakeError as e:
- self.assertTrue('sslv3 alert handshake failure' in str(e))
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/third_party/gsutil/third_party/httplib2/python3/README b/third_party/gsutil/third_party/httplib2/python3/README
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/python3/httplib2/__init__.py b/third_party/gsutil/third_party/httplib2/python3/httplib2/__init__.py
index 5dae2a5dff6..df8df38df48 100644
--- a/third_party/gsutil/third_party/httplib2/python3/httplib2/__init__.py
+++ b/third_party/gsutil/third_party/httplib2/python3/httplib2/__init__.py
@@ -1,54 +1,47 @@
-"""
-httplib2
-
-A caching http interface that supports ETags and gzip
-to conserve bandwidth.
-
-Requires Python 3.0 or later
-
-Changelog:
-2009-05-28, Pilgrim: ported to Python 3
-2007-08-18, Rick: Modified so it's able to use a socks proxy if needed.
-
-"""
+# -*- coding: utf-8 -*-
+"""Small, fast HTTP client library for Python."""
__author__ = "Joe Gregorio (joe@bitworking.org)"
__copyright__ = "Copyright 2006, Joe Gregorio"
-__contributors__ = ["Thomas Broyer (t.broyer@ltgt.net)",
+__contributors__ = [
+ "Thomas Broyer (t.broyer@ltgt.net)",
"James Antill",
"Xavier Verges Farrero",
"Jonathan Feinberg",
"Blair Zajac",
"Sam Ruby",
"Louis Nyffenegger",
- "Mark Pilgrim"]
+ "Mark Pilgrim",
+ "Alex Yu",
+]
__license__ = "MIT"
-__version__ = '0.11.3'
+__version__ = "0.20.4"
-import re
-import sys
+import base64
+import calendar
+import copy
import email
-import email.utils
-import email.message
import email.feedparser
-import io
+from email import header
+import email.message
+import email.utils
+import errno
+from gettext import gettext as _
import gzip
-import zlib
+from hashlib import md5 as _md5
+from hashlib import sha1 as _sha
+import hmac
import http.client
-import urllib.parse
-import base64
+import io
import os
-import copy
-import calendar
-import time
import random
-import errno
-from hashlib import sha1 as _sha, md5 as _md5
-import hmac
-from gettext import gettext as _
+import re
import socket
import ssl
-
+import sys
+import time
+import urllib.parse
+import zlib
try:
import socks
@@ -56,19 +49,30 @@
# TODO: remove this fallback and copypasted socksipy module upon py2/3 merge,
# idea is to have soft-dependency on any compatible module called socks
from . import socks
+from . import auth
+from .error import *
from .iri2uri import iri2uri
-def has_timeout(timeout):
- if hasattr(socket, '_GLOBAL_DEFAULT_TIMEOUT'):
- return (timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT)
- return (timeout is not None)
-
-__all__ = ['Http', 'Response', 'ProxyInfo', 'HttpLib2Error',
- 'RedirectMissingLocation', 'RedirectLimit',
- 'FailedToDecompressContent', 'UnimplementedDigestAuthOptionError',
- 'UnimplementedHmacDigestAuthOptionError',
- 'debuglevel', 'RETRIES']
+def has_timeout(timeout):
+ if hasattr(socket, "_GLOBAL_DEFAULT_TIMEOUT"):
+ return timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT
+ return timeout is not None
+
+
+__all__ = [
+ "debuglevel",
+ "FailedToDecompressContent",
+ "Http",
+ "HttpLib2Error",
+ "ProxyInfo",
+ "RedirectLimit",
+ "RedirectMissingLocation",
+ "Response",
+ "RETRIES",
+ "UnimplementedDigestAuthOptionError",
+ "UnimplementedHmacDigestAuthOptionError",
+]
# The httplib debug level, set to a non-zero value to get debug output
debuglevel = 0
@@ -76,29 +80,6 @@ def has_timeout(timeout):
# A request will be tried 'RETRIES' times if it fails at the socket/connection level.
RETRIES = 2
-# All exceptions raised here derive from HttpLib2Error
-class HttpLib2Error(Exception): pass
-
-# Some exceptions can be caught and optionally
-# be turned back into responses.
-class HttpLib2ErrorWithResponse(HttpLib2Error):
- def __init__(self, desc, response, content):
- self.response = response
- self.content = content
- HttpLib2Error.__init__(self, desc)
-
-class RedirectMissingLocation(HttpLib2ErrorWithResponse): pass
-class RedirectLimit(HttpLib2ErrorWithResponse): pass
-class FailedToDecompressContent(HttpLib2ErrorWithResponse): pass
-class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): pass
-class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): pass
-
-class MalformedHeader(HttpLib2Error): pass
-class RelativeURIError(HttpLib2Error): pass
-class ServerNotFoundError(HttpLib2Error): pass
-
-class ProxiesUnavailableError(HttpLib2Error): pass
-
# Open Items:
# -----------
@@ -114,7 +95,6 @@ class ProxiesUnavailableError(HttpLib2Error): pass
# Does not handle Cache-Control: max-stale
# Does not use Age: headers when calculating cache freshness.
-
# The number of redirections to follow before giving up.
# Note that only GET redirects are automatically followed.
# Will also honor 301 requests by saving that info and never
@@ -122,47 +102,104 @@ class ProxiesUnavailableError(HttpLib2Error): pass
DEFAULT_MAX_REDIRECTS = 5
# Which headers are hop-by-hop headers by default
-HOP_BY_HOP = ['connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization', 'te', 'trailers', 'transfer-encoding', 'upgrade']
+HOP_BY_HOP = [
+ "connection",
+ "keep-alive",
+ "proxy-authenticate",
+ "proxy-authorization",
+ "te",
+ "trailers",
+ "transfer-encoding",
+ "upgrade",
+]
+
+# https://tools.ietf.org/html/rfc7231#section-8.1.3
+SAFE_METHODS = ("GET", "HEAD", "OPTIONS", "TRACE")
+
+# To change, assign to `Http().redirect_codes`
+REDIRECT_CODES = frozenset((300, 301, 302, 303, 307, 308))
+
-# Default CA certificates file bundled with httplib2.
-CA_CERTS = os.path.join(
- os.path.dirname(os.path.abspath(__file__ )), "cacerts.txt")
+from httplib2 import certs
+
+CA_CERTS = certs.where()
# PROTOCOL_TLS is python 3.5.3+. PROTOCOL_SSLv23 is deprecated.
# Both PROTOCOL_TLS and PROTOCOL_SSLv23 are equivalent and means:
# > Selects the highest protocol version that both the client and server support.
# > Despite the name, this option can select “TLS†protocols as well as “SSLâ€.
# source: https://docs.python.org/3.5/library/ssl.html#ssl.PROTOCOL_TLS
-DEFAULT_TLS_VERSION = getattr(ssl, 'PROTOCOL_TLS', None) or getattr(ssl, 'PROTOCOL_SSLv23')
-
-
-def _build_ssl_context(disable_ssl_certificate_validation, ca_certs, cert_file=None, key_file=None):
- if not hasattr(ssl, 'SSLContext'):
+DEFAULT_TLS_VERSION = getattr(ssl, "PROTOCOL_TLS", None) or getattr(ssl, "PROTOCOL_SSLv23")
+
+
+def _build_ssl_context(
+ disable_ssl_certificate_validation,
+ ca_certs,
+ cert_file=None,
+ key_file=None,
+ maximum_version=None,
+ minimum_version=None,
+ key_password=None,
+):
+ if not hasattr(ssl, "SSLContext"):
raise RuntimeError("httplib2 requires Python 3.2+ for ssl.SSLContext")
context = ssl.SSLContext(DEFAULT_TLS_VERSION)
context.verify_mode = ssl.CERT_NONE if disable_ssl_certificate_validation else ssl.CERT_REQUIRED
+ # SSLContext.maximum_version and SSLContext.minimum_version are python 3.7+.
+ # source: https://docs.python.org/3/library/ssl.html#ssl.SSLContext.maximum_version
+ if maximum_version is not None:
+ if hasattr(context, "maximum_version"):
+ if isinstance(maximum_version, str):
+ maximum_version = getattr(ssl.TLSVersion, maximum_version)
+ context.maximum_version = maximum_version
+ else:
+ raise RuntimeError("setting tls_maximum_version requires Python 3.7 and OpenSSL 1.1 or newer")
+ if minimum_version is not None:
+ if hasattr(context, "minimum_version"):
+ if isinstance(minimum_version, str):
+ minimum_version = getattr(ssl.TLSVersion, minimum_version)
+ context.minimum_version = minimum_version
+ else:
+ raise RuntimeError("setting tls_minimum_version requires Python 3.7 and OpenSSL 1.1 or newer")
# check_hostname requires python 3.4+
# we will perform the equivalent in HTTPSConnectionWithTimeout.connect() by calling ssl.match_hostname
# if check_hostname is not supported.
- if hasattr(context, 'check_hostname'):
+ if hasattr(context, "check_hostname"):
context.check_hostname = not disable_ssl_certificate_validation
context.load_verify_locations(ca_certs)
if cert_file:
- context.load_cert_chain(cert_file, key_file)
+ context.load_cert_chain(cert_file, key_file, key_password)
return context
+
def _get_end2end_headers(response):
hopbyhop = list(HOP_BY_HOP)
- hopbyhop.extend([x.strip() for x in response.get('connection', '').split(',')])
+ hopbyhop.extend([x.strip() for x in response.get("connection", "").split(",")])
return [header for header in list(response.keys()) if header not in hopbyhop]
+
+def _errno_from_exception(e):
+ # socket.error and common wrap in .args
+ if len(e.args) > 0:
+ return e.args[0].errno if isinstance(e.args[0], socket.error) else e.errno
+
+ # pysocks.ProxyError wraps in .socket_err
+ # https://github.com/httplib2/httplib2/pull/202
+ if hasattr(e, "socket_err"):
+ e_int = e.socket_err
+ return e_int.args[0].errno if isinstance(e_int.args[0], socket.error) else e_int.errno
+
+ return None
+
+
URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?")
+
def parse_uri(uri):
"""Parses a URI using the regex given in Appendix B of RFC 3986.
@@ -171,6 +208,7 @@ def parse_uri(uri):
groups = URI.match(uri).groups()
return (groups[1], groups[3], groups[4], groups[6], groups[8])
+
def urlnorm(uri):
(scheme, authority, path, query, fragment) = parse_uri(uri)
if not scheme or not authority:
@@ -188,98 +226,70 @@ def urlnorm(uri):
# Cache filename construction (original borrowed from Venus http://intertwingly.net/code/venus/)
-re_url_scheme = re.compile(br'^\w+://')
-re_url_scheme_s = re.compile(r'^\w+://')
-re_slash = re.compile(br'[?/:|]+')
+re_url_scheme = re.compile(r"^\w+://")
+re_unsafe = re.compile(r"[^\w\-_.()=!]+", re.ASCII)
+
def safename(filename):
"""Return a filename suitable for the cache.
-
Strips dangerous and common characters to create a filename we
can use to store the cache in.
"""
+ if isinstance(filename, bytes):
+ filename_bytes = filename
+ filename = filename.decode("utf-8")
+ else:
+ filename_bytes = filename.encode("utf-8")
+ filemd5 = _md5(filename_bytes).hexdigest()
+ filename = re_url_scheme.sub("", filename)
+ filename = re_unsafe.sub("", filename)
+
+ # limit length of filename (vital for Windows)
+ # https://github.com/httplib2/httplib2/pull/74
+ # C:\Users\ \AppData\Local\Temp\ ,
+ # 9 chars + max 104 chars + 20 chars + x + 1 + 32 = max 259 chars
+ # Thus max safe filename x = 93 chars. Let it be 90 to make a round sum:
+ filename = filename[:90]
+
+ return ",".join((filename, filemd5))
+
+
+NORMALIZE_SPACE = re.compile(r"(?:\r\n)?[ \t]+")
+
- try:
- if re_url_scheme_s.match(filename):
- if isinstance(filename,bytes):
- filename = filename.decode('utf-8')
- filename = filename.encode('idna')
- else:
- filename = filename.encode('idna')
- except UnicodeError:
- pass
- if isinstance(filename,str):
- filename=filename.encode('utf-8')
- filemd5 = _md5(filename).hexdigest().encode('utf-8')
- filename = re_url_scheme.sub(b"", filename)
- filename = re_slash.sub(b",", filename)
-
- # limit length of filename
- if len(filename)>200:
- filename=filename[:200]
- return b",".join((filename, filemd5)).decode('utf-8')
-
-NORMALIZE_SPACE = re.compile(r'(?:\r\n)?[ \t]+')
def _normalize_headers(headers):
- return dict([ (_convert_byte_str(key).lower(), NORMALIZE_SPACE.sub(_convert_byte_str(value), ' ').strip()) for (key, value) in headers.items()])
+ return dict(
+ [
+ (_convert_byte_str(key).lower(), NORMALIZE_SPACE.sub(_convert_byte_str(value), " ").strip(),)
+ for (key, value) in headers.items()
+ ]
+ )
+
def _convert_byte_str(s):
if not isinstance(s, str):
- return str(s, 'utf-8')
+ return str(s, "utf-8")
return s
+
def _parse_cache_control(headers):
retval = {}
- if 'cache-control' in headers:
- parts = headers['cache-control'].split(',')
- parts_with_args = [tuple([x.strip().lower() for x in part.split("=", 1)]) for part in parts if -1 != part.find("=")]
+ if "cache-control" in headers:
+ parts = headers["cache-control"].split(",")
+ parts_with_args = [
+ tuple([x.strip().lower() for x in part.split("=", 1)]) for part in parts if -1 != part.find("=")
+ ]
parts_wo_args = [(name.strip().lower(), 1) for name in parts if -1 == name.find("=")]
retval = dict(parts_with_args + parts_wo_args)
return retval
+
# Whether to use a strict mode to parse WWW-Authenticate headers
# Might lead to bad results in case of ill-formed header value,
# so disabled by default, falling back to relaxed parsing.
-# Set to true to turn on, usefull for testing servers.
+# Set to true to turn on, useful for testing servers.
USE_WWW_AUTH_STRICT_PARSING = 0
-# In regex below:
-# [^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+ matches a "token" as defined by HTTP
-# "(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?" matches a "quoted-string" as defined by HTTP, when LWS have already been replaced by a single space
-# Actually, as an auth-param value can be either a token or a quoted-string, they are combined in a single pattern which matches both:
-# \"?((?<=\")(?:[^\0-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?
-WWW_AUTH_STRICT = re.compile(r"^(?:\s*(?:,\s*)?([^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+)\s*=\s*\"?((?<=\")(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?)(.*)$")
-WWW_AUTH_RELAXED = re.compile(r"^(?:\s*(?:,\s*)?([^ \t\r\n=]+)\s*=\s*\"?((?<=\")(?:[^\\\"]|\\.)*?(?=\")|(? 0:
+ if service == "xapi" and request_uri.find("calendar") > 0:
service = "cl"
# No point in guessing Base or Spreadsheet
- #elif request_uri.find("spreadsheets") > 0:
+ # elif request_uri.find("spreadsheets") > 0:
# service = "wise"
- auth = dict(Email=credentials[0], Passwd=credentials[1], service=service, source=headers['user-agent'])
- resp, content = self.http.request("https://www.google.com/accounts/ClientLogin", method="POST", body=urlencode(auth), headers={'Content-Type': 'application/x-www-form-urlencoded'})
- lines = content.split('\n')
+ auth = dict(Email=credentials[0], Passwd=credentials[1], service=service, source=headers["user-agent"],)
+ resp, content = self.http.request(
+ "https://www.google.com/accounts/ClientLogin",
+ method="POST",
+ body=urlencode(auth),
+ headers={"Content-Type": "application/x-www-form-urlencoded"},
+ )
+ lines = content.split("\n")
d = dict([tuple(line.split("=", 1)) for line in lines if line])
if resp.status == 403:
self.Auth = ""
else:
- self.Auth = d['Auth']
+ self.Auth = d["Auth"]
def request(self, method, request_uri, headers, content):
"""Modify the request headers to add the appropriate
Authorization header."""
- headers['authorization'] = 'GoogleLogin Auth=' + self.Auth
+ headers["authorization"] = "GoogleLogin Auth=" + self.Auth
AUTH_SCHEME_CLASSES = {
@@ -687,17 +752,19 @@ def request(self, method, request_uri, headers, content):
"wsse": WsseAuthentication,
"digest": DigestAuthentication,
"hmacdigest": HmacDigestAuthentication,
- "googlelogin": GoogleLoginAuthentication
+ "googlelogin": GoogleLoginAuthentication,
}
AUTH_SCHEME_ORDER = ["hmacdigest", "googlelogin", "digest", "wsse", "basic"]
+
class FileCache(object):
"""Uses a local directory as a store for cached files.
Not really safe to use if multiple threads or processes are going to
be running on the same cache.
"""
- def __init__(self, cache, safe=safename): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior
+
+ def __init__(self, cache, safe=safename): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior
self.cache = cache
self.safe = safe
if not os.path.exists(cache):
@@ -725,6 +792,7 @@ def delete(self, key):
if os.path.exists(cacheFullPath):
os.remove(cacheFullPath)
+
class Credentials(object):
def __init__(self):
self.credentials = []
@@ -740,10 +808,18 @@ def iter(self, domain):
if cdomain == "" or domain == cdomain:
yield (name, password)
+
class KeyCerts(Credentials):
"""Identical to Credentials except that
name/password are mapped to key/cert."""
- pass
+
+ def add(self, key, cert, domain, password):
+ self.credentials.append((domain.lower(), key, cert, password))
+
+ def iter(self, domain):
+ for (cdomain, key, cert, password) in self.credentials:
+ if cdomain == "" or domain == cdomain:
+ yield (key, cert, password)
class AllHosts(object):
@@ -751,125 +827,129 @@ class AllHosts(object):
class ProxyInfo(object):
- """Collect information required to use a proxy."""
- bypass_hosts = ()
+ """Collect information required to use a proxy."""
- def __init__(self, proxy_type, proxy_host, proxy_port, proxy_rdns=True, proxy_user=None, proxy_pass=None, proxy_headers=None):
- """
- Args:
- proxy_type: The type of proxy server. This must be set to one of
- socks.PROXY_TYPE_XXX constants. For example:
+ bypass_hosts = ()
- p = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP,
- proxy_host='localhost', proxy_port=8000)
+ def __init__(
+ self, proxy_type, proxy_host, proxy_port, proxy_rdns=True, proxy_user=None, proxy_pass=None, proxy_headers=None,
+ ):
+ """Args:
+ proxy_type: The type of proxy server. This must be set to one of
+ socks.PROXY_TYPE_XXX constants. For example: p =
+ ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost',
+ proxy_port=8000)
proxy_host: The hostname or IP address of the proxy server.
-
proxy_port: The port that the proxy server is running on.
-
proxy_rdns: If True (default), DNS queries will not be performed
locally, and instead, handed to the proxy to resolve. This is useful
- if the network does not allow resolution of non-local names. In
+ if the network does not allow resolution of non-local names. In
httplib2 0.9 and earlier, this defaulted to False.
-
proxy_user: The username used to authenticate with the proxy server.
-
proxy_pass: The password used to authenticate with the proxy server.
+ proxy_headers: Additional or modified headers for the proxy connect
+ request.
+ """
+ if isinstance(proxy_user, bytes):
+ proxy_user = proxy_user.decode()
+ if isinstance(proxy_pass, bytes):
+ proxy_pass = proxy_pass.decode()
+ (
+ self.proxy_type,
+ self.proxy_host,
+ self.proxy_port,
+ self.proxy_rdns,
+ self.proxy_user,
+ self.proxy_pass,
+ self.proxy_headers,
+ ) = (
+ proxy_type,
+ proxy_host,
+ proxy_port,
+ proxy_rdns,
+ proxy_user,
+ proxy_pass,
+ proxy_headers,
+ )
+
+ def astuple(self):
+ return (
+ self.proxy_type,
+ self.proxy_host,
+ self.proxy_port,
+ self.proxy_rdns,
+ self.proxy_user,
+ self.proxy_pass,
+ self.proxy_headers,
+ )
+
+ def isgood(self):
+ return socks and (self.proxy_host != None) and (self.proxy_port != None)
+
+ def applies_to(self, hostname):
+ return not self.bypass_host(hostname)
+
+ def bypass_host(self, hostname):
+ """Has this host been excluded from the proxy config"""
+ if self.bypass_hosts is AllHosts:
+ return True
- proxy_headers: Additional or modified headers for the proxy connect request.
- """
- self.proxy_type, self.proxy_host, self.proxy_port, self.proxy_rdns, self.proxy_user, self.proxy_pass, self.proxy_headers = proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers
-
- def astuple(self):
- return (self.proxy_type, self.proxy_host, self.proxy_port, self.proxy_rdns,
- self.proxy_user, self.proxy_pass, self.proxy_headers)
-
- def isgood(self):
- return socks and (self.proxy_host != None) and (self.proxy_port != None)
-
- def applies_to(self, hostname):
- return not self.bypass_host(hostname)
-
- def bypass_host(self, hostname):
- """Has this host been excluded from the proxy config"""
- if self.bypass_hosts is AllHosts:
- return True
-
- hostname = '.' + hostname.lstrip('.')
- for skip_name in self.bypass_hosts:
- # *.suffix
- if skip_name.startswith('.') and hostname.endswith(skip_name):
- return True
- # exact match
- if hostname == '.' + skip_name:
- return True
- return False
+ hostname = "." + hostname.lstrip(".")
+ for skip_name in self.bypass_hosts:
+ # *.suffix
+ if skip_name.startswith(".") and hostname.endswith(skip_name):
+ return True
+ # exact match
+ if hostname == "." + skip_name:
+ return True
+ return False
- def __repr__(self):
- return (
- '').format(p=self)
+ def __repr__(self):
+ return (
+ ""
+ ).format(p=self)
-def proxy_info_from_environment(method='http'):
+def proxy_info_from_environment(method="http"):
+ """Read proxy info from the environment variables.
"""
- Read proxy info from the environment variables.
- """
- if method not in ('http', 'https'):
+ if method not in ("http", "https"):
return
- env_var = method + '_proxy'
+ env_var = method + "_proxy"
url = os.environ.get(env_var, os.environ.get(env_var.upper()))
if not url:
return
return proxy_info_from_url(url, method, noproxy=None)
-def proxy_info_from_url(url, method='http', noproxy=None):
- """
- Construct a ProxyInfo from a URL (such as http_proxy env var)
+def proxy_info_from_url(url, method="http", noproxy=None):
+ """Construct a ProxyInfo from a URL (such as http_proxy env var)
"""
url = urllib.parse.urlparse(url)
- username = None
- password = None
- port = None
- if '@' in url[1]:
- ident, host_port = url[1].split('@', 1)
- if ':' in ident:
- username, password = ident.split(':', 1)
- else:
- password = ident
- else:
- host_port = url[1]
- if ':' in host_port:
- host, port = host_port.split(':', 1)
- else:
- host = host_port
-
- if port:
- port = int(port)
- else:
- port = dict(https=443, http=80)[method]
proxy_type = 3 # socks.PROXY_TYPE_HTTP
pi = ProxyInfo(
proxy_type=proxy_type,
- proxy_host=host,
- proxy_port=port,
- proxy_user=username or None,
- proxy_pass=password or None,
+ proxy_host=url.hostname,
+ proxy_port=url.port or dict(https=443, http=80)[method],
+ proxy_user=url.username or None,
+ proxy_pass=url.password or None,
proxy_headers=None,
)
bypass_hosts = []
# If not given an explicit noproxy value, respect values in env vars.
if noproxy is None:
- noproxy = os.environ.get('no_proxy', os.environ.get('NO_PROXY', ''))
+ noproxy = os.environ.get("no_proxy", os.environ.get("NO_PROXY", ""))
# Special case: A single '*' character means all hosts should be bypassed.
- if noproxy == '*':
+ if noproxy == "*":
bypass_hosts = AllHosts
elif noproxy.strip():
- bypass_hosts = noproxy.split(',')
+ bypass_hosts = noproxy.split(",")
bypass_hosts = tuple(filter(bool, bypass_hosts)) # To exclude empty string.
pi.bypass_hosts = bypass_hosts
@@ -888,21 +968,27 @@ class HTTPConnectionWithTimeout(http.client.HTTPConnection):
"""
def __init__(self, host, port=None, timeout=None, proxy_info=None):
- http.client.HTTPConnection.__init__(self, host, port=port,
- timeout=timeout)
+ http.client.HTTPConnection.__init__(self, host, port=port, timeout=timeout)
self.proxy_info = proxy_info
if proxy_info and not isinstance(proxy_info, ProxyInfo):
- self.proxy_info = proxy_info('http')
+ self.proxy_info = proxy_info("http")
def connect(self):
"""Connect to the host and port specified in __init__."""
if self.proxy_info and socks is None:
- raise ProxiesUnavailableError(
- 'Proxy support missing but proxy use was requested!')
- if self.proxy_info and self.proxy_info.isgood():
+ raise ProxiesUnavailableError("Proxy support missing but proxy use was requested!")
+ if self.proxy_info and self.proxy_info.isgood() and self.proxy_info.applies_to(self.host):
use_proxy = True
- proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = self.proxy_info.astuple()
+ (
+ proxy_type,
+ proxy_host,
+ proxy_port,
+ proxy_rdns,
+ proxy_user,
+ proxy_pass,
+ proxy_headers,
+ ) = self.proxy_info.astuple()
host = proxy_host
port = proxy_port
@@ -920,30 +1006,34 @@ def connect(self):
try:
if use_proxy:
self.sock = socks.socksocket(af, socktype, proto)
- self.sock.setproxy(proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)
+ self.sock.setproxy(
+ proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass,
+ )
else:
self.sock = socket.socket(af, socktype, proto)
self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
if has_timeout(self.timeout):
self.sock.settimeout(self.timeout)
if self.debuglevel > 0:
- print(
- "connect: ({0}, {1}) ************".format(self.host, self.port))
+ print("connect: ({0}, {1}) ************".format(self.host, self.port))
if use_proxy:
print(
- "proxy: {0} ************".format(str(
- (proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers))))
+ "proxy: {0} ************".format(
+ str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,))
+ )
+ )
self.sock.connect((self.host, self.port) + sa[2:])
except socket.error as e:
socket_err = e
if self.debuglevel > 0:
- print(
- "connect fail: ({0}, {1})".format(self.host, self.port))
+ print("connect fail: ({0}, {1})".format(self.host, self.port))
if use_proxy:
print(
- "proxy: {0}".format(str(
- (proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers))))
+ "proxy: {0}".format(
+ str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,))
+ )
+ )
if self.sock:
self.sock.close()
self.sock = None
@@ -954,8 +1044,7 @@ def connect(self):
class HTTPSConnectionWithTimeout(http.client.HTTPSConnection):
- """
- This class allows communication via SSL.
+ """This class allows communication via SSL.
All timeouts are in seconds. If None is passed for timeout then
Python's default timeout for sockets will be used. See for example
@@ -963,26 +1052,57 @@ class HTTPSConnectionWithTimeout(http.client.HTTPSConnection):
http://docs.python.org/library/socket.html#socket.setdefaulttimeout
"""
- def __init__(self, host, port=None, key_file=None, cert_file=None,
- timeout=None, proxy_info=None,
- ca_certs=None, disable_ssl_certificate_validation=False):
+ def __init__(
+ self,
+ host,
+ port=None,
+ key_file=None,
+ cert_file=None,
+ timeout=None,
+ proxy_info=None,
+ ca_certs=None,
+ disable_ssl_certificate_validation=False,
+ tls_maximum_version=None,
+ tls_minimum_version=None,
+ key_password=None,
+ ):
self.disable_ssl_certificate_validation = disable_ssl_certificate_validation
self.ca_certs = ca_certs if ca_certs else CA_CERTS
self.proxy_info = proxy_info
if proxy_info and not isinstance(proxy_info, ProxyInfo):
- self.proxy_info = proxy_info('https')
-
- context = _build_ssl_context(self.disable_ssl_certificate_validation, self.ca_certs, cert_file, key_file)
- super(HTTPSConnectionWithTimeout, self).__init__(host, port=port, key_file=key_file, cert_file=cert_file,
- timeout=timeout, context=context)
+ self.proxy_info = proxy_info("https")
+
+ context = _build_ssl_context(
+ self.disable_ssl_certificate_validation,
+ self.ca_certs,
+ cert_file,
+ key_file,
+ maximum_version=tls_maximum_version,
+ minimum_version=tls_minimum_version,
+ key_password=key_password,
+ )
+ super(HTTPSConnectionWithTimeout, self).__init__(
+ host, port=port, timeout=timeout, context=context,
+ )
+ self.key_file = key_file
+ self.cert_file = cert_file
+ self.key_password = key_password
def connect(self):
"""Connect to a host on a given (SSL) port."""
- if self.proxy_info and self.proxy_info.isgood():
+ if self.proxy_info and self.proxy_info.isgood() and self.proxy_info.applies_to(self.host):
use_proxy = True
- proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = self.proxy_info.astuple()
+ (
+ proxy_type,
+ proxy_host,
+ proxy_port,
+ proxy_rdns,
+ proxy_user,
+ proxy_pass,
+ proxy_headers,
+ ) = self.proxy_info.astuple()
host = proxy_host
port = proxy_port
@@ -1002,7 +1122,9 @@ def connect(self):
if use_proxy:
sock = socks.socksocket(family, socktype, proto)
- sock.setproxy(proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)
+ sock.setproxy(
+ proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass,
+ )
else:
sock = socket.socket(family, socktype, proto)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
@@ -1013,7 +1135,7 @@ def connect(self):
self.sock = self._context.wrap_socket(sock, server_hostname=self.host)
# Python 3.3 compatibility: emulate the check_hostname behavior
- if not hasattr(self._context, 'check_hostname') and not self.disable_ssl_certificate_validation:
+ if not hasattr(self._context, "check_hostname") and not self.disable_ssl_certificate_validation:
try:
ssl.match_hostname(self.sock.getpeercert(), self.host)
except Exception:
@@ -1024,8 +1146,11 @@ def connect(self):
if self.debuglevel > 0:
print("connect: ({0}, {1})".format(self.host, self.port))
if use_proxy:
- print("proxy: {0}".format(str(
- (proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers))))
+ print(
+ "proxy: {0}".format(
+ str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,))
+ )
+ )
except (ssl.SSLError, ssl.CertificateError) as e:
if sock:
sock.close()
@@ -1038,9 +1163,13 @@ def connect(self):
except socket.error as e:
socket_err = e
if self.debuglevel > 0:
- print("connect fail: ({0}, {1})".format((self.host, self.port)))
+ print("connect fail: ({0}, {1})".format(self.host, self.port))
if use_proxy:
- print("proxy: {0}".format(str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers))))
+ print(
+ "proxy: {0}".format(
+ str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers,))
+ )
+ )
if self.sock:
self.sock.close()
self.sock = None
@@ -1051,10 +1180,11 @@ def connect(self):
SCHEME_TO_CONNECTION = {
- 'http': HTTPConnectionWithTimeout,
- 'https': HTTPSConnectionWithTimeout,
+ "http": HTTPConnectionWithTimeout,
+ "https": HTTPSConnectionWithTimeout,
}
+
class Http(object):
"""An HTTP client that handles:
@@ -1069,9 +1199,17 @@ class Http(object):
and more.
"""
- def __init__(self, cache=None, timeout=None,
- proxy_info=proxy_info_from_environment,
- ca_certs=None, disable_ssl_certificate_validation=False):
+
+ def __init__(
+ self,
+ cache=None,
+ timeout=None,
+ proxy_info=proxy_info_from_environment,
+ ca_certs=None,
+ disable_ssl_certificate_validation=False,
+ tls_maximum_version=None,
+ tls_minimum_version=None,
+ ):
"""If 'cache' is a string then it is used as a directory name for
a disk cache. Otherwise it must be an object that supports the
same interface as FileCache.
@@ -1094,11 +1232,15 @@ def __init__(self, cache=None, timeout=None,
If disable_ssl_certificate_validation is true, SSL cert validation will
not be performed.
-"""
+
+ tls_maximum_version / tls_minimum_version require Python 3.7+ /
+ OpenSSL 1.1.0g+. A value of "TLSv1_3" requires OpenSSL 1.1.1+.
+ """
self.proxy_info = proxy_info
self.ca_certs = ca_certs
- self.disable_ssl_certificate_validation = \
- disable_ssl_certificate_validation
+ self.disable_ssl_certificate_validation = disable_ssl_certificate_validation
+ self.tls_maximum_version = tls_maximum_version
+ self.tls_minimum_version = tls_minimum_version
# Map domain name to an httplib connection
self.connections = {}
# The location of the cache, for now a directory
@@ -1120,10 +1262,14 @@ def __init__(self, cache=None, timeout=None,
# If set to False then no redirects are followed, even safe ones.
self.follow_redirects = True
+ self.redirect_codes = REDIRECT_CODES
+
# Which HTTP methods do we apply optimistic concurrency to, i.e.
# which methods get an "if-match:" etag header added to them.
self.optimistic_concurrency_methods = ["PUT", "PATCH"]
+ self.safe_methods = list(SAFE_METHODS)
+
# If 'follow_redirects' is True, and this is set to True then
# all redirecs are followed, including unsafe ones.
self.follow_all_redirects = False
@@ -1137,14 +1283,24 @@ def __init__(self, cache=None, timeout=None,
# Keep Authorization: headers on a redirect.
self.forward_authorization_headers = False
+ def close(self):
+ """Close persistent connections, clear sensitive data.
+ Not thread-safe, requires external synchronization against concurrent requests.
+ """
+ existing, self.connections = self.connections, {}
+ for _, c in existing.items():
+ c.close()
+ self.certificates.clear()
+ self.clear_credentials()
+
def __getstate__(self):
state_dict = copy.copy(self.__dict__)
# In case request is augmented by some foreign object such as
# credentials which handle auth
- if 'request' in state_dict:
- del state_dict['request']
- if 'connections' in state_dict:
- del state_dict['connections']
+ if "request" in state_dict:
+ del state_dict["request"]
+ if "connections" in state_dict:
+ del state_dict["connections"]
return state_dict
def __setstate__(self, state):
@@ -1155,7 +1311,7 @@ def _auth_from_challenge(self, host, request_uri, headers, response, content):
"""A generator that creates Authorization objects
that can be applied to requests.
"""
- challenges = _parse_www_authenticate(response, 'www-authenticate')
+ challenges = auth._parse_www_authenticate(response, "www-authenticate")
for cred in self.credentials.iter(host):
for scheme in AUTH_SCHEME_ORDER:
if scheme in challenges:
@@ -1166,10 +1322,10 @@ def add_credentials(self, name, password, domain=""):
any time a request requires authentication."""
self.credentials.add(name, password, domain)
- def add_certificate(self, key, cert, domain):
+ def add_certificate(self, key, cert, domain, password=None):
"""Add a key and cert that will be used
any time a request requires authentication."""
- self.certificates.add(key, cert, domain)
+ self.certificates.add(key, cert, domain, password)
def clear_credentials(self):
"""Remove all the names and passwords
@@ -1193,20 +1349,20 @@ def _conn_request(self, conn, request_uri, method, body, headers):
conn.close()
raise ServerNotFoundError("Unable to find the server at %s" % conn.host)
except socket.error as e:
- errno_ = (e.args[0].errno if isinstance(e.args[0], socket.error) else e.errno)
+ errno_ = _errno_from_exception(e)
if errno_ in (errno.ENETUNREACH, errno.EADDRNOTAVAIL) and i < RETRIES:
continue # retry on potentially transient errors
raise
except http.client.HTTPException:
if conn.sock is None:
- if i < RETRIES-1:
+ if i < RETRIES - 1:
conn.close()
conn.connect()
continue
else:
conn.close()
raise
- if i < RETRIES-1:
+ if i < RETRIES - 1:
conn.close()
conn.connect()
continue
@@ -1251,8 +1407,9 @@ def _conn_request(self, conn, request_uri, method, body, headers):
break
return (response, content)
-
- def _request(self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey):
+ def _request(
+ self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey,
+ ):
"""Do the actual request using the connection object
and also follow one level of redirects if necessary"""
@@ -1266,61 +1423,65 @@ def _request(self, conn, host, absolute_uri, request_uri, method, body, headers,
if auth:
if auth.response(response, body):
auth.request(method, request_uri, headers, body)
- (response, content) = self._conn_request(conn, request_uri, method, body, headers )
+ (response, content) = self._conn_request(conn, request_uri, method, body, headers)
response._stale_digest = 1
if response.status == 401:
for authorization in self._auth_from_challenge(host, request_uri, headers, response, content):
authorization.request(method, request_uri, headers, body)
- (response, content) = self._conn_request(conn, request_uri, method, body, headers, )
+ (response, content) = self._conn_request(conn, request_uri, method, body, headers)
if response.status != 401:
self.authorizations.append(authorization)
authorization.response(response, body)
break
- if (self.follow_all_redirects or (method in ["GET", "HEAD"]) or response.status == 303):
- if self.follow_redirects and response.status in [300, 301, 302, 303, 307]:
+ if self.follow_all_redirects or method in self.safe_methods or response.status in (303, 308):
+ if self.follow_redirects and response.status in self.redirect_codes:
# Pick out the location header and basically start from the beginning
# remembering first to strip the ETag header and decrement our 'depth'
if redirections:
- if 'location' not in response and response.status != 300:
- raise RedirectMissingLocation( _("Redirected but the response is missing a Location: header."), response, content)
+ if "location" not in response and response.status != 300:
+ raise RedirectMissingLocation(
+ _("Redirected but the response is missing a Location: header."), response, content,
+ )
# Fix-up relative redirects (which violate an RFC 2616 MUST)
- if 'location' in response:
- location = response['location']
+ if "location" in response:
+ location = response["location"]
(scheme, authority, path, query, fragment) = parse_uri(location)
if authority == None:
- response['location'] = urllib.parse.urljoin(absolute_uri, location)
- if response.status == 301 and method in ["GET", "HEAD"]:
- response['-x-permanent-redirect-url'] = response['location']
- if 'content-location' not in response:
- response['content-location'] = absolute_uri
+ response["location"] = urllib.parse.urljoin(absolute_uri, location)
+ if response.status == 308 or (response.status == 301 and (method in self.safe_methods)):
+ response["-x-permanent-redirect-url"] = response["location"]
+ if "content-location" not in response:
+ response["content-location"] = absolute_uri
_updateCache(headers, response, content, self.cache, cachekey)
- if 'if-none-match' in headers:
- del headers['if-none-match']
- if 'if-modified-since' in headers:
- del headers['if-modified-since']
- if 'authorization' in headers and not self.forward_authorization_headers:
- del headers['authorization']
- if 'location' in response:
- location = response['location']
+ if "if-none-match" in headers:
+ del headers["if-none-match"]
+ if "if-modified-since" in headers:
+ del headers["if-modified-since"]
+ if "authorization" in headers and not self.forward_authorization_headers:
+ del headers["authorization"]
+ if "location" in response:
+ location = response["location"]
old_response = copy.deepcopy(response)
- if 'content-location' not in old_response:
- old_response['content-location'] = absolute_uri
+ if "content-location" not in old_response:
+ old_response["content-location"] = absolute_uri
redirect_method = method
if response.status in [302, 303]:
- redirect_method = "GET"
- body = None
+ redirect_method = "GET"
+ body = None
(response, content) = self.request(
- location, method=redirect_method, body=body,
- headers=headers, redirections=redirections - 1)
+ location, method=redirect_method, body=body, headers=headers, redirections=redirections - 1,
+ )
response.previous = old_response
else:
- raise RedirectLimit("Redirected more times than redirection_limit allows.", response, content)
- elif response.status in [200, 203] and method in ["GET", "HEAD"]:
+ raise RedirectLimit(
+ "Redirected more times than redirection_limit allows.", response, content,
+ )
+ elif response.status in [200, 203] and method in self.safe_methods:
# Don't cache 206's since we aren't going to handle byte range requests
- if 'content-location' not in response:
- response['content-location'] = absolute_uri
+ if "content-location" not in response:
+ response["content-location"] = absolute_uri
_updateCache(headers, response, content, self.cache, cachekey)
return (response, content)
@@ -1328,12 +1489,13 @@ def _request(self, conn, host, absolute_uri, request_uri, method, body, headers,
def _normalize_headers(self, headers):
return _normalize_headers(headers)
-# Need to catch and rebrand some exceptions
-# Then need to optionally turn all exceptions into status codes
-# including all socket.* and httplib.* exceptions.
-
+ # Need to catch and rebrand some exceptions
+ # Then need to optionally turn all exceptions into status codes
+ # including all socket.* and httplib.* exceptions.
- def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None):
+ def request(
+ self, uri, method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None,
+ ):
""" Performs a single HTTP request.
The 'uri' is the URI of the HTTP resource and can begin
with either 'http' or 'https'. The value of 'uri' must be an absolute URI.
@@ -1354,103 +1516,130 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU
being and instance of the 'Response' class, the second being
a string that contains the response entity body.
"""
+ conn_key = ""
+
try:
if headers is None:
headers = {}
else:
headers = self._normalize_headers(headers)
- if 'user-agent' not in headers:
- headers['user-agent'] = "Python-httplib2/%s (gzip)" % __version__
+ if "user-agent" not in headers:
+ headers["user-agent"] = "Python-httplib2/%s (gzip)" % __version__
uri = iri2uri(uri)
+ # Prevent CWE-75 space injection to manipulate request via part of uri.
+ # Prevent CWE-93 CRLF injection to modify headers via part of uri.
+ uri = uri.replace(" ", "%20").replace("\r", "%0D").replace("\n", "%0A")
(scheme, authority, request_uri, defrag_uri) = urlnorm(uri)
- domain_port = authority.split(":")[0:2]
- if len(domain_port) == 2 and domain_port[1] == '443' and scheme == 'http':
- scheme = 'https'
- authority = domain_port[0]
-
- conn_key = scheme+":"+authority
- if conn_key in self.connections:
- conn = self.connections[conn_key]
- else:
+
+ conn_key = scheme + ":" + authority
+ conn = self.connections.get(conn_key)
+ if conn is None:
if not connection_type:
connection_type = SCHEME_TO_CONNECTION[scheme]
certs = list(self.certificates.iter(authority))
if issubclass(connection_type, HTTPSConnectionWithTimeout):
if certs:
conn = self.connections[conn_key] = connection_type(
- authority, key_file=certs[0][0],
- cert_file=certs[0][1], timeout=self.timeout,
- proxy_info=self.proxy_info,
- ca_certs=self.ca_certs,
- disable_ssl_certificate_validation=
- self.disable_ssl_certificate_validation)
+ authority,
+ key_file=certs[0][0],
+ cert_file=certs[0][1],
+ timeout=self.timeout,
+ proxy_info=self.proxy_info,
+ ca_certs=self.ca_certs,
+ disable_ssl_certificate_validation=self.disable_ssl_certificate_validation,
+ tls_maximum_version=self.tls_maximum_version,
+ tls_minimum_version=self.tls_minimum_version,
+ key_password=certs[0][2],
+ )
else:
conn = self.connections[conn_key] = connection_type(
- authority, timeout=self.timeout,
- proxy_info=self.proxy_info,
- ca_certs=self.ca_certs,
- disable_ssl_certificate_validation=
- self.disable_ssl_certificate_validation)
+ authority,
+ timeout=self.timeout,
+ proxy_info=self.proxy_info,
+ ca_certs=self.ca_certs,
+ disable_ssl_certificate_validation=self.disable_ssl_certificate_validation,
+ tls_maximum_version=self.tls_maximum_version,
+ tls_minimum_version=self.tls_minimum_version,
+ )
else:
conn = self.connections[conn_key] = connection_type(
- authority, timeout=self.timeout,
- proxy_info=self.proxy_info)
+ authority, timeout=self.timeout, proxy_info=self.proxy_info
+ )
conn.set_debuglevel(debuglevel)
- if 'range' not in headers and 'accept-encoding' not in headers:
- headers['accept-encoding'] = 'gzip, deflate'
+ if "range" not in headers and "accept-encoding" not in headers:
+ headers["accept-encoding"] = "gzip, deflate"
info = email.message.Message()
+ cachekey = None
cached_value = None
if self.cache:
cachekey = defrag_uri
cached_value = self.cache.get(cachekey)
if cached_value:
try:
- info, content = cached_value.split(b'\r\n\r\n', 1)
+ info, content = cached_value.split(b"\r\n\r\n", 1)
info = email.message_from_bytes(info)
for k, v in info.items():
- if v.startswith('=?') and v.endswith('?='):
- info.replace_header(k,
- str(*email.header.decode_header(v)[0]))
+ if v.startswith("=?") and v.endswith("?="):
+ info.replace_header(k, str(*email.header.decode_header(v)[0]))
except (IndexError, ValueError):
self.cache.delete(cachekey)
cachekey = None
cached_value = None
- else:
- cachekey = None
- if method in self.optimistic_concurrency_methods and self.cache and 'etag' in info and not self.ignore_etag and 'if-match' not in headers:
+ if (
+ method in self.optimistic_concurrency_methods
+ and self.cache
+ and "etag" in info
+ and not self.ignore_etag
+ and "if-match" not in headers
+ ):
# http://www.w3.org/1999/04/Editing/
- headers['if-match'] = info['etag']
+ headers["if-match"] = info["etag"]
- if method not in ["GET", "HEAD"] and self.cache and cachekey:
- # RFC 2616 Section 13.10
+ # https://tools.ietf.org/html/rfc7234
+ # A cache MUST invalidate the effective Request URI as well as [...] Location and Content-Location
+ # when a non-error status code is received in response to an unsafe request method.
+ if self.cache and cachekey and method not in self.safe_methods:
self.cache.delete(cachekey)
# Check the vary header in the cache to see if this request
# matches what varies in the cache.
- if method in ['GET', 'HEAD'] and 'vary' in info:
- vary = info['vary']
- vary_headers = vary.lower().replace(' ', '').split(',')
+ if method in self.safe_methods and "vary" in info:
+ vary = info["vary"]
+ vary_headers = vary.lower().replace(" ", "").split(",")
for header in vary_headers:
- key = '-varied-%s' % header
+ key = "-varied-%s" % header
value = info[key]
if headers.get(header, None) != value:
- cached_value = None
- break
-
- if cached_value and method in ["GET", "HEAD"] and self.cache and 'range' not in headers:
- if '-x-permanent-redirect-url' in info:
+ cached_value = None
+ break
+
+ if (
+ self.cache
+ and cached_value
+ and (method in self.safe_methods or info["status"] == "308")
+ and "range" not in headers
+ ):
+ redirect_method = method
+ if info["status"] not in ("307", "308"):
+ redirect_method = "GET"
+ if "-x-permanent-redirect-url" in info:
# Should cached permanent redirects be counted in our redirection count? For now, yes.
if redirections <= 0:
- raise RedirectLimit("Redirected more times than redirection_limit allows.", {}, "")
+ raise RedirectLimit(
+ "Redirected more times than redirection_limit allows.", {}, "",
+ )
(response, new_content) = self.request(
- info['-x-permanent-redirect-url'], method='GET',
- headers=headers, redirections=redirections - 1)
+ info["-x-permanent-redirect-url"],
+ method=redirect_method,
+ headers=headers,
+ redirections=redirections - 1,
+ )
response.previous = Response(info)
response.previous.fromcache = True
else:
@@ -1465,23 +1654,21 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU
entry_disposition = _entry_disposition(info, headers)
if entry_disposition == "FRESH":
- if not cached_value:
- info['status'] = '504'
- content = b""
response = Response(info)
- if cached_value:
- response.fromcache = True
+ response.fromcache = True
return (response, content)
if entry_disposition == "STALE":
- if 'etag' in info and not self.ignore_etag and not 'if-none-match' in headers:
- headers['if-none-match'] = info['etag']
- if 'last-modified' in info and not 'last-modified' in headers:
- headers['if-modified-since'] = info['last-modified']
+ if "etag" in info and not self.ignore_etag and not "if-none-match" in headers:
+ headers["if-none-match"] = info["etag"]
+ if "last-modified" in info and not "last-modified" in headers:
+ headers["if-modified-since"] = info["last-modified"]
elif entry_disposition == "TRANSPARENT":
pass
- (response, new_content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
+ (response, new_content) = self._request(
+ conn, authority, uri, request_uri, method, body, headers, redirections, cachekey,
+ )
if response.status == 304 and method == "GET":
# Rewrite the cache entry with the new end-to-end headers
@@ -1506,13 +1693,21 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU
content = new_content
else:
cc = _parse_cache_control(headers)
- if 'only-if-cached'in cc:
- info['status'] = '504'
+ if "only-if-cached" in cc:
+ info["status"] = "504"
response = Response(info)
content = b""
else:
- (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
+ (response, content) = self._request(
+ conn, authority, uri, request_uri, method, body, headers, redirections, cachekey,
+ )
except Exception as e:
+ is_timeout = isinstance(e, socket.timeout)
+ if is_timeout:
+ conn = self.connections.pop(conn_key, None)
+ if conn:
+ conn.close()
+
if self.force_exception_to_status_code:
if isinstance(e, HttpLib2ErrorWithResponse):
response = e.response
@@ -1521,40 +1716,31 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU
response.reason = str(e)
elif isinstance(e, socket.timeout):
content = b"Request Timeout"
- response = Response({
- "content-type": "text/plain",
- "status": "408",
- "content-length": len(content)
- })
+ response = Response({"content-type": "text/plain", "status": "408", "content-length": len(content),})
response.reason = "Request Timeout"
else:
- content = str(e).encode('utf-8')
- response = Response({
- "content-type": "text/plain",
- "status": "400",
- "content-length": len(content)
- })
+ content = str(e).encode("utf-8")
+ response = Response({"content-type": "text/plain", "status": "400", "content-length": len(content),})
response.reason = "Bad Request"
else:
raise
-
return (response, content)
-
class Response(dict):
"""An object more like email.message than httplib.HTTPResponse."""
"""Is this response from our local cache"""
fromcache = False
+ """HTTP protocol version used by server.
- """HTTP protocol version used by server. 10 for HTTP/1.0, 11 for HTTP/1.1. """
+ 10 for HTTP/1.0, 11 for HTTP/1.1.
+ """
version = 11
"Status code returned by server. "
status = 200
-
"""Reason phrase returned by server."""
reason = "Ok"
@@ -1568,24 +1754,23 @@ def __init__(self, info):
key = key.lower()
prev = self.get(key)
if prev is not None:
- value = ', '.join((prev, value))
+ value = ", ".join((prev, value))
self[key] = value
self.status = info.status
- self['status'] = str(self.status)
+ self["status"] = str(self.status)
self.reason = info.reason
self.version = info.version
elif isinstance(info, email.message.Message):
for key, value in list(info.items()):
self[key.lower()] = value
- self.status = int(self['status'])
+ self.status = int(self["status"])
else:
for key, value in info.items():
self[key.lower()] = value
- self.status = int(self.get('status', self.status))
-
+ self.status = int(self.get("status", self.status))
def __getattr__(self, name):
- if name == 'dict':
+ if name == "dict":
return self
else:
raise AttributeError(name)
diff --git a/third_party/gsutil/third_party/httplib2/python3/httplib2/auth.py b/third_party/gsutil/third_party/httplib2/python3/httplib2/auth.py
new file mode 100644
index 00000000000..b8028ae2a75
--- /dev/null
+++ b/third_party/gsutil/third_party/httplib2/python3/httplib2/auth.py
@@ -0,0 +1,69 @@
+import base64
+import re
+
+import pyparsing as pp
+
+from .error import *
+
+
+try: # pyparsing>=3.0.0
+ downcaseTokens = pp.common.downcaseTokens
+except AttributeError:
+ downcaseTokens = pp.downcaseTokens
+
+UNQUOTE_PAIRS = re.compile(r"\\(.)")
+unquote = lambda s, l, t: UNQUOTE_PAIRS.sub(r"\1", t[0][1:-1])
+
+# https://tools.ietf.org/html/rfc7235#section-1.2
+# https://tools.ietf.org/html/rfc7235#appendix-B
+tchar = "!#$%&'*+-.^_`|~" + pp.nums + pp.alphas
+token = pp.Word(tchar).setName("token")
+token68 = pp.Combine(pp.Word("-._~+/" + pp.nums + pp.alphas) + pp.Optional(pp.Word("=").leaveWhitespace())).setName(
+ "token68"
+)
+
+quoted_string = pp.dblQuotedString.copy().setName("quoted-string").setParseAction(unquote)
+auth_param_name = token.copy().setName("auth-param-name").addParseAction(downcaseTokens)
+auth_param = auth_param_name + pp.Suppress("=") + (quoted_string | token)
+params = pp.Dict(pp.delimitedList(pp.Group(auth_param)))
+
+scheme = token("scheme")
+challenge = scheme + (params("params") | token68("token"))
+
+authentication_info = params.copy()
+www_authenticate = pp.delimitedList(pp.Group(challenge))
+
+
+def _parse_authentication_info(headers, headername="authentication-info"):
+ """https://tools.ietf.org/html/rfc7615
+ """
+ header = headers.get(headername, "").strip()
+ if not header:
+ return {}
+ try:
+ parsed = authentication_info.parseString(header)
+ except pp.ParseException as ex:
+ # print(ex.explain(ex))
+ raise MalformedHeader(headername)
+
+ return parsed.asDict()
+
+
+def _parse_www_authenticate(headers, headername="www-authenticate"):
+ """Returns a dictionary of dictionaries, one dict per auth_scheme."""
+ header = headers.get(headername, "").strip()
+ if not header:
+ return {}
+ try:
+ parsed = www_authenticate.parseString(header)
+ except pp.ParseException as ex:
+ # print(ex.explain(ex))
+ raise MalformedHeader(headername)
+
+ retval = {
+ challenge["scheme"].lower(): challenge["params"].asDict()
+ if "params" in challenge
+ else {"token": challenge.get("token")}
+ for challenge in parsed
+ }
+ return retval
diff --git a/third_party/gsutil/third_party/httplib2/python3/httplib2/cacerts.txt b/third_party/gsutil/third_party/httplib2/python3/httplib2/cacerts.txt
index 8020c1b4d59..78a444c43af 100644
--- a/third_party/gsutil/third_party/httplib2/python3/httplib2/cacerts.txt
+++ b/third_party/gsutil/third_party/httplib2/python3/httplib2/cacerts.txt
@@ -2138,34 +2138,6 @@ hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr
so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI
-----END CERTIFICATE-----
-# Issuer: O=Digital Signature Trust Co., CN=DST Root CA X3
-# Subject: O=Digital Signature Trust Co., CN=DST Root CA X3
-# Label: "IdenTrust DST Root CA X3"
-# Serial: 44AFB080D6A327BA893039862EF8406B
-# MD5 Fingerprint: 41:03:52:DC:0F:F7:50:1B:16:F0:02:8E:BA:6F:45:C5
-# SHA1 Fingerprint: DA:C9:02:4F:54:D8:F6:DF:94:93:5F:B1:73:26:38:CA:6A:D7:7C:13
-# SHA256 Fingerprint: 06:87:26:03:31:A7:24:03:D9:09:F1:05:E6:9B:CF:0D:32:E1:BD:24:93:FF:C6:D9:20:6D:11:BC:D6:77:07:39
------BEGIN CERTIFICATE-----
-MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
-MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
-DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
-PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
-Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
-rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
-OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
-xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
-7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
-aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
-HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
-SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
-ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
-AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
-R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
-JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
-Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
------END CERTIFICATE-----
-
# Issuer: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US
# Subject: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US
# Serial: 33af1e6a711a9a0bb2864b11d09fae5
@@ -2195,3 +2167,59 @@ pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
MrY=
-----END CERTIFICATE-----
+# Issuer: /C=US/O=Internet Security Research Group/CN=ISRG Root X1
+# Subject: /C=US/O=Internet Security Research Group/CN=ISRG Root X1
+# Serial: 8210CFB0D240E3594463E0BB63828B00
+# SHA1 Fingerprint: CA:BD:2A:79:A1:07:6A:31:F2:1D:25:36:35:CB:03:9D:43:29:A5:E8
+# SHA256 Fingerprint: 96:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6
+-----BEGIN CERTIFICATE-----
+MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
+TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
+cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
+WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
+ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
+MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
+h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
+0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
+A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
+T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
+B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
+B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
+KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
+OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
+jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
+qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
+rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
+hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
+ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
+3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
+NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
+ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
+TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
+jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
+oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
+4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
+mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
+emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
+-----END CERTIFICATE-----
+
+# Issuer: /C=US/O=Internet Security Research Group/CN=ISRG Root X2
+# Subject: /C=US/O=Internet Security Research Group/CN=ISRG Root X2
+# Serial: 41D29DD172EAEEA780C12C6CE92F8752
+# SHA1 Fingerprint: BD:B1:B9:3C:D5:97:8D:45:C6:26:14:55:F8:DB:95:C7:5A:D1:53:AF
+# SHA256 Fingerprint: 69:72:9B:8E:15:A8:6E:FC:17:7A:57:AF:B7:17:1D:FC:64:AD:D2:8C:2F:CA:8C:F1:50:7E:34:45:3C:CB:14:70
+-----BEGIN CERTIFICATE-----
+MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw
+CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg
+R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00
+MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT
+ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw
+EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW
++1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9
+ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T
+AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI
+zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW
+tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1
+/q4AaOeMSQ+2b1tbFfLn
+-----END CERTIFICATE-----
diff --git a/third_party/gsutil/third_party/httplib2/python3/httplib2/certs.py b/third_party/gsutil/third_party/httplib2/python3/httplib2/certs.py
new file mode 100644
index 00000000000..59d1ffc7027
--- /dev/null
+++ b/third_party/gsutil/third_party/httplib2/python3/httplib2/certs.py
@@ -0,0 +1,42 @@
+"""Utilities for certificate management."""
+
+import os
+
+certifi_available = False
+certifi_where = None
+try:
+ from certifi import where as certifi_where
+ certifi_available = True
+except ImportError:
+ pass
+
+custom_ca_locater_available = False
+custom_ca_locater_where = None
+try:
+ from ca_certs_locater import get as custom_ca_locater_where
+ custom_ca_locater_available = True
+except ImportError:
+ pass
+
+
+BUILTIN_CA_CERTS = os.path.join(
+ os.path.dirname(os.path.abspath(__file__)), "cacerts.txt"
+)
+
+
+def where():
+ env = os.environ.get("HTTPLIB2_CA_CERTS")
+ if env is not None:
+ if os.path.isfile(env):
+ return env
+ else:
+ raise RuntimeError("Environment variable HTTPLIB2_CA_CERTS not a valid file")
+ if custom_ca_locater_available:
+ return custom_ca_locater_where()
+ if certifi_available:
+ return certifi_where()
+ return BUILTIN_CA_CERTS
+
+
+if __name__ == "__main__":
+ print(where())
diff --git a/third_party/gsutil/third_party/httplib2/python3/httplib2/error.py b/third_party/gsutil/third_party/httplib2/python3/httplib2/error.py
new file mode 100644
index 00000000000..0e68c12a852
--- /dev/null
+++ b/third_party/gsutil/third_party/httplib2/python3/httplib2/error.py
@@ -0,0 +1,48 @@
+# All exceptions raised here derive from HttpLib2Error
+class HttpLib2Error(Exception):
+ pass
+
+
+# Some exceptions can be caught and optionally
+# be turned back into responses.
+class HttpLib2ErrorWithResponse(HttpLib2Error):
+ def __init__(self, desc, response, content):
+ self.response = response
+ self.content = content
+ HttpLib2Error.__init__(self, desc)
+
+
+class RedirectMissingLocation(HttpLib2ErrorWithResponse):
+ pass
+
+
+class RedirectLimit(HttpLib2ErrorWithResponse):
+ pass
+
+
+class FailedToDecompressContent(HttpLib2ErrorWithResponse):
+ pass
+
+
+class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse):
+ pass
+
+
+class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse):
+ pass
+
+
+class MalformedHeader(HttpLib2Error):
+ pass
+
+
+class RelativeURIError(HttpLib2Error):
+ pass
+
+
+class ServerNotFoundError(HttpLib2Error):
+ pass
+
+
+class ProxiesUnavailableError(HttpLib2Error):
+ pass
diff --git a/third_party/gsutil/third_party/httplib2/python3/httplib2/iri2uri.py b/third_party/gsutil/third_party/httplib2/python3/httplib2/iri2uri.py
index 98985f84643..86e361e62ae 100644
--- a/third_party/gsutil/third_party/httplib2/python3/httplib2/iri2uri.py
+++ b/third_party/gsutil/third_party/httplib2/python3/httplib2/iri2uri.py
@@ -1,110 +1,124 @@
-"""
-iri2uri
-
-Converts an IRI to a URI.
-
-"""
-__author__ = "Joe Gregorio (joe@bitworking.org)"
-__copyright__ = "Copyright 2006, Joe Gregorio"
-__contributors__ = []
-__version__ = "1.0.0"
-__license__ = "MIT"
-__history__ = """
-"""
-
-import urllib.parse
-
-
-# Convert an IRI to a URI following the rules in RFC 3987
-#
-# The characters we need to enocde and escape are defined in the spec:
-#
-# iprivate = %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD
-# ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF
-# / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD
-# / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD
-# / %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD
-# / %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD
-# / %xD0000-DFFFD / %xE1000-EFFFD
-
-escape_range = [
- (0xA0, 0xD7FF),
- (0xE000, 0xF8FF),
- (0xF900, 0xFDCF),
- (0xFDF0, 0xFFEF),
- (0x10000, 0x1FFFD),
- (0x20000, 0x2FFFD),
- (0x30000, 0x3FFFD),
- (0x40000, 0x4FFFD),
- (0x50000, 0x5FFFD),
- (0x60000, 0x6FFFD),
- (0x70000, 0x7FFFD),
- (0x80000, 0x8FFFD),
- (0x90000, 0x9FFFD),
- (0xA0000, 0xAFFFD),
- (0xB0000, 0xBFFFD),
- (0xC0000, 0xCFFFD),
- (0xD0000, 0xDFFFD),
- (0xE1000, 0xEFFFD),
- (0xF0000, 0xFFFFD),
- (0x100000, 0x10FFFD),
-]
-
-def encode(c):
- retval = c
- i = ord(c)
- for low, high in escape_range:
- if i < low:
- break
- if i >= low and i <= high:
- retval = "".join(["%%%2X" % o for o in c.encode('utf-8')])
- break
- return retval
-
-
-def iri2uri(uri):
- """Convert an IRI to a URI. Note that IRIs must be
- passed in a unicode strings. That is, do not utf-8 encode
- the IRI before passing it into the function."""
- if isinstance(uri ,str):
- (scheme, authority, path, query, fragment) = urllib.parse.urlsplit(uri)
- authority = authority.encode('idna').decode('utf-8')
- # For each character in 'ucschar' or 'iprivate'
- # 1. encode as utf-8
- # 2. then %-encode each octet of that utf-8
- uri = urllib.parse.urlunsplit((scheme, authority, path, query, fragment))
- uri = "".join([encode(c) for c in uri])
- return uri
-
-if __name__ == "__main__":
- import unittest
-
- class Test(unittest.TestCase):
-
- def test_uris(self):
- """Test that URIs are invariant under the transformation."""
- invariant = [
- "ftp://ftp.is.co.za/rfc/rfc1808.txt",
- "http://www.ietf.org/rfc/rfc2396.txt",
- "ldap://[2001:db8::7]/c=GB?objectClass?one",
- "mailto:John.Doe@example.com",
- "news:comp.infosystems.www.servers.unix",
- "tel:+1-816-555-1212",
- "telnet://192.0.2.16:80/",
- "urn:oasis:names:specification:docbook:dtd:xml:4.1.2" ]
- for uri in invariant:
- self.assertEqual(uri, iri2uri(uri))
-
- def test_iri(self):
- """ Test that the right type of escaping is done for each part of the URI."""
- self.assertEqual("http://xn--o3h.com/%E2%98%84", iri2uri("http://\N{COMET}.com/\N{COMET}"))
- self.assertEqual("http://bitworking.org/?fred=%E2%98%84", iri2uri("http://bitworking.org/?fred=\N{COMET}"))
- self.assertEqual("http://bitworking.org/#%E2%98%84", iri2uri("http://bitworking.org/#\N{COMET}"))
- self.assertEqual("#%E2%98%84", iri2uri("#\N{COMET}"))
- self.assertEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri("/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}"))
- self.assertEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(iri2uri("/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}")))
- self.assertNotEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri("/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}".encode('utf-8')))
-
- unittest.main()
-
-
+# -*- coding: utf-8 -*-
+"""Converts an IRI to a URI."""
+
+__author__ = "Joe Gregorio (joe@bitworking.org)"
+__copyright__ = "Copyright 2006, Joe Gregorio"
+__contributors__ = []
+__version__ = "1.0.0"
+__license__ = "MIT"
+
+import urllib.parse
+
+# Convert an IRI to a URI following the rules in RFC 3987
+#
+# The characters we need to enocde and escape are defined in the spec:
+#
+# iprivate = %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD
+# ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF
+# / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD
+# / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD
+# / %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD
+# / %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD
+# / %xD0000-DFFFD / %xE1000-EFFFD
+
+escape_range = [
+ (0xA0, 0xD7FF),
+ (0xE000, 0xF8FF),
+ (0xF900, 0xFDCF),
+ (0xFDF0, 0xFFEF),
+ (0x10000, 0x1FFFD),
+ (0x20000, 0x2FFFD),
+ (0x30000, 0x3FFFD),
+ (0x40000, 0x4FFFD),
+ (0x50000, 0x5FFFD),
+ (0x60000, 0x6FFFD),
+ (0x70000, 0x7FFFD),
+ (0x80000, 0x8FFFD),
+ (0x90000, 0x9FFFD),
+ (0xA0000, 0xAFFFD),
+ (0xB0000, 0xBFFFD),
+ (0xC0000, 0xCFFFD),
+ (0xD0000, 0xDFFFD),
+ (0xE1000, 0xEFFFD),
+ (0xF0000, 0xFFFFD),
+ (0x100000, 0x10FFFD),
+]
+
+
+def encode(c):
+ retval = c
+ i = ord(c)
+ for low, high in escape_range:
+ if i < low:
+ break
+ if i >= low and i <= high:
+ retval = "".join(["%%%2X" % o for o in c.encode("utf-8")])
+ break
+ return retval
+
+
+def iri2uri(uri):
+ """Convert an IRI to a URI. Note that IRIs must be
+ passed in a unicode strings. That is, do not utf-8 encode
+ the IRI before passing it into the function."""
+ if isinstance(uri, str):
+ (scheme, authority, path, query, fragment) = urllib.parse.urlsplit(uri)
+ authority = authority.encode("idna").decode("utf-8")
+ # For each character in 'ucschar' or 'iprivate'
+ # 1. encode as utf-8
+ # 2. then %-encode each octet of that utf-8
+ uri = urllib.parse.urlunsplit((scheme, authority, path, query, fragment))
+ uri = "".join([encode(c) for c in uri])
+ return uri
+
+
+if __name__ == "__main__":
+ import unittest
+
+ class Test(unittest.TestCase):
+ def test_uris(self):
+ """Test that URIs are invariant under the transformation."""
+ invariant = [
+ "ftp://ftp.is.co.za/rfc/rfc1808.txt",
+ "http://www.ietf.org/rfc/rfc2396.txt",
+ "ldap://[2001:db8::7]/c=GB?objectClass?one",
+ "mailto:John.Doe@example.com",
+ "news:comp.infosystems.www.servers.unix",
+ "tel:+1-816-555-1212",
+ "telnet://192.0.2.16:80/",
+ "urn:oasis:names:specification:docbook:dtd:xml:4.1.2",
+ ]
+ for uri in invariant:
+ self.assertEqual(uri, iri2uri(uri))
+
+ def test_iri(self):
+ """Test that the right type of escaping is done for each part of the URI."""
+ self.assertEqual(
+ "http://xn--o3h.com/%E2%98%84",
+ iri2uri("http://\N{COMET}.com/\N{COMET}"),
+ )
+ self.assertEqual(
+ "http://bitworking.org/?fred=%E2%98%84",
+ iri2uri("http://bitworking.org/?fred=\N{COMET}"),
+ )
+ self.assertEqual(
+ "http://bitworking.org/#%E2%98%84",
+ iri2uri("http://bitworking.org/#\N{COMET}"),
+ )
+ self.assertEqual("#%E2%98%84", iri2uri("#\N{COMET}"))
+ self.assertEqual(
+ "/fred?bar=%E2%98%9A#%E2%98%84",
+ iri2uri("/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}"),
+ )
+ self.assertEqual(
+ "/fred?bar=%E2%98%9A#%E2%98%84",
+ iri2uri(iri2uri("/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}")),
+ )
+ self.assertNotEqual(
+ "/fred?bar=%E2%98%9A#%E2%98%84",
+ iri2uri(
+ "/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}".encode("utf-8")
+ ),
+ )
+
+ unittest.main()
diff --git a/third_party/gsutil/third_party/httplib2/python3/httplib2/socks.py b/third_party/gsutil/third_party/httplib2/python3/httplib2/socks.py
index 7fc0591ee71..cc68e634c7d 100644
--- a/third_party/gsutil/third_party/httplib2/python3/httplib2/socks.py
+++ b/third_party/gsutil/third_party/httplib2/python3/httplib2/socks.py
@@ -1,4 +1,5 @@
"""SocksiPy - Python SOCKS module.
+
Version 1.00
Copyright 2006 Dan-Haim. All rights reserved.
@@ -24,20 +25,14 @@
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMANGE.
-
This module provides a standard socket-like interface for Python
for tunneling connections through SOCKS proxies.
-"""
-
-"""
-
-Minor modifications made by Christopher Gilbert (http://motomastyle.com/)
-for use in PyLoris (http://pyloris.sourceforge.net/)
+Minor modifications made by Christopher Gilbert (http://motomastyle.com/) for
+use in PyLoris (http://pyloris.sourceforge.net/).
Minor modifications made by Mario Vilas (http://breakingcode.wordpress.com/)
-mainly to merge bug fixes found in Sourceforge
-
+mainly to merge bug fixes found in Sourceforge.
"""
import base64
@@ -45,8 +40,8 @@
import struct
import sys
-if getattr(socket, 'socket', None) is None:
- raise ImportError('socket.socket missing, proxy support unusable')
+if getattr(socket, "socket", None) is None:
+ raise ImportError("socket.socket missing, proxy support unusable")
PROXY_TYPE_SOCKS4 = 1
PROXY_TYPE_SOCKS5 = 2
@@ -56,21 +51,42 @@
_defaultproxy = None
_orgsocket = socket.socket
-class ProxyError(Exception): pass
-class GeneralProxyError(ProxyError): pass
-class Socks5AuthError(ProxyError): pass
-class Socks5Error(ProxyError): pass
-class Socks4Error(ProxyError): pass
-class HTTPError(ProxyError): pass
-_generalerrors = ("success",
+class ProxyError(Exception):
+ pass
+
+
+class GeneralProxyError(ProxyError):
+ pass
+
+
+class Socks5AuthError(ProxyError):
+ pass
+
+
+class Socks5Error(ProxyError):
+ pass
+
+
+class Socks4Error(ProxyError):
+ pass
+
+
+class HTTPError(ProxyError):
+ pass
+
+
+_generalerrors = (
+ "success",
"invalid data",
"not connected",
"not available",
"bad proxy type",
- "bad input")
+ "bad input",
+)
-_socks5errors = ("succeeded",
+_socks5errors = (
+ "succeeded",
"general SOCKS server failure",
"connection not allowed by ruleset",
"Network unreachable",
@@ -79,21 +95,30 @@ class HTTPError(ProxyError): pass
"TTL expired",
"Command not supported",
"Address type not supported",
- "Unknown error")
+ "Unknown error",
+)
-_socks5autherrors = ("succeeded",
+_socks5autherrors = (
+ "succeeded",
"authentication is required",
"all offered authentication methods were rejected",
"unknown username or invalid password",
- "unknown error")
+ "unknown error",
+)
-_socks4errors = ("request granted",
+_socks4errors = (
+ "request granted",
"request rejected or failed",
"request rejected because SOCKS server cannot connect to identd on the client",
- "request rejected because the client program and identd report different user-ids",
- "unknown error")
+ "request rejected because the client program and identd report different "
+ "user-ids",
+ "unknown error",
+)
-def setdefaultproxy(proxytype=None, addr=None, port=None, rdns=True, username=None, password=None):
+
+def setdefaultproxy(
+ proxytype=None, addr=None, port=None, rdns=True, username=None, password=None
+):
"""setdefaultproxy(proxytype, addr[, port[, rdns[, username[, password]]]])
Sets a default proxy which all further socksocket objects will use,
unless explicitly changed.
@@ -101,11 +126,14 @@ def setdefaultproxy(proxytype=None, addr=None, port=None, rdns=True, username=No
global _defaultproxy
_defaultproxy = (proxytype, addr, port, rdns, username, password)
+
def wrapmodule(module):
"""wrapmodule(module)
+
Attempts to replace a module's socket library with a SOCKS socket. Must set
a default proxy using setdefaultproxy(...) first.
- This will only work on modules that import socket directly into the namespace;
+ This will only work on modules that import socket directly into the
+ namespace;
most of the Python Standard Library falls into this category.
"""
if _defaultproxy != None:
@@ -113,6 +141,7 @@ def wrapmodule(module):
else:
raise GeneralProxyError((4, "no proxy specified"))
+
class socksocket(socket.socket):
"""socksocket([family[, type[, proto]]]) -> socket object
Open a SOCKS enabled socket. The parameters are the same as
@@ -120,7 +149,9 @@ class socksocket(socket.socket):
you must specify family=AF_INET, type=SOCK_STREAM and proto=0.
"""
- def __init__(self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, _sock=None):
+ def __init__(
+ self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, _sock=None
+ ):
_orgsocket.__init__(self, family, type, proto, _sock)
if _defaultproxy != None:
self.__proxy = _defaultproxy
@@ -137,8 +168,9 @@ def __recvall(self, count):
"""
data = self.recv(count)
while len(data) < count:
- d = self.recv(count-len(data))
- if not d: raise GeneralProxyError((0, "connection closed unexpectedly"))
+ d = self.recv(count - len(data))
+ if not d:
+ raise GeneralProxyError((0, "connection closed unexpectedly"))
data = data + d
return data
@@ -167,18 +199,28 @@ def __rewriteproxy(self, header):
hdrs.remove(endpt)
host = host.split(" ")[1]
endpt = endpt.split(" ")
- if (self.__proxy[4] != None and self.__proxy[5] != None):
+ if self.__proxy[4] != None and self.__proxy[5] != None:
hdrs.insert(0, self.__getauthheader())
hdrs.insert(0, "Host: %s" % host)
hdrs.insert(0, "%s http://%s%s %s" % (endpt[0], host, endpt[1], endpt[2]))
return "\r\n".join(hdrs)
def __getauthheader(self):
- auth = self.__proxy[4] + ":" + self.__proxy[5]
- return "Proxy-Authorization: Basic " + base64.b64encode(auth)
-
- def setproxy(self, proxytype=None, addr=None, port=None, rdns=True, username=None, password=None, headers=None):
+ auth = self.__proxy[4] + b":" + self.__proxy[5]
+ return "Proxy-Authorization: Basic " + base64.b64encode(auth).decode()
+
+ def setproxy(
+ self,
+ proxytype=None,
+ addr=None,
+ port=None,
+ rdns=True,
+ username=None,
+ password=None,
+ headers=None,
+ ):
"""setproxy(proxytype, addr[, port[, rdns[, username[, password]]]])
+
Sets the proxy to be used.
proxytype - The type of the proxy to be used. Three types
are supported: PROXY_TYPE_SOCKS4 (including socks4a),
@@ -193,24 +235,33 @@ def setproxy(self, proxytype=None, addr=None, port=None, rdns=True, username=Non
The default is no authentication.
password - Password to authenticate with to the server.
Only relevant when username is also provided.
- headers - Additional or modified headers for the proxy connect request.
+ headers - Additional or modified headers for the proxy connect
+ request.
"""
- self.__proxy = (proxytype, addr, port, rdns, username, password, headers)
+ self.__proxy = (
+ proxytype,
+ addr,
+ port,
+ rdns,
+ username.encode() if username else None,
+ password.encode() if password else None,
+ headers,
+ )
def __negotiatesocks5(self, destaddr, destport):
"""__negotiatesocks5(self,destaddr,destport)
Negotiates a connection through a SOCKS5 server.
"""
# First we'll send the authentication packages we support.
- if (self.__proxy[4]!=None) and (self.__proxy[5]!=None):
+ if (self.__proxy[4] != None) and (self.__proxy[5] != None):
# The username/password details were supplied to the
# setproxy method so we support the USERNAME/PASSWORD
# authentication (in addition to the standard none).
- self.sendall(struct.pack('BBBB', 0x05, 0x02, 0x00, 0x02))
+ self.sendall(struct.pack("BBBB", 0x05, 0x02, 0x00, 0x02))
else:
# No username/password were entered, therefore we
# only support connections with no authentication.
- self.sendall(struct.pack('BBB', 0x05, 0x01, 0x00))
+ self.sendall(struct.pack("BBB", 0x05, 0x01, 0x00))
# We'll receive the server's response to determine which
# method was selected
chosenauth = self.__recvall(2)
@@ -224,7 +275,13 @@ def __negotiatesocks5(self, destaddr, destport):
elif chosenauth[1:2] == chr(0x02).encode():
# Okay, we need to perform a basic username/password
# authentication.
- self.sendall(chr(0x01).encode() + chr(len(self.__proxy[4])) + self.__proxy[4] + chr(len(self.__proxy[5])) + self.__proxy[5])
+ packet = bytearray()
+ packet.append(0x01)
+ packet.append(len(self.__proxy[4]))
+ packet.extend(self.__proxy[4])
+ packet.append(len(self.__proxy[5]))
+ packet.extend(self.__proxy[5])
+ self.sendall(packet)
authstat = self.__recvall(2)
if authstat[0:1] != chr(0x01).encode():
# Bad response
@@ -243,7 +300,7 @@ def __negotiatesocks5(self, destaddr, destport):
else:
raise GeneralProxyError((1, _generalerrors[1]))
# Now we can request the actual connection
- req = struct.pack('BBB', 0x05, 0x01, 0x00)
+ req = struct.pack("BBB", 0x05, 0x01, 0x00)
# If the given destination address is an IP address, we'll
# use the IPv4 address request even if remote resolving was specified.
try:
@@ -254,7 +311,12 @@ def __negotiatesocks5(self, destaddr, destport):
if self.__proxy[3]:
# Resolve remotely
ipaddr = None
- req = req + chr(0x03).encode() + chr(len(destaddr)).encode() + destaddr.encode()
+ req = (
+ req
+ + chr(0x03).encode()
+ + chr(len(destaddr)).encode()
+ + destaddr.encode()
+ )
else:
# Resolve locally
ipaddr = socket.inet_aton(socket.gethostbyname(destaddr))
@@ -269,7 +331,7 @@ def __negotiatesocks5(self, destaddr, destport):
elif resp[1:2] != chr(0x00).encode():
# Connection failed
self.close()
- if ord(resp[1:2])<=8:
+ if ord(resp[1:2]) <= 8:
raise Socks5Error((ord(resp[1:2]), _socks5errors[ord(resp[1:2])]))
else:
raise Socks5Error((9, _socks5errors[9]))
@@ -281,7 +343,7 @@ def __negotiatesocks5(self, destaddr, destport):
boundaddr = self.__recvall(ord(resp[4:5]))
else:
self.close()
- raise GeneralProxyError((1,_generalerrors[1]))
+ raise GeneralProxyError((1, _generalerrors[1]))
boundport = struct.unpack(">H", self.__recvall(2))[0]
self.__proxysockname = (boundaddr, boundport)
if ipaddr != None:
@@ -308,7 +370,7 @@ def getpeername(self):
"""
return self.__proxypeername
- def __negotiatesocks4(self,destaddr,destport):
+ def __negotiatesocks4(self, destaddr, destport):
"""__negotiatesocks4(self,destaddr,destport)
Negotiates a connection through a SOCKS4 server.
"""
@@ -340,7 +402,7 @@ def __negotiatesocks4(self,destaddr,destport):
if resp[0:1] != chr(0x00).encode():
# Bad data
self.close()
- raise GeneralProxyError((1,_generalerrors[1]))
+ raise GeneralProxyError((1, _generalerrors[1]))
if resp[1:2] != chr(0x5A).encode():
# Server returned an error
self.close()
@@ -350,7 +412,10 @@ def __negotiatesocks4(self,destaddr,destport):
else:
raise Socks4Error((94, _socks4errors[4]))
# Get the bound address/port
- self.__proxysockname = (socket.inet_ntoa(resp[4:]), struct.unpack(">H", resp[2:4])[0])
+ self.__proxysockname = (
+ socket.inet_ntoa(resp[4:]),
+ struct.unpack(">H", resp[2:4])[0],
+ )
if rmtrslv != None:
self.__proxypeername = (socket.inet_ntoa(ipaddr), destport)
else:
@@ -365,18 +430,18 @@ def __negotiatehttp(self, destaddr, destport):
addr = socket.gethostbyname(destaddr)
else:
addr = destaddr
- headers = ["CONNECT ", addr, ":", str(destport), " HTTP/1.1\r\n"]
+ headers = ["CONNECT ", addr, ":", str(destport), " HTTP/1.1\r\n"]
wrote_host_header = False
wrote_auth_header = False
if self.__proxy[6] != None:
for key, val in self.__proxy[6].iteritems():
headers += [key, ": ", val, "\r\n"]
- wrote_host_header = (key.lower() == "host")
- wrote_auth_header = (key.lower() == "proxy-authorization")
+ wrote_host_header = key.lower() == "host"
+ wrote_auth_header = key.lower() == "proxy-authorization"
if not wrote_host_header:
headers += ["Host: ", destaddr, "\r\n"]
if not wrote_auth_header:
- if (self.__proxy[4] != None and self.__proxy[5] != None):
+ if self.__proxy[4] != None and self.__proxy[5] != None:
headers += [self.__getauthheader(), "\r\n"]
headers.append("\r\n")
self.sendall("".join(headers).encode())
@@ -409,7 +474,12 @@ def connect(self, destpair):
To select the proxy server use setproxy().
"""
# Do a minimal input check first
- if (not type(destpair) in (list,tuple)) or (len(destpair) < 2) or (not isinstance(destpair[0], (str, bytes))) or (type(destpair[1]) != int):
+ if (
+ (not type(destpair) in (list, tuple))
+ or (len(destpair) < 2)
+ or (not isinstance(destpair[0], (str, bytes)))
+ or (type(destpair[1]) != int)
+ ):
raise GeneralProxyError((5, _generalerrors[5]))
if self.__proxy[0] == PROXY_TYPE_SOCKS5:
if self.__proxy[2] != None:
@@ -423,23 +493,23 @@ def connect(self, destpair):
portnum = self.__proxy[2]
else:
portnum = 1080
- _orgsocket.connect(self,(self.__proxy[1], portnum))
+ _orgsocket.connect(self, (self.__proxy[1], portnum))
self.__negotiatesocks4(destpair[0], destpair[1])
elif self.__proxy[0] == PROXY_TYPE_HTTP:
if self.__proxy[2] != None:
portnum = self.__proxy[2]
else:
portnum = 8080
- _orgsocket.connect(self,(self.__proxy[1], portnum))
+ _orgsocket.connect(self, (self.__proxy[1], portnum))
self.__negotiatehttp(destpair[0], destpair[1])
elif self.__proxy[0] == PROXY_TYPE_HTTP_NO_TUNNEL:
if self.__proxy[2] != None:
portnum = self.__proxy[2]
else:
portnum = 8080
- _orgsocket.connect(self,(self.__proxy[1],portnum))
+ _orgsocket.connect(self, (self.__proxy[1], portnum))
if destpair[1] == 443:
- self.__negotiatehttp(destpair[0],destpair[1])
+ self.__negotiatehttp(destpair[0], destpair[1])
else:
self.__httptunnel = False
elif self.__proxy[0] == None:
diff --git a/third_party/gsutil/third_party/httplib2/python3/httplib2/test/other_cacerts.txt b/third_party/gsutil/third_party/httplib2/python3/httplib2/test/other_cacerts.txt
deleted file mode 100644
index 360954a2868..00000000000
--- a/third_party/gsutil/third_party/httplib2/python3/httplib2/test/other_cacerts.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-# Certifcate Authority certificates for validating SSL connections.
-#
-# This file contains PEM format certificates generated from
-# http://mxr.mozilla.org/seamonkey/source/security/nss/lib/ckfw/builtins/certdata.txt
-#
-# ***** BEGIN LICENSE BLOCK *****
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Original Code is the Netscape security libraries.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1994-2000
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either the GNU General Public License Version 2 or later (the "GPL"), or
-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-# in which case the provisions of the GPL or the LGPL are applicable instead
-# of those above. If you wish to allow use of your version of this file only
-# under the terms of either the GPL or the LGPL, and not to allow others to
-# use your version of this file under the terms of the MPL, indicate your
-# decision by deleting the provisions above and replace them with the notice
-# and other provisions required by the GPL or the LGPL. If you do not delete
-# the provisions above, a recipient may use your version of this file under
-# the terms of any one of the MPL, the GPL or the LGPL.
-#
-# ***** END LICENSE BLOCK *****
-
-
-Comodo CA Limited, CN=Trusted Certificate Services
-==================================================
-
------BEGIN CERTIFICATE-----
-MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb
-MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
-GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0
-aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla
-MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
-BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD
-VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW
-fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt
-TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL
-fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW
-1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7
-kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G
-A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD
-VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v
-ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo
-dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu
-Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/
-HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
-pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS
-jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+
-xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn
-dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi
------END CERTIFICATE-----
diff --git a/third_party/gsutil/third_party/httplib2/python3/httplib2test.py b/third_party/gsutil/third_party/httplib2/python3/httplib2test.py
deleted file mode 100644
index a4afae9c0fd..00000000000
--- a/third_party/gsutil/third_party/httplib2/python3/httplib2test.py
+++ /dev/null
@@ -1,1640 +0,0 @@
-#!/usr/bin/env python3
-"""
-httplib2test
-
-A set of unit tests for httplib2.py.
-
-Requires Python 3.0 or later
-"""
-
-__author__ = "Joe Gregorio (joe@bitworking.org)"
-__copyright__ = "Copyright 2006, Joe Gregorio"
-__contributors__ = ["Mark Pilgrim"]
-__license__ = "MIT"
-__history__ = """ """
-__version__ = "0.2 ($Rev: 118 $)"
-
-import base64
-import http.client
-import httplib2
-import io
-import os
-import pickle
-import socket
-import ssl
-import sys
-import time
-import unittest
-import urllib.parse
-
-# The test resources base uri
-base = 'http://bitworking.org/projects/httplib2/test/'
-#base = 'http://localhost/projects/httplib2/test/'
-cacheDirName = ".cache"
-
-
-class CredentialsTest(unittest.TestCase):
- def test(self):
- c = httplib2.Credentials()
- c.add("joe", "password")
- self.assertEqual(("joe", "password"), list(c.iter("bitworking.org"))[0])
- self.assertEqual(("joe", "password"), list(c.iter(""))[0])
- c.add("fred", "password2", "wellformedweb.org")
- self.assertEqual(("joe", "password"), list(c.iter("bitworking.org"))[0])
- self.assertEqual(1, len(list(c.iter("bitworking.org"))))
- self.assertEqual(2, len(list(c.iter("wellformedweb.org"))))
- self.assertTrue(("fred", "password2") in list(c.iter("wellformedweb.org")))
- c.clear()
- self.assertEqual(0, len(list(c.iter("bitworking.org"))))
- c.add("fred", "password2", "wellformedweb.org")
- self.assertTrue(("fred", "password2") in list(c.iter("wellformedweb.org")))
- self.assertEqual(0, len(list(c.iter("bitworking.org"))))
- self.assertEqual(0, len(list(c.iter(""))))
-
-
-class ParserTest(unittest.TestCase):
- def testFromStd66(self):
- self.assertEqual( ('http', 'example.com', '', None, None ), httplib2.parse_uri("http://example.com"))
- self.assertEqual( ('https', 'example.com', '', None, None ), httplib2.parse_uri("https://example.com"))
- self.assertEqual( ('https', 'example.com:8080', '', None, None ), httplib2.parse_uri("https://example.com:8080"))
- self.assertEqual( ('http', 'example.com', '/', None, None ), httplib2.parse_uri("http://example.com/"))
- self.assertEqual( ('http', 'example.com', '/path', None, None ), httplib2.parse_uri("http://example.com/path"))
- self.assertEqual( ('http', 'example.com', '/path', 'a=1&b=2', None ), httplib2.parse_uri("http://example.com/path?a=1&b=2"))
- self.assertEqual( ('http', 'example.com', '/path', 'a=1&b=2', 'fred' ), httplib2.parse_uri("http://example.com/path?a=1&b=2#fred"))
- self.assertEqual( ('http', 'example.com', '/path', 'a=1&b=2', 'fred' ), httplib2.parse_uri("http://example.com/path?a=1&b=2#fred"))
-
-
-class UrlNormTest(unittest.TestCase):
- def test(self):
- self.assertEqual( "http://example.org/", httplib2.urlnorm("http://example.org")[-1])
- self.assertEqual( "http://example.org/", httplib2.urlnorm("http://EXAMple.org")[-1])
- self.assertEqual( "http://example.org/?=b", httplib2.urlnorm("http://EXAMple.org?=b")[-1])
- self.assertEqual( "http://example.org/mypath?a=b", httplib2.urlnorm("http://EXAMple.org/mypath?a=b")[-1])
- self.assertEqual( "http://localhost:80/", httplib2.urlnorm("http://localhost:80")[-1])
- self.assertEqual( httplib2.urlnorm("http://localhost:80/"), httplib2.urlnorm("HTTP://LOCALHOST:80"))
- try:
- httplib2.urlnorm("/")
- self.fail("Non-absolute URIs should raise an exception")
- except httplib2.RelativeURIError:
- pass
-
-class UrlSafenameTest(unittest.TestCase):
- def test(self):
- # Test that different URIs end up generating different safe names
- self.assertEqual( "example.org,fred,a=b,58489f63a7a83c3b7794a6a398ee8b1f", httplib2.safename("http://example.org/fred/?a=b"))
- self.assertEqual( "example.org,fred,a=b,8c5946d56fec453071f43329ff0be46b", httplib2.safename("http://example.org/fred?/a=b"))
- self.assertEqual( "www.example.org,fred,a=b,499c44b8d844a011b67ea2c015116968", httplib2.safename("http://www.example.org/fred?/a=b"))
- self.assertEqual( httplib2.safename(httplib2.urlnorm("http://www")[-1]), httplib2.safename(httplib2.urlnorm("http://WWW")[-1]))
- self.assertEqual( "www.example.org,fred,a=b,692e843a333484ce0095b070497ab45d", httplib2.safename("https://www.example.org/fred?/a=b"))
- self.assertNotEqual( httplib2.safename("http://www"), httplib2.safename("https://www"))
- # Test the max length limits
- uri = "http://" + ("w" * 200) + ".org"
- uri2 = "http://" + ("w" * 201) + ".org"
- self.assertNotEqual( httplib2.safename(uri2), httplib2.safename(uri))
- # Max length should be 200 + 1 (",") + 32
- self.assertEqual(233, len(httplib2.safename(uri2)))
- self.assertEqual(233, len(httplib2.safename(uri)))
- # Unicode
- if sys.version_info >= (2,3):
- self.assertEqual( "xn--http,-4y1d.org,fred,a=b,579924c35db315e5a32e3d9963388193", httplib2.safename("http://\u2304.org/fred/?a=b"))
-
-class _MyResponse(io.BytesIO):
- def __init__(self, body, **kwargs):
- io.BytesIO.__init__(self, body)
- self.headers = kwargs
-
- def items(self):
- return self.headers.items()
-
- def iteritems(self):
- return iter(self.headers.items())
-
-
-class _MyHTTPConnection(object):
- "This class is just a mock of httplib.HTTPConnection used for testing"
-
- def __init__(self, host, port=None, key_file=None, cert_file=None,
- strict=None, timeout=None, proxy_info=None):
- self.host = host
- self.port = port
- self.timeout = timeout
- self.log = ""
- self.sock = None
-
- def set_debuglevel(self, level):
- pass
-
- def connect(self):
- "Connect to a host on a given port."
- pass
-
- def close(self):
- pass
-
- def request(self, method, request_uri, body, headers):
- pass
-
- def getresponse(self):
- return _MyResponse(b"the body", status="200")
-
-
-class _MyHTTPBadStatusConnection(object):
- "Mock of httplib.HTTPConnection that raises BadStatusLine."
-
- num_calls = 0
-
- def __init__(self, host, port=None, key_file=None, cert_file=None,
- strict=None, timeout=None, proxy_info=None):
- self.host = host
- self.port = port
- self.timeout = timeout
- self.log = ""
- self.sock = None
- _MyHTTPBadStatusConnection.num_calls = 0
-
- def set_debuglevel(self, level):
- pass
-
- def connect(self):
- pass
-
- def close(self):
- pass
-
- def request(self, method, request_uri, body, headers):
- pass
-
- def getresponse(self):
- _MyHTTPBadStatusConnection.num_calls += 1
- raise http.client.BadStatusLine("")
-
-
-class HttpTest(unittest.TestCase):
- def setUp(self):
- if os.path.exists(cacheDirName):
- [os.remove(os.path.join(cacheDirName, file)) for file in os.listdir(cacheDirName)]
- self.http = httplib2.Http(cacheDirName)
- self.http.clear_credentials()
-
- def testIPv6NoSSL(self):
- try:
- self.http.request("http://[::1]/")
- except socket.gaierror:
- self.fail("should get the address family right for IPv6")
- except socket.error:
- # Even if IPv6 isn't installed on a machine it should just raise socket.error
- pass
-
- def testIPv6SSL(self):
- try:
- self.http.request("https://[::1]/")
- except socket.gaierror:
- self.fail("should get the address family right for IPv6")
- except socket.error:
- # Even if IPv6 isn't installed on a machine it should just raise socket.error
- pass
-
- def testConnectionType(self):
- self.http.force_exception_to_status_code = False
- response, content = self.http.request("http://bitworking.org", connection_type=_MyHTTPConnection)
- self.assertEqual(response['content-location'], "http://bitworking.org")
- self.assertEqual(content, b"the body")
-
-
- def testBadStatusLineRetry(self):
- old_retries = httplib2.RETRIES
- httplib2.RETRIES = 1
- self.http.force_exception_to_status_code = False
- try:
- response, content = self.http.request("http://bitworking.org",
- connection_type=_MyHTTPBadStatusConnection)
- except http.client.BadStatusLine:
- self.assertEqual(2, _MyHTTPBadStatusConnection.num_calls)
- httplib2.RETRIES = old_retries
-
-
- def testGetUnknownServer(self):
- self.http.force_exception_to_status_code = False
- try:
- self.http.request("http://fred.bitworking.org/")
- self.fail("An httplib2.ServerNotFoundError Exception must be thrown on an unresolvable server.")
- except httplib2.ServerNotFoundError:
- pass
-
- # Now test with exceptions turned off
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request("http://fred.bitworking.org/")
- self.assertEqual(response['content-type'], 'text/plain')
- self.assertTrue(content.startswith(b"Unable to find"))
- self.assertEqual(response.status, 400)
-
- def testGetConnectionRefused(self):
- self.http.force_exception_to_status_code = False
- try:
- self.http.request("http://localhost:7777/")
- self.fail("An socket.error exception must be thrown on Connection Refused.")
- except socket.error:
- pass
-
- # Now test with exceptions turned off
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request("http://localhost:7777/")
- self.assertEqual(response['content-type'], 'text/plain')
- self.assertTrue(b"Connection refused" in content)
- self.assertEqual(response.status, 400)
-
- def testGetIRI(self):
- if sys.version_info >= (2,3):
- uri = urllib.parse.urljoin(base, "reflector/reflector.cgi?d=\N{CYRILLIC CAPITAL LETTER DJE}")
- (response, content) = self.http.request(uri, "GET")
- d = self.reflector(content)
- self.assertTrue('QUERY_STRING' in d)
- self.assertTrue(d['QUERY_STRING'].find('%D0%82') > 0)
-
- def testGetIsDefaultMethod(self):
- # Test that GET is the default method
- uri = urllib.parse.urljoin(base, "methods/method_reflector.cgi")
- (response, content) = self.http.request(uri)
- self.assertEqual(response['x-method'], "GET")
-
- def testDifferentMethods(self):
- # Test that all methods can be used
- uri = urllib.parse.urljoin(base, "methods/method_reflector.cgi")
- for method in ["GET", "PUT", "DELETE", "POST"]:
- (response, content) = self.http.request(uri, method, body=b" ")
- self.assertEqual(response['x-method'], method)
-
- def testHeadRead(self):
- # Test that we don't try to read the response of a HEAD request
- # since httplib blocks response.read() for HEAD requests.
- # Oddly enough this doesn't appear as a problem when doing HEAD requests
- # against Apache servers.
- uri = "http://www.google.com/"
- (response, content) = self.http.request(uri, "HEAD")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, b"")
-
- def testGetNoCache(self):
- # Test that can do a GET w/o the cache turned on.
- http = httplib2.Http()
- uri = urllib.parse.urljoin(base, "304/test_etag.txt")
- (response, content) = http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.previous, None)
-
- def testGetOnlyIfCachedCacheHit(self):
- # Test that can do a GET with cache and 'only-if-cached'
- uri = urllib.parse.urljoin(base, "304/test_etag.txt")
- (response, content) = self.http.request(uri, "GET")
- (response, content) = self.http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
- self.assertEqual(response.fromcache, True)
- self.assertEqual(response.status, 200)
-
- def testGetOnlyIfCachedCacheMiss(self):
- # Test that can do a GET with no cache with 'only-if-cached'
- uri = urllib.parse.urljoin(base, "304/test_etag.txt")
- (response, content) = self.http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
- self.assertEqual(response.fromcache, False)
- self.assertEqual(response.status, 504)
-
- def testGetOnlyIfCachedNoCacheAtAll(self):
- # Test that can do a GET with no cache with 'only-if-cached'
- # Of course, there might be an intermediary beyond us
- # that responds to the 'only-if-cached', so this
- # test can't really be guaranteed to pass.
- http = httplib2.Http()
- uri = urllib.parse.urljoin(base, "304/test_etag.txt")
- (response, content) = http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
- self.assertEqual(response.fromcache, False)
- self.assertEqual(response.status, 504)
-
- def testUserAgent(self):
- # Test that we provide a default user-agent
- uri = urllib.parse.urljoin(base, "user-agent/test.cgi")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertTrue(content.startswith(b"Python-httplib2/"))
-
- def testUserAgentNonDefault(self):
- # Test that the default user-agent can be over-ridden
-
- uri = urllib.parse.urljoin(base, "user-agent/test.cgi")
- (response, content) = self.http.request(uri, "GET", headers={'User-Agent': 'fred/1.0'})
- self.assertEqual(response.status, 200)
- self.assertTrue(content.startswith(b"fred/1.0"))
-
- def testGet300WithLocation(self):
- # Test the we automatically follow 300 redirects if a Location: header is provided
- uri = urllib.parse.urljoin(base, "300/with-location-header.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, b"This is the final destination.\n")
- self.assertEqual(response.previous.status, 300)
- self.assertEqual(response.previous.fromcache, False)
-
- # Confirm that the intermediate 300 is not cached
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, b"This is the final destination.\n")
- self.assertEqual(response.previous.status, 300)
- self.assertEqual(response.previous.fromcache, False)
-
- def testGet300WithLocationNoRedirect(self):
- # Test the we automatically follow 300 redirects if a Location: header is provided
- self.http.follow_redirects = False
- uri = urllib.parse.urljoin(base, "300/with-location-header.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 300)
-
- def testGet300WithoutLocation(self):
- # Not giving a Location: header in a 300 response is acceptable
- # In which case we just return the 300 response
- uri = urllib.parse.urljoin(base, "300/without-location-header.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 300)
- self.assertTrue(response['content-type'].startswith("text/html"))
- self.assertEqual(response.previous, None)
-
- def testGet301(self):
- # Test that we automatically follow 301 redirects
- # and that we cache the 301 response
- uri = urllib.parse.urljoin(base, "301/onestep.asis")
- destination = urllib.parse.urljoin(base, "302/final-destination.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertTrue('content-location' in response)
- self.assertEqual(response['content-location'], destination)
- self.assertEqual(content, b"This is the final destination.\n")
- self.assertEqual(response.previous.status, 301)
- self.assertEqual(response.previous.fromcache, False)
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response['content-location'], destination)
- self.assertEqual(content, b"This is the final destination.\n")
- self.assertEqual(response.previous.status, 301)
- self.assertEqual(response.previous.fromcache, True)
-
- def testHead301(self):
- # Test that we automatically follow 301 redirects
- uri = urllib.parse.urljoin(base, "301/onestep.asis")
- (response, content) = self.http.request(uri, "HEAD")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.previous.status, 301)
- self.assertEqual(response.previous.fromcache, False)
-
- def testGet301NoRedirect(self):
- # Test that we automatically follow 301 redirects
- # and that we cache the 301 response
- self.http.follow_redirects = False
- uri = urllib.parse.urljoin(base, "301/onestep.asis")
- destination = urllib.parse.urljoin(base, "302/final-destination.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 301)
-
-
- def testGet302(self):
- # Test that we automatically follow 302 redirects
- # and that we DO NOT cache the 302 response
- uri = urllib.parse.urljoin(base, "302/onestep.asis")
- destination = urllib.parse.urljoin(base, "302/final-destination.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response['content-location'], destination)
- self.assertEqual(content, b"This is the final destination.\n")
- self.assertEqual(response.previous.status, 302)
- self.assertEqual(response.previous.fromcache, False)
-
- uri = urllib.parse.urljoin(base, "302/onestep.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- self.assertEqual(response['content-location'], destination)
- self.assertEqual(content, b"This is the final destination.\n")
- self.assertEqual(response.previous.status, 302)
- self.assertEqual(response.previous.fromcache, False)
- self.assertEqual(response.previous['content-location'], uri)
-
- uri = urllib.parse.urljoin(base, "302/twostep.asis")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- self.assertEqual(content, b"This is the final destination.\n")
- self.assertEqual(response.previous.status, 302)
- self.assertEqual(response.previous.fromcache, False)
-
- def testGet302RedirectionLimit(self):
- # Test that we can set a lower redirection limit
- # and that we raise an exception when we exceed
- # that limit.
- self.http.force_exception_to_status_code = False
-
- uri = urllib.parse.urljoin(base, "302/twostep.asis")
- try:
- (response, content) = self.http.request(uri, "GET", redirections = 1)
- self.fail("This should not happen")
- except httplib2.RedirectLimit:
- pass
- except Exception as e:
- self.fail("Threw wrong kind of exception ")
-
- # Re-run the test with out the exceptions
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request(uri, "GET", redirections = 1)
- self.assertEqual(response.status, 500)
- self.assertTrue(response.reason.startswith("Redirected more"))
- self.assertEqual("302", response['status'])
- self.assertTrue(content.startswith(b""))
- self.assertTrue(response.previous != None)
-
- def testGet302NoLocation(self):
- # Test that we throw an exception when we get
- # a 302 with no Location: header.
- self.http.force_exception_to_status_code = False
- uri = urllib.parse.urljoin(base, "302/no-location.asis")
- try:
- (response, content) = self.http.request(uri, "GET")
- self.fail("Should never reach here")
- except httplib2.RedirectMissingLocation:
- pass
- except Exception as e:
- self.fail("Threw wrong kind of exception ")
-
- # Re-run the test with out the exceptions
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 500)
- self.assertTrue(response.reason.startswith("Redirected but"))
- self.assertEqual("302", response['status'])
- self.assertTrue(content.startswith(b"This is content"))
-
- def testGet301ViaHttps(self):
- # Google always redirects to http://google.com
- (response, content) = self.http.request("https://code.google.com/apis/", "GET")
- self.assertEqual(200, response.status)
- self.assertEqual(301, response.previous.status)
-
- def testGetViaHttps(self):
- # Test that we can handle HTTPS
- (response, content) = self.http.request("https://google.com/adsense/", "GET")
- self.assertEqual(200, response.status)
-
- def testGetViaHttpsSpecViolationOnLocation(self):
- # Test that we follow redirects through HTTPS
- # even if they violate the spec by including
- # a relative Location: header instead of an
- # absolute one.
- (response, content) = self.http.request("https://google.com/adsense", "GET")
- self.assertEqual(200, response.status)
- self.assertNotEqual(None, response.previous)
-
-
- def testGetViaHttpsKeyCert(self):
- # At this point I can only test
- # that the key and cert files are passed in
- # correctly to httplib. It would be nice to have
- # a real https endpoint to test against.
- http = httplib2.Http(timeout=2)
-
- http.add_certificate("akeyfile", "acertfile", "bitworking.org")
- try:
- (response, content) = http.request("https://bitworking.org", "GET")
- except AttributeError:
- self.assertEqual(http.connections["https:bitworking.org"].key_file, "akeyfile")
- self.assertEqual(http.connections["https:bitworking.org"].cert_file, "acertfile")
- except IOError:
- # Skip on 3.2
- pass
-
- try:
- (response, content) = http.request("https://notthere.bitworking.org", "GET")
- except httplib2.ServerNotFoundError:
- self.assertEqual(http.connections["https:notthere.bitworking.org"].key_file, None)
- self.assertEqual(http.connections["https:notthere.bitworking.org"].cert_file, None)
- except IOError:
- # Skip on 3.2
- pass
-
- def testSslCertValidation(self):
- # Test that we get an ssl.SSLError when specifying a non-existent CA
- # certs file.
- http = httplib2.Http(ca_certs='/nosuchfile')
- self.assertRaises(IOError,
- http.request, "https://www.google.com/", "GET")
-
- # Test that we get a SSLHandshakeError if we try to access
- # https://www.google.com, using a CA cert file that doesn't contain
- # the CA Google uses (i.e., simulating a cert that's not signed by a
- # trusted CA).
- other_ca_certs = os.path.join(
- os.path.dirname(os.path.abspath(httplib2.__file__ )),
- "test", "other_cacerts.txt")
- http = httplib2.Http(ca_certs=other_ca_certs)
- self.assertRaises(ssl.SSLError,
- http.request,"https://www.google.com/", "GET")
-
- def testSniHostnameValidation(self):
- self.http.request("https://google.com/", method="GET")
-
- def testGet303(self):
- # Do a follow-up GET on a Location: header
- # returned from a POST that gave a 303.
- uri = urllib.parse.urljoin(base, "303/303.cgi")
- (response, content) = self.http.request(uri, "POST", " ")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, b"This is the final destination.\n")
- self.assertEqual(response.previous.status, 303)
-
- def testGet303NoRedirect(self):
- # Do a follow-up GET on a Location: header
- # returned from a POST that gave a 303.
- self.http.follow_redirects = False
- uri = urllib.parse.urljoin(base, "303/303.cgi")
- (response, content) = self.http.request(uri, "POST", " ")
- self.assertEqual(response.status, 303)
-
- def test303ForDifferentMethods(self):
- # Test that all methods can be used
- uri = urllib.parse.urljoin(base, "303/redirect-to-reflector.cgi")
- for (method, method_on_303) in [("PUT", "GET"), ("DELETE", "GET"), ("POST", "GET"), ("GET", "GET"), ("HEAD", "GET")]:
- (response, content) = self.http.request(uri, method, body=b" ")
- self.assertEqual(response['x-method'], method_on_303)
-
- def testGet304(self):
- # Test that we use ETags properly to validate our cache
- uri = urllib.parse.urljoin(base, "304/test_etag.txt")
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity'})
- self.assertNotEqual(response['etag'], "")
-
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity'})
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'cache-control': 'must-revalidate'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
-
- cache_file_name = os.path.join(cacheDirName, httplib2.safename(httplib2.urlnorm(uri)[-1]))
- f = open(cache_file_name, "r")
- status_line = f.readline()
- f.close()
-
- self.assertTrue(status_line.startswith("status:"))
-
- (response, content) = self.http.request(uri, "HEAD", headers = {'accept-encoding': 'identity'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
-
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'range': 'bytes=0-0'})
- self.assertEqual(response.status, 206)
- self.assertEqual(response.fromcache, False)
-
- def testGetIgnoreEtag(self):
- # Test that we can forcibly ignore ETags
- uri = urllib.parse.urljoin(base, "reflector/reflector.cgi")
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity'})
- self.assertNotEqual(response['etag'], "")
-
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'cache-control': 'max-age=0'})
- d = self.reflector(content)
- self.assertTrue('HTTP_IF_NONE_MATCH' in d)
-
- self.http.ignore_etag = True
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'cache-control': 'max-age=0'})
- d = self.reflector(content)
- self.assertEqual(response.fromcache, False)
- self.assertFalse('HTTP_IF_NONE_MATCH' in d)
-
- def testOverrideEtag(self):
- # Test that we can forcibly ignore ETags
- uri = urllib.parse.urljoin(base, "reflector/reflector.cgi")
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity'})
- self.assertNotEqual(response['etag'], "")
-
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'cache-control': 'max-age=0'})
- d = self.reflector(content)
- self.assertTrue('HTTP_IF_NONE_MATCH' in d)
- self.assertNotEqual(d['HTTP_IF_NONE_MATCH'], "fred")
-
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'cache-control': 'max-age=0', 'if-none-match': 'fred'})
- d = self.reflector(content)
- self.assertTrue('HTTP_IF_NONE_MATCH' in d)
- self.assertEqual(d['HTTP_IF_NONE_MATCH'], "fred")
-
-#MAP-commented this out because it consistently fails
-# def testGet304EndToEnd(self):
-# # Test that end to end headers get overwritten in the cache
-# uri = urllib.parse.urljoin(base, "304/end2end.cgi")
-# (response, content) = self.http.request(uri, "GET")
-# self.assertNotEqual(response['etag'], "")
-# old_date = response['date']
-# time.sleep(2)
-#
-# (response, content) = self.http.request(uri, "GET", headers = {'Cache-Control': 'max-age=0'})
-# # The response should be from the cache, but the Date: header should be updated.
-# new_date = response['date']
-# self.assertNotEqual(new_date, old_date)
-# self.assertEqual(response.status, 200)
-# self.assertEqual(response.fromcache, True)
-
- def testGet304LastModified(self):
- # Test that we can still handle a 304
- # by only using the last-modified cache validator.
- uri = urllib.parse.urljoin(base, "304/last-modified-only/last-modified-only.txt")
- (response, content) = self.http.request(uri, "GET")
-
- self.assertNotEqual(response['last-modified'], "")
- (response, content) = self.http.request(uri, "GET")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
-
- def testGet307(self):
- # Test that we do follow 307 redirects but
- # do not cache the 307
- uri = urllib.parse.urljoin(base, "307/onestep.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, b"This is the final destination.\n")
- self.assertEqual(response.previous.status, 307)
- self.assertEqual(response.previous.fromcache, False)
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- self.assertEqual(content, b"This is the final destination.\n")
- self.assertEqual(response.previous.status, 307)
- self.assertEqual(response.previous.fromcache, False)
-
- def testGet410(self):
- # Test that we pass 410's through
- uri = urllib.parse.urljoin(base, "410/410.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 410)
-
- def testVaryHeaderSimple(self):
- """
- RFC 2616 13.6
- When the cache receives a subsequent request whose Request-URI
- specifies one or more cache entries including a Vary header field,
- the cache MUST NOT use such a cache entry to construct a response
- to the new request unless all of the selecting request-headers
- present in the new request match the corresponding stored
- request-headers in the original request.
- """
- # test that the vary header is sent
- uri = urllib.parse.urljoin(base, "vary/accept.asis")
- (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/plain'})
- self.assertEqual(response.status, 200)
- self.assertTrue('vary' in response)
-
- # get the resource again, from the cache since accept header in this
- # request is the same as the request
- (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/plain'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True, msg="Should be from cache")
-
- # get the resource again, not from cache since Accept headers does not match
- (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/html'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False, msg="Should not be from cache")
-
- # get the resource again, without any Accept header, so again no match
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False, msg="Should not be from cache")
-
- def testNoVary(self):
- pass
- # when there is no vary, a different Accept header (e.g.) should not
- # impact if the cache is used
- # test that the vary header is not sent
- # uri = urllib.parse.urljoin(base, "vary/no-vary.asis")
- # (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/plain'})
- # self.assertEqual(response.status, 200)
- # self.assertFalse('vary' in response)
- #
- # (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/plain'})
- # self.assertEqual(response.status, 200)
- # self.assertEqual(response.fromcache, True, msg="Should be from cache")
- #
- # (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/html'})
- # self.assertEqual(response.status, 200)
- # self.assertEqual(response.fromcache, True, msg="Should be from cache")
-
- def testVaryHeaderDouble(self):
- uri = urllib.parse.urljoin(base, "vary/accept-double.asis")
- (response, content) = self.http.request(uri, "GET", headers={
- 'Accept': 'text/plain', 'Accept-Language': 'da, en-gb;q=0.8, en;q=0.7'})
- self.assertEqual(response.status, 200)
- self.assertTrue('vary' in response)
-
- # we are from cache
- (response, content) = self.http.request(uri, "GET", headers={
- 'Accept': 'text/plain', 'Accept-Language': 'da, en-gb;q=0.8, en;q=0.7'})
- self.assertEqual(response.fromcache, True, msg="Should be from cache")
-
- (response, content) = self.http.request(uri, "GET", headers={'Accept': 'text/plain'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- # get the resource again, not from cache, varied headers don't match exact
- (response, content) = self.http.request(uri, "GET", headers={'Accept-Language': 'da'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False, msg="Should not be from cache")
-
- def testVaryUnusedHeader(self):
- # A header's value is not considered to vary if it's not used at all.
- uri = urllib.parse.urljoin(base, "vary/unused-header.asis")
- (response, content) = self.http.request(uri, "GET", headers={
- 'Accept': 'text/plain'})
- self.assertEqual(response.status, 200)
- self.assertTrue('vary' in response)
-
- # we are from cache
- (response, content) = self.http.request(uri, "GET", headers={
- 'Accept': 'text/plain',})
- self.assertEqual(response.fromcache, True, msg="Should be from cache")
-
- def testHeadGZip(self):
- # Test that we don't try to decompress a HEAD response
- uri = urllib.parse.urljoin(base, "gzip/final-destination.txt")
- (response, content) = self.http.request(uri, "HEAD")
- self.assertEqual(response.status, 200)
- self.assertNotEqual(int(response['content-length']), 0)
- self.assertEqual(content, b"")
-
- def testGetGZip(self):
- # Test that we support gzip compression
- uri = urllib.parse.urljoin(base, "gzip/final-destination.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertFalse('content-encoding' in response)
- self.assertTrue('-content-encoding' in response)
- self.assertEqual(int(response['content-length']), len(b"This is the final destination.\n"))
- self.assertEqual(content, b"This is the final destination.\n")
-
- def testPostAndGZipResponse(self):
- uri = urllib.parse.urljoin(base, "gzip/post.cgi")
- (response, content) = self.http.request(uri, "POST", body=" ")
- self.assertEqual(response.status, 200)
- self.assertFalse('content-encoding' in response)
- self.assertTrue('-content-encoding' in response)
-
- def testGetGZipFailure(self):
- # Test that we raise a good exception when the gzip fails
- self.http.force_exception_to_status_code = False
- uri = urllib.parse.urljoin(base, "gzip/failed-compression.asis")
- try:
- (response, content) = self.http.request(uri, "GET")
- self.fail("Should never reach here")
- except httplib2.FailedToDecompressContent:
- pass
- except Exception:
- self.fail("Threw wrong kind of exception")
-
- # Re-run the test with out the exceptions
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 500)
- self.assertTrue(response.reason.startswith("Content purported"))
-
- def testIndividualTimeout(self):
- uri = urllib.parse.urljoin(base, "timeout/timeout.cgi")
- http = httplib2.Http(timeout=1)
- http.force_exception_to_status_code = True
-
- (response, content) = http.request(uri)
- self.assertEqual(response.status, 408)
- self.assertTrue(response.reason.startswith("Request Timeout"))
- self.assertTrue(content.startswith(b"Request Timeout"))
-
-
- def testGetDeflate(self):
- # Test that we support deflate compression
- uri = urllib.parse.urljoin(base, "deflate/deflated.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertFalse('content-encoding' in response)
- self.assertEqual(int(response['content-length']), len("This is the final destination."))
- self.assertEqual(content, b"This is the final destination.")
-
- def testGetDeflateFailure(self):
- # Test that we raise a good exception when the deflate fails
- self.http.force_exception_to_status_code = False
-
- uri = urllib.parse.urljoin(base, "deflate/failed-compression.asis")
- try:
- (response, content) = self.http.request(uri, "GET")
- self.fail("Should never reach here")
- except httplib2.FailedToDecompressContent:
- pass
- except Exception:
- self.fail("Threw wrong kind of exception")
-
- # Re-run the test with out the exceptions
- self.http.force_exception_to_status_code = True
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 500)
- self.assertTrue(response.reason.startswith("Content purported"))
-
- def testGetDuplicateHeaders(self):
- # Test that duplicate headers get concatenated via ','
- uri = urllib.parse.urljoin(base, "duplicate-headers/multilink.asis")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(content, b"This is content\n")
- self.assertEqual(response['link'].split(",")[0], '; rel="home"; title="BitWorking"')
-
- def testGetCacheControlNoCache(self):
- # Test Cache-Control: no-cache on requests
- uri = urllib.parse.urljoin(base, "304/test_etag.txt")
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity'})
- self.assertNotEqual(response['etag'], "")
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
-
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'Cache-Control': 'no-cache'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- def testGetCacheControlPragmaNoCache(self):
- # Test Pragma: no-cache on requests
- uri = urllib.parse.urljoin(base, "304/test_etag.txt")
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity'})
- self.assertNotEqual(response['etag'], "")
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
-
- (response, content) = self.http.request(uri, "GET", headers = {'accept-encoding': 'identity', 'Pragma': 'no-cache'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- def testGetCacheControlNoStoreRequest(self):
- # A no-store request means that the response should not be stored.
- uri = urllib.parse.urljoin(base, "304/test_etag.txt")
-
- (response, content) = self.http.request(uri, "GET", headers={'Cache-Control': 'no-store'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- (response, content) = self.http.request(uri, "GET", headers={'Cache-Control': 'no-store'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- def testGetCacheControlNoStoreResponse(self):
- # A no-store response means that the response should not be stored.
- uri = urllib.parse.urljoin(base, "no-store/no-store.asis")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- def testGetCacheControlNoCacheNoStoreRequest(self):
- # Test that a no-store, no-cache clears the entry from the cache
- # even if it was cached previously.
- uri = urllib.parse.urljoin(base, "304/test_etag.txt")
-
- (response, content) = self.http.request(uri, "GET")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.fromcache, True)
- (response, content) = self.http.request(uri, "GET", headers={'Cache-Control': 'no-store, no-cache'})
- (response, content) = self.http.request(uri, "GET", headers={'Cache-Control': 'no-store, no-cache'})
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
-
- def testUpdateInvalidatesCache(self):
- # Test that calling PUT or DELETE on a
- # URI that is cache invalidates that cache.
- uri = urllib.parse.urljoin(base, "304/test_etag.txt")
-
- (response, content) = self.http.request(uri, "GET")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.fromcache, True)
- (response, content) = self.http.request(uri, "DELETE")
- self.assertEqual(response.status, 405)
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.fromcache, False)
-
- def testUpdateUsesCachedETag(self):
- # Test that we natively support http://www.w3.org/1999/04/Editing/
- uri = urllib.parse.urljoin(base, "conditional-updates/test.cgi")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- (response, content) = self.http.request(uri, "PUT", body="foo")
- self.assertEqual(response.status, 200)
- (response, content) = self.http.request(uri, "PUT", body="foo")
- self.assertEqual(response.status, 412)
-
-
- def testUpdatePatchUsesCachedETag(self):
- # Test that we natively support http://www.w3.org/1999/04/Editing/
- uri = urllib.parse.urljoin(base, "conditional-updates/test.cgi")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- (response, content) = self.http.request(uri, "PATCH", body="foo")
- self.assertEqual(response.status, 200)
- (response, content) = self.http.request(uri, "PATCH", body="foo")
- self.assertEqual(response.status, 412)
-
- def testUpdateUsesCachedETagAndOCMethod(self):
- # Test that we natively support http://www.w3.org/1999/04/Editing/
- uri = urllib.parse.urljoin(base, "conditional-updates/test.cgi")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- self.http.optimistic_concurrency_methods.append("DELETE")
- (response, content) = self.http.request(uri, "DELETE")
- self.assertEqual(response.status, 200)
-
-
- def testUpdateUsesCachedETagOverridden(self):
- # Test that we natively support http://www.w3.org/1999/04/Editing/
- uri = urllib.parse.urljoin(base, "conditional-updates/test.cgi")
-
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, False)
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
- self.assertEqual(response.fromcache, True)
- (response, content) = self.http.request(uri, "PUT", body="foo", headers={'if-match': 'fred'})
- self.assertEqual(response.status, 412)
-
- def testBasicAuth(self):
- # Test Basic Authentication
- uri = urllib.parse.urljoin(base, "basic/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- uri = urllib.parse.urljoin(base, "basic/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- self.http.add_credentials('joe', 'password')
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urllib.parse.urljoin(base, "basic/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- def testBasicAuthWithDomain(self):
- # Test Basic Authentication
- uri = urllib.parse.urljoin(base, "basic/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- uri = urllib.parse.urljoin(base, "basic/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- self.http.add_credentials('joe', 'password', "example.org")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- uri = urllib.parse.urljoin(base, "basic/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- domain = urllib.parse.urlparse(base)[1]
- self.http.add_credentials('joe', 'password', domain)
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urllib.parse.urljoin(base, "basic/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
-
-
-
-
-
- def testBasicAuthTwoDifferentCredentials(self):
- # Test Basic Authentication with multiple sets of credentials
- uri = urllib.parse.urljoin(base, "basic2/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- uri = urllib.parse.urljoin(base, "basic2/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- self.http.add_credentials('fred', 'barney')
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urllib.parse.urljoin(base, "basic2/file.txt")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- def testBasicAuthNested(self):
- # Test Basic Authentication with resources
- # that are nested
- uri = urllib.parse.urljoin(base, "basic-nested/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- uri = urllib.parse.urljoin(base, "basic-nested/subdir")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- # Now add in credentials one at a time and test.
- self.http.add_credentials('joe', 'password')
-
- uri = urllib.parse.urljoin(base, "basic-nested/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urllib.parse.urljoin(base, "basic-nested/subdir")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- self.http.add_credentials('fred', 'barney')
-
- uri = urllib.parse.urljoin(base, "basic-nested/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urllib.parse.urljoin(base, "basic-nested/subdir")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- def testDigestAuth(self):
- # Test that we support Digest Authentication
- uri = urllib.parse.urljoin(base, "digest/")
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 401)
-
- self.http.add_credentials('joe', 'password')
- (response, content) = self.http.request(uri, "GET")
- self.assertEqual(response.status, 200)
-
- uri = urllib.parse.urljoin(base, "digest/file.txt")
- (response, content) = self.http.request(uri, "GET")
-
- def testDigestAuthNextNonceAndNC(self):
- # Test that if the server sets nextnonce that we reset
- # the nonce count back to 1
- uri = urllib.parse.urljoin(base, "digest/file.txt")
- self.http.add_credentials('joe', 'password')
- (response, content) = self.http.request(uri, "GET", headers = {"cache-control":"no-cache"})
- info = httplib2._parse_www_authenticate(response, 'authentication-info')
- self.assertEqual(response.status, 200)
- (response, content) = self.http.request(uri, "GET", headers = {"cache-control":"no-cache"})
- info2 = httplib2._parse_www_authenticate(response, 'authentication-info')
- self.assertEqual(response.status, 200)
-
- if 'nextnonce' in info:
- self.assertEqual(info2['nc'], 1)
-
- def testDigestAuthStale(self):
- # Test that we can handle a nonce becoming stale
- uri = urllib.parse.urljoin(base, "digest-expire/file.txt")
- self.http.add_credentials('joe', 'password')
- (response, content) = self.http.request(uri, "GET", headers = {"cache-control":"no-cache"})
- info = httplib2._parse_www_authenticate(response, 'authentication-info')
- self.assertEqual(response.status, 200)
-
- time.sleep(3)
- # Sleep long enough that the nonce becomes stale
-
- (response, content) = self.http.request(uri, "GET", headers = {"cache-control":"no-cache"})
- self.assertFalse(response.fromcache)
- self.assertTrue(response._stale_digest)
- info3 = httplib2._parse_www_authenticate(response, 'authentication-info')
- self.assertEqual(response.status, 200)
-
- def reflector(self, content):
- return dict( [tuple(x.split("=", 1)) for x in content.decode('utf-8').strip().split("\n")] )
-
- def testReflector(self):
- uri = urllib.parse.urljoin(base, "reflector/reflector.cgi")
- (response, content) = self.http.request(uri, "GET")
- d = self.reflector(content)
- self.assertTrue('HTTP_USER_AGENT' in d)
-
-
- def testConnectionClose(self):
- uri = "http://www.google.com/"
- (response, content) = self.http.request(uri, "GET")
- for c in self.http.connections.values():
- self.assertNotEqual(None, c.sock)
- (response, content) = self.http.request(uri, "GET", headers={"connection": "close"})
- for c in self.http.connections.values():
- self.assertEqual(None, c.sock)
-
- def testPickleHttp(self):
- pickled_http = pickle.dumps(self.http)
- new_http = pickle.loads(pickled_http)
-
- self.assertEqual(sorted(new_http.__dict__.keys()),
- sorted(self.http.__dict__.keys()))
- for key in new_http.__dict__:
- if key in ('certificates', 'credentials'):
- self.assertEqual(new_http.__dict__[key].credentials,
- self.http.__dict__[key].credentials)
- elif key == 'cache':
- self.assertEqual(new_http.__dict__[key].cache,
- self.http.__dict__[key].cache)
- else:
- self.assertEqual(new_http.__dict__[key],
- self.http.__dict__[key])
-
- def testPickleHttpWithConnection(self):
- self.http.request('http://bitworking.org',
- connection_type=_MyHTTPConnection)
- pickled_http = pickle.dumps(self.http)
- new_http = pickle.loads(pickled_http)
-
- self.assertEqual(list(self.http.connections.keys()),
- ['http:bitworking.org'])
- self.assertEqual(new_http.connections, {})
-
- def testPickleCustomRequestHttp(self):
- def dummy_request(*args, **kwargs):
- return new_request(*args, **kwargs)
- dummy_request.dummy_attr = 'dummy_value'
-
- self.http.request = dummy_request
- pickled_http = pickle.dumps(self.http)
- self.assertFalse(b"S'request'" in pickled_http)
-
-try:
- import memcache
- class HttpTestMemCached(HttpTest):
- def setUp(self):
- self.cache = memcache.Client(['127.0.0.1:11211'], debug=0)
- #self.cache = memcache.Client(['10.0.0.4:11211'], debug=1)
- self.http = httplib2.Http(self.cache)
- self.cache.flush_all()
- # Not exactly sure why the sleep is needed here, but
- # if not present then some unit tests that rely on caching
- # fail. Memcached seems to lose some sets immediately
- # after a flush_all if the set is to a value that
- # was previously cached. (Maybe the flush is handled async?)
- time.sleep(1)
- self.http.clear_credentials()
-except:
- pass
-
-
-
-# ------------------------------------------------------------------------
-
-class HttpPrivateTest(unittest.TestCase):
-
- def testParseCacheControl(self):
- # Test that we can parse the Cache-Control header
- self.assertEqual({}, httplib2._parse_cache_control({}))
- self.assertEqual({'no-cache': 1}, httplib2._parse_cache_control({'cache-control': ' no-cache'}))
- cc = httplib2._parse_cache_control({'cache-control': ' no-cache, max-age = 7200'})
- self.assertEqual(cc['no-cache'], 1)
- self.assertEqual(cc['max-age'], '7200')
- cc = httplib2._parse_cache_control({'cache-control': ' , '})
- self.assertEqual(cc[''], 1)
-
- try:
- cc = httplib2._parse_cache_control({'cache-control': 'Max-age=3600;post-check=1800,pre-check=3600'})
- self.assertTrue("max-age" in cc)
- except:
- self.fail("Should not throw exception")
-
-
-
-
- def testNormalizeHeaders(self):
- # Test that we normalize headers to lowercase
- h = httplib2._normalize_headers({'Cache-Control': 'no-cache', 'Other': 'Stuff'})
- self.assertTrue('cache-control' in h)
- self.assertTrue('other' in h)
- self.assertEqual('Stuff', h['other'])
-
- def testConvertByteStr(self):
- with self.assertRaises(TypeError):
- httplib2._convert_byte_str(4)
- self.assertEqual('Hello World', httplib2._convert_byte_str(b'Hello World'))
- self.assertEqual('Bye World', httplib2._convert_byte_str('Bye World'))
-
- def testExpirationModelTransparent(self):
- # Test that no-cache makes our request TRANSPARENT
- response_headers = {
- 'cache-control': 'max-age=7200'
- }
- request_headers = {
- 'cache-control': 'no-cache'
- }
- self.assertEqual("TRANSPARENT", httplib2._entry_disposition(response_headers, request_headers))
-
- def testMaxAgeNonNumeric(self):
- # Test that no-cache makes our request TRANSPARENT
- response_headers = {
- 'cache-control': 'max-age=fred, min-fresh=barney'
- }
- request_headers = {
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
-
- def testExpirationModelNoCacheResponse(self):
- # The date and expires point to an entry that should be
- # FRESH, but the no-cache over-rides that.
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'expires': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now+4)),
- 'cache-control': 'no-cache'
- }
- request_headers = {
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelStaleRequestMustReval(self):
- # must-revalidate forces STALE
- self.assertEqual("STALE", httplib2._entry_disposition({}, {'cache-control': 'must-revalidate'}))
-
- def testExpirationModelStaleResponseMustReval(self):
- # must-revalidate forces STALE
- self.assertEqual("STALE", httplib2._entry_disposition({'cache-control': 'must-revalidate'}, {}))
-
- def testExpirationModelFresh(self):
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()),
- 'cache-control': 'max-age=2'
- }
- request_headers = {
- }
- self.assertEqual("FRESH", httplib2._entry_disposition(response_headers, request_headers))
- time.sleep(3)
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationMaxAge0(self):
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()),
- 'cache-control': 'max-age=0'
- }
- request_headers = {
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelDateAndExpires(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'expires': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now+2)),
- }
- request_headers = {
- }
- self.assertEqual("FRESH", httplib2._entry_disposition(response_headers, request_headers))
- time.sleep(3)
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpiresZero(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'expires': "0",
- }
- request_headers = {
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelDateOnly(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now+3)),
- }
- request_headers = {
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelOnlyIfCached(self):
- response_headers = {
- }
- request_headers = {
- 'cache-control': 'only-if-cached',
- }
- self.assertEqual("FRESH", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelMaxAgeBoth(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'cache-control': 'max-age=2'
- }
- request_headers = {
- 'cache-control': 'max-age=0'
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelDateAndExpiresMinFresh1(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'expires': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now+2)),
- }
- request_headers = {
- 'cache-control': 'min-fresh=2'
- }
- self.assertEqual("STALE", httplib2._entry_disposition(response_headers, request_headers))
-
- def testExpirationModelDateAndExpiresMinFresh2(self):
- now = time.time()
- response_headers = {
- 'date': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)),
- 'expires': time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now+4)),
- }
- request_headers = {
- 'cache-control': 'min-fresh=2'
- }
- self.assertEqual("FRESH", httplib2._entry_disposition(response_headers, request_headers))
-
- def testParseWWWAuthenticateEmpty(self):
- res = httplib2._parse_www_authenticate({})
- self.assertEqual(len(list(res.keys())), 0)
-
- def testParseWWWAuthenticate(self):
- # different uses of spaces around commas
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Test realm="test realm" , foo=foo ,bar="bar", baz=baz,qux=qux'})
- self.assertEqual(len(list(res.keys())), 1)
- self.assertEqual(len(list(res['test'].keys())), 5)
-
- # tokens with non-alphanum
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'T*!%#st realm=to*!%#en, to*!%#en="quoted string"'})
- self.assertEqual(len(list(res.keys())), 1)
- self.assertEqual(len(list(res['t*!%#st'].keys())), 2)
-
- # quoted string with quoted pairs
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Test realm="a \\"test\\" realm"'})
- self.assertEqual(len(list(res.keys())), 1)
- self.assertEqual(res['test']['realm'], 'a "test" realm')
-
- def testParseWWWAuthenticateStrict(self):
- httplib2.USE_WWW_AUTH_STRICT_PARSING = 1;
- self.testParseWWWAuthenticate();
- httplib2.USE_WWW_AUTH_STRICT_PARSING = 0;
-
- def testParseWWWAuthenticateBasic(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Basic realm="me"'})
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
-
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Basic realm="me", algorithm="MD5"'})
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
- self.assertEqual('MD5', basic['algorithm'])
-
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Basic realm="me", algorithm=MD5'})
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
- self.assertEqual('MD5', basic['algorithm'])
-
- def testParseWWWAuthenticateBasic2(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Basic realm="me",other="fred" '})
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
- self.assertEqual('fred', basic['other'])
-
- def testParseWWWAuthenticateBasic3(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate': 'Basic REAlm="me" '})
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
-
-
- def testParseWWWAuthenticateDigest(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate':
- 'Digest realm="testrealm@host.com", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41"'})
- digest = res['digest']
- self.assertEqual('testrealm@host.com', digest['realm'])
- self.assertEqual('auth,auth-int', digest['qop'])
-
-
- def testParseWWWAuthenticateMultiple(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate':
- 'Digest realm="testrealm@host.com", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41" Basic REAlm="me" '})
- digest = res['digest']
- self.assertEqual('testrealm@host.com', digest['realm'])
- self.assertEqual('auth,auth-int', digest['qop'])
- self.assertEqual('dcd98b7102dd2f0e8b11d0f600bfb0c093', digest['nonce'])
- self.assertEqual('5ccc069c403ebaf9f0171e9517f40e41', digest['opaque'])
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
-
- def testParseWWWAuthenticateMultiple2(self):
- # Handle an added comma between challenges, which might get thrown in if the challenges were
- # originally sent in separate www-authenticate headers.
- res = httplib2._parse_www_authenticate({ 'www-authenticate':
- 'Digest realm="testrealm@host.com", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41", Basic REAlm="me" '})
- digest = res['digest']
- self.assertEqual('testrealm@host.com', digest['realm'])
- self.assertEqual('auth,auth-int', digest['qop'])
- self.assertEqual('dcd98b7102dd2f0e8b11d0f600bfb0c093', digest['nonce'])
- self.assertEqual('5ccc069c403ebaf9f0171e9517f40e41', digest['opaque'])
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
-
- def testParseWWWAuthenticateMultiple3(self):
- # Handle an added comma between challenges, which might get thrown in if the challenges were
- # originally sent in separate www-authenticate headers.
- res = httplib2._parse_www_authenticate({ 'www-authenticate':
- 'Digest realm="testrealm@host.com", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41", Basic REAlm="me", WSSE realm="foo", profile="UsernameToken"'})
- digest = res['digest']
- self.assertEqual('testrealm@host.com', digest['realm'])
- self.assertEqual('auth,auth-int', digest['qop'])
- self.assertEqual('dcd98b7102dd2f0e8b11d0f600bfb0c093', digest['nonce'])
- self.assertEqual('5ccc069c403ebaf9f0171e9517f40e41', digest['opaque'])
- basic = res['basic']
- self.assertEqual('me', basic['realm'])
- wsse = res['wsse']
- self.assertEqual('foo', wsse['realm'])
- self.assertEqual('UsernameToken', wsse['profile'])
-
- def testParseWWWAuthenticateMultiple4(self):
- res = httplib2._parse_www_authenticate({ 'www-authenticate':
- 'Digest realm="test-real.m@host.com", qop \t=\t"\tauth,auth-int", nonce="(*)&^&$%#",opaque="5ccc069c403ebaf9f0171e9517f40e41", Basic REAlm="me", WSSE realm="foo", profile="UsernameToken"'})
- digest = res['digest']
- self.assertEqual('test-real.m@host.com', digest['realm'])
- self.assertEqual('\tauth,auth-int', digest['qop'])
- self.assertEqual('(*)&^&$%#', digest['nonce'])
-
- def testParseWWWAuthenticateMoreQuoteCombos(self):
- res = httplib2._parse_www_authenticate({'www-authenticate':'Digest realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", algorithm=MD5, qop="auth", stale=true'})
- digest = res['digest']
- self.assertEqual('myrealm', digest['realm'])
-
- def testParseWWWAuthenticateMalformed(self):
- try:
- res = httplib2._parse_www_authenticate({'www-authenticate':'OAuth "Facebook Platform" "invalid_token" "Invalid OAuth access token."'})
- self.fail("should raise an exception")
- except httplib2.MalformedHeader:
- pass
-
- def testDigestObject(self):
- credentials = ('joe', 'password')
- host = None
- request_uri = '/projects/httplib2/test/digest/'
- headers = {}
- response = {
- 'www-authenticate': 'Digest realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", algorithm=MD5, qop="auth"'
- }
- content = b""
-
- d = httplib2.DigestAuthentication(credentials, host, request_uri, headers, response, content, None)
- d.request("GET", request_uri, headers, content, cnonce="33033375ec278a46")
- our_request = "authorization: %s" % headers['authorization']
- working_request = 'authorization: Digest username="joe", realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", uri="/projects/httplib2/test/digest/", algorithm=MD5, response="97ed129401f7cdc60e5db58a80f3ea8b", qop=auth, nc=00000001, cnonce="33033375ec278a46"'
- self.assertEqual(our_request, working_request)
-
- def testDigestObjectWithOpaque(self):
- credentials = ('joe', 'password')
- host = None
- request_uri = '/projects/httplib2/test/digest/'
- headers = {}
- response = {
- 'www-authenticate': 'Digest realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", algorithm=MD5, qop="auth", opaque="atestopaque"'
- }
- content = ""
-
- d = httplib2.DigestAuthentication(credentials, host, request_uri, headers, response, content, None)
- d.request("GET", request_uri, headers, content, cnonce="33033375ec278a46")
- our_request = "authorization: %s" % headers['authorization']
- working_request = 'authorization: Digest username="joe", realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", uri="/projects/httplib2/test/digest/", algorithm=MD5, response="97ed129401f7cdc60e5db58a80f3ea8b", qop=auth, nc=00000001, cnonce="33033375ec278a46", opaque="atestopaque"'
- self.assertEqual(our_request, working_request)
-
- def testDigestObjectStale(self):
- credentials = ('joe', 'password')
- host = None
- request_uri = '/projects/httplib2/test/digest/'
- headers = {}
- response = httplib2.Response({ })
- response['www-authenticate'] = 'Digest realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", algorithm=MD5, qop="auth", stale=true'
- response.status = 401
- content = b""
- d = httplib2.DigestAuthentication(credentials, host, request_uri, headers, response, content, None)
- # Returns true to force a retry
- self.assertTrue( d.response(response, content) )
-
- def testDigestObjectAuthInfo(self):
- credentials = ('joe', 'password')
- host = None
- request_uri = '/projects/httplib2/test/digest/'
- headers = {}
- response = httplib2.Response({ })
- response['www-authenticate'] = 'Digest realm="myrealm", nonce="Ygk86AsKBAA=3516200d37f9a3230352fde99977bd6d472d4306", algorithm=MD5, qop="auth", stale=true'
- response['authentication-info'] = 'nextnonce="fred"'
- content = b""
- d = httplib2.DigestAuthentication(credentials, host, request_uri, headers, response, content, None)
- # Returns true to force a retry
- self.assertFalse( d.response(response, content) )
- self.assertEqual('fred', d.challenge['nonce'])
- self.assertEqual(1, d.challenge['nc'])
-
- def testWsseAlgorithm(self):
- digest = httplib2._wsse_username_token("d36e316282959a9ed4c89851497a717f", "2003-12-15T14:43:07Z", "taadtaadpstcsm")
- expected = b"quR/EWLAV4xLf9Zqyw4pDmfV9OY="
- self.assertEqual(expected, digest)
-
- def testEnd2End(self):
- # one end to end header
- response = {'content-type': 'application/atom+xml', 'te': 'deflate'}
- end2end = httplib2._get_end2end_headers(response)
- self.assertTrue('content-type' in end2end)
- self.assertTrue('te' not in end2end)
- self.assertTrue('connection' not in end2end)
-
- # one end to end header that gets eliminated
- response = {'connection': 'content-type', 'content-type': 'application/atom+xml', 'te': 'deflate'}
- end2end = httplib2._get_end2end_headers(response)
- self.assertTrue('content-type' not in end2end)
- self.assertTrue('te' not in end2end)
- self.assertTrue('connection' not in end2end)
-
- # Degenerate case of no headers
- response = {}
- end2end = httplib2._get_end2end_headers(response)
- self.assertEqual(0, len(end2end))
-
- # Degenerate case of connection referrring to a header not passed in
- response = {'connection': 'content-type'}
- end2end = httplib2._get_end2end_headers(response)
- self.assertEqual(0, len(end2end))
-
-
-class TestProxyInfo(unittest.TestCase):
- def setUp(self):
- self.orig_env = dict(os.environ)
-
- def tearDown(self):
- os.environ.clear()
- os.environ.update(self.orig_env)
-
- def test_from_url(self):
- pi = httplib2.proxy_info_from_url('http://myproxy.example.com')
- self.assertEqual(pi.proxy_host, 'myproxy.example.com')
- self.assertEqual(pi.proxy_port, 80)
- self.assertEqual(pi.proxy_user, None)
-
- def test_from_url_ident(self):
- pi = httplib2.proxy_info_from_url('http://zoidberg:fish@someproxy:99')
- self.assertEqual(pi.proxy_host, 'someproxy')
- self.assertEqual(pi.proxy_port, 99)
- self.assertEqual(pi.proxy_user, 'zoidberg')
- self.assertEqual(pi.proxy_pass, 'fish')
-
- def test_from_env(self):
- os.environ['http_proxy'] = 'http://myproxy.example.com:8080'
- pi = httplib2.proxy_info_from_environment()
- self.assertEqual(pi.proxy_host, 'myproxy.example.com')
- self.assertEqual(pi.proxy_port, 8080)
-
- def test_from_env_no_proxy(self):
- os.environ['http_proxy'] = 'http://myproxy.example.com:80'
- os.environ['https_proxy'] = 'http://myproxy.example.com:81'
- pi = httplib2.proxy_info_from_environment('https')
- self.assertEqual(pi.proxy_host, 'myproxy.example.com')
- self.assertEqual(pi.proxy_port, 81)
-
- def test_from_env_none(self):
- os.environ.clear()
- pi = httplib2.proxy_info_from_environment()
- self.assertEqual(pi, None)
-
- def test_proxy_headers(self):
- headers = {'key0': 'val0', 'key1': 'val1'}
- pi = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP, 'localhost', 1234, proxy_headers = headers)
- self.assertEqual(pi.proxy_headers, headers)
-
- # regression: ensure that httplib2.HTTPConnectionWithTimeout initializes when proxy_info is not supplied
- def test_proxy_init(self):
- connection = httplib2.HTTPConnectionWithTimeout('www.google.com', 80)
- connection.request('GET', '/')
- connection.close()
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/third_party/gsutil/third_party/httplib2/ref.tex b/third_party/gsutil/third_party/httplib2/ref.tex
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/about.html b/third_party/gsutil/third_party/httplib2/ref/about.html
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/blank.png b/third_party/gsutil/third_party/httplib2/ref/blank.png
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/contents.html b/third_party/gsutil/third_party/httplib2/ref/contents.html
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/contents.png b/third_party/gsutil/third_party/httplib2/ref/contents.png
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/images.idx b/third_party/gsutil/third_party/httplib2/ref/images.idx
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/img1.old b/third_party/gsutil/third_party/httplib2/ref/img1.old
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/img1.png b/third_party/gsutil/third_party/httplib2/ref/img1.png
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/img2.old b/third_party/gsutil/third_party/httplib2/ref/img2.old
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/img2.png b/third_party/gsutil/third_party/httplib2/ref/img2.png
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/index.png b/third_party/gsutil/third_party/httplib2/ref/index.png
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/modimages.idx b/third_party/gsutil/third_party/httplib2/ref/modimages.idx
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/modules.png b/third_party/gsutil/third_party/httplib2/ref/modules.png
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/next.png b/third_party/gsutil/third_party/httplib2/ref/next.png
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/previous.png b/third_party/gsutil/third_party/httplib2/ref/previous.png
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/pyfav.png b/third_party/gsutil/third_party/httplib2/ref/pyfav.png
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/ref.css b/third_party/gsutil/third_party/httplib2/ref/ref.css
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/ref/up.png b/third_party/gsutil/third_party/httplib2/ref/up.png
old mode 100644
new mode 100755
diff --git a/third_party/gsutil/third_party/httplib2/requirements-test.txt b/third_party/gsutil/third_party/httplib2/requirements-test.txt
index 674a2147d65..f7dbdd8746e 100644
--- a/third_party/gsutil/third_party/httplib2/requirements-test.txt
+++ b/third_party/gsutil/third_party/httplib2/requirements-test.txt
@@ -1,9 +1,13 @@
-flake8==3.4.1
-mock==2.0.0
-pytest-cov==2.5.1
-pytest-forked==0.2
-pytest-randomly==1.2.1
-pytest-timeout==1.2.0
-pytest-xdist==1.20.0
-pytest==3.2.1
+cryptography==35.0.0;python_version>="3.6"
+flake8==3.9.2
+future==0.16.0
+mock==2.0.0;python_version<"3.3"
+pytest-cov==2.12.1
+pytest-forked==1.3.0
+pytest-randomly==1.2.3
+pytest-timeout==1.4.2
+pytest-xdist==1.34.0
+pytest==4.6.11;python_version<="3.4"
+pytest==6.1.2;python_version>"3.4" and python_version<"3.10"
+pytest==6.2.5;python_version>="3.10"
six==1.10.0
diff --git a/third_party/gsutil/third_party/httplib2/requirements.txt b/third_party/gsutil/third_party/httplib2/requirements.txt
new file mode 100644
index 00000000000..a0888d44af7
--- /dev/null
+++ b/third_party/gsutil/third_party/httplib2/requirements.txt
@@ -0,0 +1,2 @@
+pyparsing>=2.4.2,<3; python_version<'3.0' # TODO remove after dropping Python2 support
+pyparsing>=2.4.2,<4, !=3.0.0, !=3.0.1, !=3.0.2, !=3.0.3; python_version>'3.0'
diff --git a/third_party/gsutil/third_party/httplib2/script/compile-py3-openssl11.sh b/third_party/gsutil/third_party/httplib2/script/compile-py3-openssl11.sh
new file mode 100644
index 00000000000..838f72f05d8
--- /dev/null
+++ b/third_party/gsutil/third_party/httplib2/script/compile-py3-openssl11.sh
@@ -0,0 +1,60 @@
+#!not for running standalone, see .github/workflows/test.yaml
+
+cache_dir=$HOME/.cache
+install_dir=$cache_dir/py3-openssl11
+python_version="3.7.3"
+openssl_version="1.1.1f"
+cpucount=$(nproc --all)
+export PYTHONDONTWRITEBYTECODE=1
+
+#rm -rf $cache_dir/* # uncomment to rebuild
+
+if [[ ! -x "$install_dir/bin/python" ]] || [[ $($install_dir/bin/python -V) != "Python $python_version" ]] ; then
+ (
+ mkdir -p /tmp/source
+ cd /tmp/source
+ # Compile OpenSSL
+ curl -fLOsS "https://www.openssl.org/source/openssl-$openssl_version.tar.gz"
+ echo "Extracting OpenSSL..."
+ tar xf openssl-$openssl_version.tar.gz
+ cd ./openssl-$openssl_version
+ echo "Compiling OpenSSL $openssl_version..."
+ ./config shared --prefix=$install_dir
+ echo "Running make for OpenSSL..."
+ make -j$cpucount -s
+ echo "Running make install for OpenSSL..."
+ make install_sw >/dev/null
+ export LD_LIBRARY_PATH=$install_dir/lib
+
+ cd /tmp/source
+ sudo apt install -qq --yes libffi-dev
+ # Compile latest Python
+ curl -fLOsS "https://www.python.org/ftp/python/$python_version/Python-$python_version.tar.xz"
+ echo "Extracting Python..."
+ tar xf Python-$python_version.tar.xz
+ cd ./Python-$python_version
+ echo "Compiling Python $python_version..."
+ # Note we are purposefully NOT using optimization flags as they increase compile time 10x
+ conf_flags="--with-openssl=$install_dir --prefix=$install_dir --with-ensurepip=upgrade"
+ CFLAGS=-O1 ./configure $conf_flags > /dev/null
+ make -j$cpucount -s
+ echo "Installing Python..."
+ make altinstall bininstall >/dev/null
+ ln -fs pip3.7 $install_dir/bin/pip3
+ ln -fs pip3 $install_dir/bin/pip
+ ln -fs python3 $install_dir/bin/python
+ # care for CI cache size
+ find $install_dir -type d -name __pycache__ -print0 |xargs -0 rm -rf
+ )
+fi
+
+export LD_LIBRARY_PATH=$install_dir/lib
+export PATH=$install_dir/bin:$PATH
+if [[ $(python -V) != "Python $python_version" ]] ; then
+ echo "Required Python version was not installed into PATH" >&2
+ exit 1
+fi
+if [[ $(python -c 'import ssl; print(ssl.OPENSSL_VERSION)') != OpenSSL\ ${openssl_version}* ]] ; then
+ echo "Required OpenSSL version was not installed into Python" >&2
+ exit 1
+fi
diff --git a/third_party/gsutil/third_party/httplib2/script/generate-tls b/third_party/gsutil/third_party/httplib2/script/generate-tls
new file mode 100755
index 00000000000..cad38e5c83b
--- /dev/null
+++ b/third_party/gsutil/third_party/httplib2/script/generate-tls
@@ -0,0 +1,61 @@
+#!/bin/bash
+set -eu
+
+target_dir="${1:-.}"
+days=7300
+rsa_bits=2048
+org="httplib2-test"
+server_cn="localhost"
+subj_prefix="/C=ZZ/ST=./L=./O=$org/OU=."
+
+main() {
+ cd "$target_dir"
+ gen
+ check
+}
+
+check() {
+ echo "- check keys" >&2
+ openssl rsa -in ca.key -check -noout
+ openssl rsa -in client.key -check -noout
+ openssl rsa -in client_encrypted.key -check -noout -passin pass:12345
+ openssl rsa -in server.key -check -noout
+
+ echo "- check certs" >&2
+ for f in *.pem ; do
+ openssl x509 -in "$f" -checkend 3600 -noout
+ done
+}
+
+gen() {
+ echo "- generate keys, if absent" >&2
+ [[ -f ca.key ]] || openssl genrsa -out ca.key $rsa_bits
+ [[ -f client.key ]] || openssl genrsa -out client.key $rsa_bits
+ [[ -f client_encrypted.key ]] || openssl rsa -in client.key -out client_encrypted.key -aes128 -passout pass:12345
+ [[ -f server.key ]] || openssl genrsa -out server.key $rsa_bits
+
+ echo "- generate CA" >&2
+ openssl req -batch -new -nodes -x509 -days $days -subj "$subj_prefix/CN=$org-CA" -key ca.key -out ca.pem
+ openssl req -batch -new -nodes -x509 -days $days -subj "$subj_prefix/CN=$org-CA-unused" -key ca.key -out ca_unused.pem
+
+ echo "- generate client cert" >&2
+ openssl req -batch -new -nodes -out tmp.csr -key client.key -subj "$subj_prefix/CN=$org-client"
+ openssl x509 -req -in tmp.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.crt -days $days -serial -fingerprint
+ cat client.crt client.key >client.pem
+ cat client.crt ca.pem client.key >client_chain.pem
+
+ echo "- generate encrypted client cert" >&2
+ openssl req -batch -new -nodes -out tmp.csr -key client_encrypted.key -passin pass:12345 -subj "$subj_prefix/CN=$org-client-enc"
+ openssl x509 -req -in tmp.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client_encrypted.crt -days $days -serial -fingerprint
+ cat client_encrypted.crt client_encrypted.key >client_encrypted.pem
+
+ echo "- generate server cert" >&2
+ openssl req -batch -new -nodes -out tmp.csr -key server.key -subj "$subj_prefix/CN=$server_cn"
+ openssl x509 -req -in tmp.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.crt -days $days -serial -fingerprint
+ cat server.crt server.key >server.pem
+ cat server.crt ca.pem server.key >server_chain.pem
+
+ rm tmp.csr
+}
+
+main
diff --git a/third_party/gsutil/third_party/httplib2/script/release b/third_party/gsutil/third_party/httplib2/script/release
old mode 100644
new mode 100755
index 556fc84bbcc..45f5ef546e2
--- a/third_party/gsutil/third_party/httplib2/script/release
+++ b/third_party/gsutil/third_party/httplib2/script/release
@@ -45,9 +45,9 @@ auto_prepare_release() {
last_tag=$(git tag --sort=-version:refname |head -n1)
last_tag=${last_tag##v}
version_replace="${last_tag}.post$(date -u +%y%m%d%H%M)"
- update_version "setup.py" "s/VERSION =.+/VERSION = '$version_replace'/"
- update_version "python2/httplib2/__init__.py" "s/__version__ =.+/__version__ = '$version_replace'/"
- update_version "python3/httplib2/__init__.py" "s/__version__ =.+/__version__ = '$version_replace'/"
+ update_version "setup.py" "s/VERSION =.+/VERSION = \"$version_replace\"/"
+ update_version "python2/httplib2/__init__.py" "s/__version__ =.+/__version__ = \"$version_replace\"/"
+ update_version "python3/httplib2/__init__.py" "s/__version__ =.+/__version__ = \"$version_replace\"/"
version_check "$version_replace"
fi
}
@@ -56,7 +56,7 @@ interactive() {
echo 'script/release: interactive mode for creating new tagged releases with human assistance' >&2
local branch="${1-$(git symbolic-ref --short HEAD)}"
- version="$(PYTHONPATH=$PWD/python3 python3 -c 'import httplib2; print(httplib2.__version__)')"
+ version=$(python -Es -c "$(egrep '^__version__' python3/httplib2/__init__.py);print(__version__)")
printf "\nbranch: %s httplib2.__version__: '%s'\n" $branch $version >&2
if [[ "$branch" != "master" ]] ; then
@@ -83,20 +83,20 @@ interactive() {
confirm "Continue still? [yN] " || exit 1
fi
- echo "Building package" >&2
- find . -name '*.pyc' -o -name '*.pyo' -o -name '*.orig' -delete
- rm -rf python{2,3}/.cache
- rm -rf build dist
- # TODO: sdist bdist_wheel
- # but wheels don't roll well with our 2/3 split code base
- local venv=./venv-release
- if [[ ! -d "$venv" ]] ; then
- virtualenv $venv
- $venv/bin/pip install -U pip setuptools wheel twine
- fi
- $venv/bin/python setup.py sdist
-
- if confirm "Upload to PyPI? Use in special situation, normally CI (Travis) will upload to PyPI. [yN] " ; then
+ echo "Building package" >&2
+ find . -name '*.pyc' -o -name '*.pyo' -o -name '*.orig' -delete
+ rm -rf python{2,3}/.cache
+ rm -rf build dist
+ local venv=./venv-release
+ if [[ ! -d "$venv" ]] ; then
+ virtualenv $venv
+ $venv/bin/pip install -U check-manifest pip 'setuptools>=43.0' wheel twine
+ fi
+ $venv/bin/python setup.py clean --all
+ $venv/bin/python setup.py sdist bdist_wheel
+ $venv/bin/check-manifest || echo "FIXME check-manifest" >&2
+
+ if confirm "Upload to PyPI? Use in special situation, normally CI/CD will upload to PyPI. [yN] " ; then
$venv/bin/twine upload dist/* || exit 1
fi
@@ -133,9 +133,9 @@ bump_version() {
fi
echo "Next version: '$version_next'" >&2
- update_version "python3/httplib2/__init__.py" "s/__version__ =.+/__version__ = '$version_next'/"
- update_version "python2/httplib2/__init__.py" "s/__version__ =.+/__version__ = '$version_next'/"
- update_version "setup.py" "s/VERSION =.+/VERSION = '$version_next'/"
+ update_version "python3/httplib2/__init__.py" "s/__version__ =.+/__version__ = \"$version_next\"/"
+ update_version "python2/httplib2/__init__.py" "s/__version__ =.+/__version__ = \"$version_next\"/"
+ update_version "setup.py" "s/VERSION =.+/VERSION = \"$version_next\"/"
confirm "Confirm changes? [yN] " || exit 1
}
@@ -143,8 +143,8 @@ bump_version() {
update_version() {
local path="$1"
local sed_expr="$2"
- # sed -E --in-place='' -e "s/VERSION =.+/VERSION = '$version_replace'/" setup.py
- # sed -E --in-place='' -e "s/__version__ =.+/__version__ = '$version_replace'/" python2/httplib2/__init__.py python3/httplib2/__init__.py
+ # sed -E --in-place='' -e "s/VERSION =.+/VERSION = \"$version_replace\"/" setup.py
+ # sed -E --in-place='' -e "s/__version__ =.+/__version__ = \"$version_replace\"/" python2/httplib2/__init__.py python3/httplib2/__init__.py
echo "Updating file '$path'" >&2
if ! sed -E --in-place='' -e "$sed_expr" "$path" ; then
echo "sed error $?" >&2
@@ -210,11 +210,11 @@ assert_tree_clean() {
version_check() {
local need=$1
- local version_setup=$(fgrep 'VERSION =' setup.py |tr -d " '" |cut -d\= -f2)
- local version_py2=$(cd python2 ; python2 -Es -c 'import httplib2;print(httplib2.__version__)')
- local version_py3=$(cd python3 ; python3 -Es -c 'import httplib2;print(httplib2.__version__)')
+ local version_setup=$(python setup.py --version)
+ local version_py2=$(python -Es -c "$(egrep '^__version__' python2/httplib2/__init__.py);print(__version__)")
+ local version_py3=$(python -Es -c "$(egrep '^__version__' python3/httplib2/__init__.py);print(__version__)")
if [[ "$version_setup" != "$need" ]] ; then
- echo "error: setup.py VERSION=$version_setup expected=$need" >&1
+ echo "error: setup.py version=$version_setup expected=$need" >&1
exit 1
fi
if [[ "$version_py2" != "$need" ]] ; then
diff --git a/third_party/gsutil/third_party/httplib2/script/test b/third_party/gsutil/third_party/httplib2/script/test
old mode 100644
new mode 100755
index a3dca92a19e..49dbb2f1249
--- a/third_party/gsutil/third_party/httplib2/script/test
+++ b/third_party/gsutil/third_party/httplib2/script/test
@@ -3,7 +3,7 @@ set -eux
# By default, run tests with pytest-forked plugin,
# disable in terminal for debugging, you may add --forked
flag_forked="--forked"
-if [[ -z "${CONTINUOUS_INTEGRATION-}" ]] && [[ -t 1 ]] ; then
+if [[ -z "${CI:-}" ]] && [[ -t 1 ]] ; then
flag_forked=""
fi
test_flags=(
@@ -14,15 +14,8 @@ test_flags=(
main() {
cd "$( dirname "${BASH_SOURCE[0]}" )/.."
- if [[ -n "${CONTINUOUS_INTEGRATION-}" ]] ; then
+ if [[ -n "${CI:-}" ]] ; then
case "${test_group-}" in
- pep8)
- if [[ "${TRAVIS_PYTHON_VERSION}" = "2.7" ]] ; then
- flake8 python2/
- else
- flake8 python3/ tests/
- fi
- ;;
package)
# TODO: sdist bdist_wheel
# but wheels don't roll well with our 2/3 split code base
@@ -65,8 +58,8 @@ main() {
install_check_version() {
local pip="$1"
$pip install dist/httplib2*
- version_source=$(cd python3 ; python3 -Es -c 'import httplib2;print(httplib2.__version__)')
- version_installed=$($pip show httplib2 |fgrep Version |cut -d' ' -f2)
+ version_source=$(python setup.py --version)
+ version_installed=$($pip show httplib2 |fgrep Version: |cut -d' ' -f2)
if [[ "$version_source" != "$version_installed" ]] ; then
echo "error: installed package version=$version_installed does not match source=$version_source" >&2
exit 1
diff --git a/third_party/gsutil/third_party/httplib2/setup.cfg b/third_party/gsutil/third_party/httplib2/setup.cfg
index 432d0659c05..faff1b699ad 100644
--- a/third_party/gsutil/third_party/httplib2/setup.cfg
+++ b/third_party/gsutil/third_party/httplib2/setup.cfg
@@ -1,9 +1,13 @@
+# [bdist_wheel]
+# universal = 1
+# FIXME universal wheels don't roll well with our 2/3 split code base
+# https://github.com/httplib2/httplib2/pull/29
+
[coverage:run]
-omit = */test/*
[flake8]
exclude = *.egg*,.env,.git,.tox,_*,build*,dist*,venv*,python2/,python3/
-ignore = E261,W503
+ignore = E261,E731,W503
max-line-length = 121
[tool:pytest]
@@ -13,9 +17,10 @@ addopts =
# -n auto
--cov-config=setup.cfg
--cov=httplib2
+ --ignore=tests/_TODO_legacy/
--noconftest
--showlocals
- --strict
+ --strict-markers
--tb=short
--timeout=17
--verbose
diff --git a/third_party/gsutil/third_party/httplib2/setup.py b/third_party/gsutil/third_party/httplib2/setup.py
old mode 100644
new mode 100755
index 0f3a5160abe..baf5e66d3cc
--- a/third_party/gsutil/third_party/httplib2/setup.py
+++ b/third_party/gsutil/third_party/httplib2/setup.py
@@ -1,17 +1,44 @@
+import os
import setuptools
+import setuptools.command.test
import sys
-pkgdir = {'': 'python%s' % sys.version_info[0]}
-VERSION = '0.11.3'
+pkgdir = {"": "python%s" % sys.version_info[0]}
+VERSION = "0.20.4"
+
+
+# `python setup.py test` uses existing Python environment, no virtualenv, no pip.
+# Use case: Archlinux package. https://github.com/httplib2/httplib2/issues/103
+# Otherwise, use `script/test`
+class TestCommand(setuptools.command.test.test):
+ def run_tests(self):
+ # pytest may be not installed yet
+ import pytest
+
+ args = ["--forked", "--fulltrace", "--no-cov", "tests/"]
+ if self.test_suite:
+ args += ["-k", self.test_suite]
+ sys.stderr.write("setup.py:test run pytest {}\n".format(" ".join(args)))
+ errno = pytest.main(args)
+ sys.exit(errno)
+
+
+def read_requirements(name):
+ project_root = os.path.dirname(os.path.abspath(__file__))
+ with open(os.path.join(project_root, name), "rb") as f:
+ # remove whitespace and comments
+ g = (line.decode("utf-8").lstrip().split("#", 1)[0].rstrip() for line in f)
+ return [l for l in g if l]
+
setuptools.setup(
- name='httplib2',
+ name="httplib2",
version=VERSION,
- author='Joe Gregorio',
- author_email='joe@bitworking.org',
- url='https://github.com/httplib2/httplib2',
- description='A comprehensive HTTP client library.',
- license='MIT',
+ author="Joe Gregorio",
+ author_email="joe@bitworking.org",
+ url="https://github.com/httplib2/httplib2",
+ description="A comprehensive HTTP client library.",
+ license="MIT",
long_description="""
A comprehensive HTTP client library, ``httplib2`` supports many features left out of other HTTP libraries.
@@ -57,23 +84,29 @@
A large and growing set of unit tests.
""",
package_dir=pkgdir,
- packages=['httplib2'],
- package_data={'httplib2': ['*.txt']},
- classifiers=(
- 'Development Status :: 4 - Beta',
- 'Environment :: Web Environment',
- 'Intended Audience :: Developers',
- 'License :: OSI Approved :: MIT License',
- 'Operating System :: OS Independent',
- 'Programming Language :: Python',
- 'Programming Language :: Python :: 2',
- 'Programming Language :: Python :: 2.7',
- 'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.3',
- 'Programming Language :: Python :: 3.4',
- 'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6',
- 'Topic :: Internet :: WWW/HTTP',
- 'Topic :: Software Development :: Libraries',
- ),
+ packages=["httplib2"],
+ package_data={"httplib2": ["*.txt"]},
+ install_requires=read_requirements("requirements.txt"),
+ tests_require=read_requirements("requirements-test.txt"),
+ python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
+ cmdclass={"test": TestCommand},
+ classifiers=[
+ "Development Status :: 4 - Beta",
+ "Environment :: Web Environment",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: MIT License",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 2",
+ "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.4",
+ "Programming Language :: Python :: 3.5",
+ "Programming Language :: Python :: 3.6",
+ "Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Topic :: Internet :: WWW/HTTP",
+ "Topic :: Software Development :: Libraries",
+ ],
)
diff --git a/third_party/gsutil/third_party/httplib2/test/.htaccess b/third_party/gsutil/third_party/httplib2/test/.htaccess
deleted file mode 100755
index 863f8e41d3f..00000000000
--- a/third_party/gsutil/third_party/httplib2/test/.htaccess
+++ /dev/null
@@ -1,8 +0,0 @@
-AddHandler cgi-script .asis
-Options +ExecCGI +Indexes
-ExpiresActive On
-ExpiresDefault "access plus 2 hours"
-
-SecFilterEngine Off
-SecFilterScanPOST off
-
diff --git a/third_party/gsutil/third_party/httplib2/test/300/final-destination.txt b/third_party/gsutil/third_party/httplib2/test/300/final-destination.txt
deleted file mode 100755
index 4ffba65e225..00000000000
--- a/third_party/gsutil/third_party/httplib2/test/300/final-destination.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is the final destination.
diff --git a/third_party/gsutil/third_party/httplib2/test/300/with-location-header.asis b/third_party/gsutil/third_party/httplib2/test/300/with-location-header.asis
deleted file mode 100755
index 8f2e9c2cafc..00000000000
--- a/third_party/gsutil/third_party/httplib2/test/300/with-location-header.asis
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/tail --lines=+2
-Status: 300 Mutliple Choices
-Location: http://bitworking.org/projects/httplib2/test/300/final-destination.txt
-
-
diff --git a/third_party/gsutil/third_party/httplib2/test/300/without-location-header.asis b/third_party/gsutil/third_party/httplib2/test/300/without-location-header.asis
deleted file mode 100755
index dae30557a2e..00000000000
--- a/third_party/gsutil/third_party/httplib2/test/300/without-location-header.asis
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/tail --lines=+2
-Status: 300 Mutliple Choices
-Content-Type: text/html
-
-
-
-
-
diff --git a/third_party/gsutil/third_party/requests/docs/_templates/sidebarlogo.html b/third_party/gsutil/third_party/requests/docs/_templates/sidebarlogo.html
new file mode 100644
index 00000000000..56d61095633
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/_templates/sidebarlogo.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+ Requests is an elegant and simple HTTP library for Python, built for
+ human beings. You are currently looking at the documentation of the
+ development release.
+
diff --git a/third_party/gsutil/third_party/requests/docs/_themes/.gitignore b/third_party/gsutil/third_party/requests/docs/_themes/.gitignore
new file mode 100644
index 00000000000..66b6e4c2f3b
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/_themes/.gitignore
@@ -0,0 +1,3 @@
+*.pyc
+*.pyo
+.DS_Store
diff --git a/third_party/gsutil/third_party/requests/docs/_themes/LICENSE b/third_party/gsutil/third_party/requests/docs/_themes/LICENSE
new file mode 100644
index 00000000000..3d1e04a257a
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/_themes/LICENSE
@@ -0,0 +1,45 @@
+Modifications:
+
+Copyright (c) 2011 Kenneth Reitz.
+
+
+Original Project:
+
+Copyright (c) 2010 by Armin Ronacher.
+
+
+Some rights reserved.
+
+Redistribution and use in source and binary forms of the theme, with or
+without modification, are permitted provided that the following conditions
+are met:
+
+* Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+* The names of the contributors may not be used to endorse or
+ promote products derived from this software without specific
+ prior written permission.
+
+We kindly ask you to only use these themes in an unmodified manner just
+for Flask and Flask-related products, not for unrelated projects. If you
+like the visual style and want to use it for your own projects, please
+consider making some larger changes to the themes (such as changing
+font faces, sizes, colors or margins).
+
+THIS THEME IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS THEME, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/third_party/gsutil/third_party/requests/docs/_themes/flask_theme_support.py b/third_party/gsutil/third_party/requests/docs/_themes/flask_theme_support.py
new file mode 100644
index 00000000000..33f47449c11
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/_themes/flask_theme_support.py
@@ -0,0 +1,86 @@
+# flasky extensions. flasky pygments style based on tango style
+from pygments.style import Style
+from pygments.token import Keyword, Name, Comment, String, Error, \
+ Number, Operator, Generic, Whitespace, Punctuation, Other, Literal
+
+
+class FlaskyStyle(Style):
+ background_color = "#f8f8f8"
+ default_style = ""
+
+ styles = {
+ # No corresponding class for the following:
+ #Text: "", # class: ''
+ Whitespace: "underline #f8f8f8", # class: 'w'
+ Error: "#a40000 border:#ef2929", # class: 'err'
+ Other: "#000000", # class 'x'
+
+ Comment: "italic #8f5902", # class: 'c'
+ Comment.Preproc: "noitalic", # class: 'cp'
+
+ Keyword: "bold #004461", # class: 'k'
+ Keyword.Constant: "bold #004461", # class: 'kc'
+ Keyword.Declaration: "bold #004461", # class: 'kd'
+ Keyword.Namespace: "bold #004461", # class: 'kn'
+ Keyword.Pseudo: "bold #004461", # class: 'kp'
+ Keyword.Reserved: "bold #004461", # class: 'kr'
+ Keyword.Type: "bold #004461", # class: 'kt'
+
+ Operator: "#582800", # class: 'o'
+ Operator.Word: "bold #004461", # class: 'ow' - like keywords
+
+ Punctuation: "bold #000000", # class: 'p'
+
+ # because special names such as Name.Class, Name.Function, etc.
+ # are not recognized as such later in the parsing, we choose them
+ # to look the same as ordinary variables.
+ Name: "#000000", # class: 'n'
+ Name.Attribute: "#c4a000", # class: 'na' - to be revised
+ Name.Builtin: "#004461", # class: 'nb'
+ Name.Builtin.Pseudo: "#3465a4", # class: 'bp'
+ Name.Class: "#000000", # class: 'nc' - to be revised
+ Name.Constant: "#000000", # class: 'no' - to be revised
+ Name.Decorator: "#888", # class: 'nd' - to be revised
+ Name.Entity: "#ce5c00", # class: 'ni'
+ Name.Exception: "bold #cc0000", # class: 'ne'
+ Name.Function: "#000000", # class: 'nf'
+ Name.Property: "#000000", # class: 'py'
+ Name.Label: "#f57900", # class: 'nl'
+ Name.Namespace: "#000000", # class: 'nn' - to be revised
+ Name.Other: "#000000", # class: 'nx'
+ Name.Tag: "bold #004461", # class: 'nt' - like a keyword
+ Name.Variable: "#000000", # class: 'nv' - to be revised
+ Name.Variable.Class: "#000000", # class: 'vc' - to be revised
+ Name.Variable.Global: "#000000", # class: 'vg' - to be revised
+ Name.Variable.Instance: "#000000", # class: 'vi' - to be revised
+
+ Number: "#990000", # class: 'm'
+
+ Literal: "#000000", # class: 'l'
+ Literal.Date: "#000000", # class: 'ld'
+
+ String: "#4e9a06", # class: 's'
+ String.Backtick: "#4e9a06", # class: 'sb'
+ String.Char: "#4e9a06", # class: 'sc'
+ String.Doc: "italic #8f5902", # class: 'sd' - like a comment
+ String.Double: "#4e9a06", # class: 's2'
+ String.Escape: "#4e9a06", # class: 'se'
+ String.Heredoc: "#4e9a06", # class: 'sh'
+ String.Interpol: "#4e9a06", # class: 'si'
+ String.Other: "#4e9a06", # class: 'sx'
+ String.Regex: "#4e9a06", # class: 'sr'
+ String.Single: "#4e9a06", # class: 's1'
+ String.Symbol: "#4e9a06", # class: 'ss'
+
+ Generic: "#000000", # class: 'g'
+ Generic.Deleted: "#a40000", # class: 'gd'
+ Generic.Emph: "italic #000000", # class: 'ge'
+ Generic.Error: "#ef2929", # class: 'gr'
+ Generic.Heading: "bold #000080", # class: 'gh'
+ Generic.Inserted: "#00A000", # class: 'gi'
+ Generic.Output: "#888", # class: 'go'
+ Generic.Prompt: "#745334", # class: 'gp'
+ Generic.Strong: "bold #000000", # class: 'gs'
+ Generic.Subheading: "bold #800080", # class: 'gu'
+ Generic.Traceback: "bold #a40000", # class: 'gt'
+ }
diff --git a/third_party/gsutil/third_party/requests/docs/api.rst b/third_party/gsutil/third_party/requests/docs/api.rst
new file mode 100644
index 00000000000..83eb58787a5
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/api.rst
@@ -0,0 +1,260 @@
+.. _api:
+
+Developer Interface
+===================
+
+.. module:: requests
+
+This part of the documentation covers all the interfaces of Requests. For
+parts where Requests depends on external libraries, we document the most
+important right here and provide links to the canonical documentation.
+
+
+Main Interface
+--------------
+
+All of Requests' functionality can be accessed by these 7 methods.
+They all return an instance of the :class:`Response ` object.
+
+.. autofunction:: request
+
+.. autofunction:: head
+.. autofunction:: get
+.. autofunction:: post
+.. autofunction:: put
+.. autofunction:: patch
+.. autofunction:: delete
+
+Exceptions
+----------
+
+.. autoexception:: requests.RequestException
+.. autoexception:: requests.ConnectionError
+.. autoexception:: requests.HTTPError
+.. autoexception:: requests.URLRequired
+.. autoexception:: requests.TooManyRedirects
+.. autoexception:: requests.ConnectTimeout
+.. autoexception:: requests.ReadTimeout
+.. autoexception:: requests.Timeout
+
+
+Request Sessions
+----------------
+
+.. _sessionapi:
+
+.. autoclass:: Session
+ :inherited-members:
+
+
+Lower-Level Classes
+-------------------
+
+.. autoclass:: requests.Request
+ :inherited-members:
+
+.. autoclass:: Response
+ :inherited-members:
+
+
+Lower-Lower-Level Classes
+-------------------------
+
+.. autoclass:: requests.PreparedRequest
+ :inherited-members:
+
+.. autoclass:: requests.adapters.BaseAdapter
+ :inherited-members:
+
+.. autoclass:: requests.adapters.HTTPAdapter
+ :inherited-members:
+
+Authentication
+--------------
+
+.. autoclass:: requests.auth.AuthBase
+.. autoclass:: requests.auth.HTTPBasicAuth
+.. autoclass:: requests.auth.HTTPProxyAuth
+.. autoclass:: requests.auth.HTTPDigestAuth
+
+
+
+Encodings
+---------
+
+.. autofunction:: requests.utils.get_encodings_from_content
+.. autofunction:: requests.utils.get_encoding_from_headers
+.. autofunction:: requests.utils.get_unicode_from_response
+
+
+.. _api-cookies:
+
+Cookies
+-------
+
+.. autofunction:: requests.utils.dict_from_cookiejar
+.. autofunction:: requests.utils.add_dict_to_cookiejar
+.. autofunction:: requests.cookies.cookiejar_from_dict
+
+.. autoclass:: requests.cookies.RequestsCookieJar
+ :inherited-members:
+
+.. autoclass:: requests.cookies.CookieConflictError
+ :inherited-members:
+
+
+
+Status Code Lookup
+------------------
+
+.. autoclass:: requests.codes
+
+.. automodule:: requests.status_codes
+
+
+Migrating to 1.x
+----------------
+
+This section details the main differences between 0.x and 1.x and is meant
+to ease the pain of upgrading.
+
+
+API Changes
+~~~~~~~~~~~
+
+* ``Response.json`` is now a callable and not a property of a response.
+
+ ::
+
+ import requests
+ r = requests.get('https://api.github.com/events')
+ r.json() # This *call* raises an exception if JSON decoding fails
+
+* The ``Session`` API has changed. Sessions objects no longer take parameters.
+ ``Session`` is also now capitalized, but it can still be
+ instantiated with a lowercase ``session`` for backwards compatibility.
+
+ ::
+
+ s = requests.Session() # formerly, session took parameters
+ s.auth = auth
+ s.headers.update(headers)
+ r = s.get('https://httpbin.org/headers')
+
+* All request hooks have been removed except 'response'.
+
+* Authentication helpers have been broken out into separate modules. See
+ requests-oauthlib_ and requests-kerberos_.
+
+.. _requests-oauthlib: https://github.com/requests/requests-oauthlib
+.. _requests-kerberos: https://github.com/requests/requests-kerberos
+
+* The parameter for streaming requests was changed from ``prefetch`` to
+ ``stream`` and the logic was inverted. In addition, ``stream`` is now
+ required for raw response reading.
+
+ ::
+
+ # in 0.x, passing prefetch=False would accomplish the same thing
+ r = requests.get('https://api.github.com/events', stream=True)
+ for chunk in r.iter_content(8192):
+ ...
+
+* The ``config`` parameter to the requests method has been removed. Some of
+ these options are now configured on a ``Session`` such as keep-alive and
+ maximum number of redirects. The verbosity option should be handled by
+ configuring logging.
+
+ ::
+
+ import requests
+ import logging
+
+ # Enabling debugging at http.client level (requests->urllib3->http.client)
+ # you will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA.
+ # the only thing missing will be the response.body which is not logged.
+ try: # for Python 3
+ from http.client import HTTPConnection
+ except ImportError:
+ from httplib import HTTPConnection
+ HTTPConnection.debuglevel = 1
+
+ logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests
+ logging.getLogger().setLevel(logging.DEBUG)
+ requests_log = logging.getLogger("urllib3")
+ requests_log.setLevel(logging.DEBUG)
+ requests_log.propagate = True
+
+ requests.get('https://httpbin.org/headers')
+
+
+
+Licensing
+~~~~~~~~~
+
+One key difference that has nothing to do with the API is a change in the
+license from the ISC_ license to the `Apache 2.0`_ license. The Apache 2.0
+license ensures that contributions to Requests are also covered by the Apache
+2.0 license.
+
+.. _ISC: https://opensource.org/licenses/ISC
+.. _Apache 2.0: https://opensource.org/licenses/Apache-2.0
+
+
+Migrating to 2.x
+----------------
+
+
+Compared with the 1.0 release, there were relatively few backwards
+incompatible changes, but there are still a few issues to be aware of with
+this major release.
+
+For more details on the changes in this release including new APIs, links
+to the relevant GitHub issues and some of the bug fixes, read Cory's blog_
+on the subject.
+
+.. _blog: https://lukasa.co.uk/2013/09/Requests_20/
+
+
+API Changes
+~~~~~~~~~~~
+
+* There were a couple changes to how Requests handles exceptions.
+ ``RequestException`` is now a subclass of ``IOError`` rather than
+ ``RuntimeError`` as that more accurately categorizes the type of error.
+ In addition, an invalid URL escape sequence now raises a subclass of
+ ``RequestException`` rather than a ``ValueError``.
+
+ ::
+
+ requests.get('http://%zz/') # raises requests.exceptions.InvalidURL
+
+ Lastly, ``httplib.IncompleteRead`` exceptions caused by incorrect chunked
+ encoding will now raise a Requests ``ChunkedEncodingError`` instead.
+
+* The proxy API has changed slightly. The scheme for a proxy URL is now
+ required.
+
+ ::
+
+ proxies = {
+ "http": "10.10.1.10:3128", # use http://10.10.1.10:3128 instead
+ }
+
+ # In requests 1.x, this was legal, in requests 2.x,
+ # this raises requests.exceptions.MissingSchema
+ requests.get("http://example.org", proxies=proxies)
+
+
+Behavioural Changes
+~~~~~~~~~~~~~~~~~~~~~~~
+
+* Keys in the ``headers`` dictionary are now native strings on all Python
+ versions, i.e. bytestrings on Python 2 and unicode on Python 3. If the
+ keys are not native strings (unicode on Python 2 or bytestrings on Python 3)
+ they will be converted to the native string type assuming UTF-8 encoding.
+
+* Values in the ``headers`` dictionary should always be strings. This has
+ been the project's position since before 1.0 but a recent change
+ (since version 2.11.0) enforces this more strictly. It's advised to avoid
+ passing header values as unicode when possible.
diff --git a/third_party/gsutil/third_party/requests/docs/community/faq.rst b/third_party/gsutil/third_party/requests/docs/community/faq.rst
new file mode 100644
index 00000000000..a72fa4fb408
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/community/faq.rst
@@ -0,0 +1,92 @@
+.. _faq:
+
+Frequently Asked Questions
+==========================
+
+This part of the documentation answers common questions about Requests.
+
+Encoded Data?
+-------------
+
+Requests automatically decompresses gzip-encoded responses, and does
+its best to decode response content to unicode when possible.
+
+When either the `brotli `_ or `brotlicffi `_
+package is installed, requests also decodes Brotli-encoded responses.
+
+You can get direct access to the raw response (and even the socket),
+if needed as well.
+
+
+Custom User-Agents?
+-------------------
+
+Requests allows you to easily override User-Agent strings, along with
+any other HTTP Header. See `documentation about headers `_.
+
+
+
+Why not Httplib2?
+-----------------
+
+Chris Adams gave an excellent summary on
+`Hacker News `_:
+
+ httplib2 is part of why you should use requests: it's far more respectable
+ as a client but not as well documented and it still takes way too much code
+ for basic operations. I appreciate what httplib2 is trying to do, that
+ there's a ton of hard low-level annoyances in building a modern HTTP
+ client, but really, just use requests instead. Kenneth Reitz is very
+ motivated and he gets the degree to which simple things should be simple
+ whereas httplib2 feels more like an academic exercise than something
+ people should use to build production systems[1].
+
+ Disclosure: I'm listed in the requests AUTHORS file but can claim credit
+ for, oh, about 0.0001% of the awesomeness.
+
+ 1. http://code.google.com/p/httplib2/issues/detail?id=96 is a good example:
+ an annoying bug which affect many people, there was a fix available for
+ months, which worked great when I applied it in a fork and pounded a couple
+ TB of data through it, but it took over a year to make it into trunk and
+ even longer to make it onto PyPI where any other project which required "
+ httplib2" would get the working version.
+
+
+Python 3 Support?
+-----------------
+
+Yes! Requests officially supports Python 2.7 & 3.6+ and PyPy.
+
+Python 2 Support?
+-----------------
+
+Yes! We understand that we have a large user base with varying needs. Through
+**at least** Requests 2.27.x, we will be providing continued support for Python
+2.7. However, this support is likely to end some time in 2022.
+
+It is *highly* recommended users migrate to Python 3.7+ now since Python
+2.7 is no longer receiving bug fixes or security updates as of January 1, 2020.
+
+What are "hostname doesn't match" errors?
+-----------------------------------------
+
+These errors occur when :ref:`SSL certificate verification `
+fails to match the certificate the server responds with to the hostname
+Requests thinks it's contacting. If you're certain the server's SSL setup is
+correct (for example, because you can visit the site with your browser) and
+you're using Python 2.7, a possible explanation is that you need
+Server-Name-Indication.
+
+`Server-Name-Indication`_, or SNI, is an official extension to SSL where the
+client tells the server what hostname it is contacting. This is important
+when servers are using `Virtual Hosting`_. When such servers are hosting
+more than one SSL site they need to be able to return the appropriate
+certificate based on the hostname the client is connecting to.
+
+Python3 and Python 2.7.9+ include native support for SNI in their SSL modules.
+For information on using SNI with Requests on Python < 2.7.9 refer to this
+`Stack Overflow answer`_.
+
+.. _`Server-Name-Indication`: https://en.wikipedia.org/wiki/Server_Name_Indication
+.. _`virtual hosting`: https://en.wikipedia.org/wiki/Virtual_hosting
+.. _`Stack Overflow answer`: https://stackoverflow.com/questions/18578439/using-requests-with-tls-doesnt-give-sni-support/18579484#18579484
diff --git a/third_party/gsutil/third_party/requests/docs/community/out-there.rst b/third_party/gsutil/third_party/requests/docs/community/out-there.rst
new file mode 100644
index 00000000000..c33ab3c95be
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/community/out-there.rst
@@ -0,0 +1,22 @@
+Integrations
+============
+
+Python for iOS
+--------------
+
+Requests is built into the wonderful `Python for iOS `_ runtime!
+
+To give it a try, simply::
+
+ import requests
+
+
+Articles & Talks
+================
+- `Python for the Web `_ teaches how to use Python to interact with the web, using Requests.
+- `Daniel Greenfeld's Review of Requests `_
+- `My 'Python for Humans' talk `_ ( `audio `_ )
+- `Issac Kelly's 'Consuming Web APIs' talk `_
+- `Blog post about Requests via Yum `_
+- `Russian blog post introducing Requests `_
+- `Sending JSON in Requests `_
diff --git a/third_party/gsutil/third_party/requests/docs/community/recommended.rst b/third_party/gsutil/third_party/requests/docs/community/recommended.rst
new file mode 100644
index 00000000000..517f4b18952
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/community/recommended.rst
@@ -0,0 +1,62 @@
+.. _recommended:
+
+Recommended Packages and Extensions
+===================================
+
+Requests has a great variety of powerful and useful third-party extensions.
+This page provides an overview of some of the best of them.
+
+Certifi CA Bundle
+-----------------
+
+`Certifi`_ is a carefully curated collection of Root Certificates for
+validating the trustworthiness of SSL certificates while verifying the
+identity of TLS hosts. It has been extracted from the Requests project.
+
+.. _Certifi: https://github.com/certifi/python-certifi
+
+CacheControl
+------------
+
+`CacheControl`_ is an extension that adds a full HTTP cache to Requests. This
+makes your web requests substantially more efficient, and should be used
+whenever you're making a lot of web requests.
+
+.. _CacheControl: https://cachecontrol.readthedocs.io/en/latest/
+
+Requests-Toolbelt
+-----------------
+
+`Requests-Toolbelt`_ is a collection of utilities that some users of Requests may desire,
+but do not belong in Requests proper. This library is actively maintained
+by members of the Requests core team, and reflects the functionality most
+requested by users within the community.
+
+.. _Requests-Toolbelt: https://toolbelt.readthedocs.io/en/latest/index.html
+
+
+Requests-Threads
+----------------
+
+`Requests-Threads`_ is a Requests session that returns the amazing Twisted's awaitable Deferreds instead of Response objects. This allows the use of ``async``/``await`` keyword usage on Python 3, or Twisted's style of programming, if desired.
+
+.. _Requests-Threads: https://github.com/requests/requests-threads
+
+Requests-OAuthlib
+-----------------
+
+`requests-oauthlib`_ makes it possible to do the OAuth dance from Requests
+automatically. This is useful for the large number of websites that use OAuth
+to provide authentication. It also provides a lot of tweaks that handle ways
+that specific OAuth providers differ from the standard specifications.
+
+.. _requests-oauthlib: https://requests-oauthlib.readthedocs.io/en/latest/
+
+
+Betamax
+-------
+
+`Betamax`_ records your HTTP interactions so the NSA does not have to.
+A VCR imitation designed only for Python-Requests.
+
+.. _betamax: https://github.com/betamaxpy/betamax
diff --git a/third_party/gsutil/third_party/requests/docs/community/release-process.rst b/third_party/gsutil/third_party/requests/docs/community/release-process.rst
new file mode 100644
index 00000000000..4aa98f755e4
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/community/release-process.rst
@@ -0,0 +1,53 @@
+Release Process and Rules
+=========================
+
+.. versionadded:: v2.6.2
+
+Starting with the version to be released after ``v2.6.2``, the following rules
+will govern and describe how the Requests core team produces a new release.
+
+Major Releases
+--------------
+
+A major release will include breaking changes. When it is versioned, it will
+be versioned as ``vX.0.0``. For example, if the previous release was
+``v10.2.7`` the next version will be ``v11.0.0``.
+
+Breaking changes are changes that break backwards compatibility with prior
+versions. If the project were to change the ``text`` attribute on a
+``Response`` object to a method, that would only happen in a Major release.
+
+Major releases may also include miscellaneous bug fixes. The core developers of
+Requests are committed to providing a good user experience. This means we're
+also committed to preserving backwards compatibility as much as possible. Major
+releases will be infrequent and will need strong justifications before they are
+considered.
+
+Minor Releases
+--------------
+
+A minor release will not include breaking changes but may include miscellaneous
+bug fixes. If the previous version of Requests released was ``v10.2.7`` a minor
+release would be versioned as ``v10.3.0``.
+
+Minor releases will be backwards compatible with releases that have the same
+major version number. In other words, all versions that would start with
+``v10.`` should be compatible with each other.
+
+Hotfix Releases
+---------------
+
+A hotfix release will only include bug fixes that were missed when the project
+released the previous version. If the previous version of Requests released
+``v10.2.7`` the hotfix release would be versioned as ``v10.2.8``.
+
+Hotfixes will **not** include upgrades to vendored dependencies after
+``v2.6.2``
+
+Reasoning
+---------
+
+In the 2.5 and 2.6 release series, the Requests core team upgraded vendored
+dependencies and caused a great deal of headaches for both users and the core
+team. To reduce this pain, we're forming a concrete set of procedures so
+expectations will be properly set.
diff --git a/third_party/gsutil/third_party/requests/docs/community/support.rst b/third_party/gsutil/third_party/requests/docs/community/support.rst
new file mode 100644
index 00000000000..ee905f543df
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/community/support.rst
@@ -0,0 +1,31 @@
+.. _support:
+
+Support
+=======
+
+If you have questions or issues about Requests, there are several options:
+
+Stack Overflow
+--------------
+
+If your question does not contain sensitive (possibly proprietary)
+information or can be properly anonymized, please ask a question on
+`Stack Overflow `_
+and use the tag ``python-requests``.
+
+
+File an Issue
+-------------
+
+If you notice some unexpected behaviour in Requests, or want to see support
+for a new feature,
+`file an issue on GitHub `_.
+
+
+Send a Tweet
+------------
+
+If your question is less than 280 characters, feel free to send a tweet to
+`@nateprewitt `_,
+`@sethmlarson `_, or
+`@sigmavirus24 `_.
diff --git a/third_party/gsutil/third_party/requests/docs/community/updates.rst b/third_party/gsutil/third_party/requests/docs/community/updates.rst
new file mode 100644
index 00000000000..c787c45bcf1
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/community/updates.rst
@@ -0,0 +1,18 @@
+.. _updates:
+
+
+Community Updates
+=================
+
+If you'd like to stay up to date on the community and development of Requests,
+there are several options:
+
+
+GitHub
+------
+
+The best way to track the development of Requests is through
+`the GitHub repo `_.
+
+
+.. include:: ../../HISTORY.md
diff --git a/third_party/gsutil/third_party/requests/docs/community/vulnerabilities.rst b/third_party/gsutil/third_party/requests/docs/community/vulnerabilities.rst
new file mode 100644
index 00000000000..6a9c7d94d37
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/community/vulnerabilities.rst
@@ -0,0 +1,110 @@
+Vulnerability Disclosure
+========================
+
+If you think you have found a potential security vulnerability in requests,
+please email `Nate `_ and `Seth `_ directly. **Do not file a public issue.**
+
+Our PGP Key fingerprints are:
+
+- 8722 7E29 AD9C FF5C FAC3 EA6A 44D3 FF97 B80D C864 (`@nateprewitt `_)
+
+- EDD5 6765 A9D8 4653 CBC8 A134 51B0 6736 1740 F5FC (`@sethmlarson `_)
+
+You can also contact us on `Keybase `_ with the
+profiles above if desired.
+
+If English is not your first language, please try to describe the problem and
+its impact to the best of your ability. For greater detail, please use your
+native language and we will try our best to translate it using online services.
+
+Please also include the code you used to find the problem and the shortest
+amount of code necessary to reproduce it.
+
+Please do not disclose this to anyone else. We will retrieve a CVE identifier
+if necessary and give you full credit under whatever name or alias you provide.
+We will only request an identifier when we have a fix and can publish it in a
+release.
+
+We will respect your privacy and will only publicize your involvement if you
+grant us permission.
+
+Process
+-------
+
+This following information discusses the process the requests project follows
+in response to vulnerability disclosures. If you are disclosing a
+vulnerability, this section of the documentation lets you know how we will
+respond to your disclosure.
+
+Timeline
+~~~~~~~~
+
+When you report an issue, one of the project members will respond to you within
+two days *at the outside*. In most cases responses will be faster, usually
+within 12 hours. This initial response will at the very least confirm receipt
+of the report.
+
+If we were able to rapidly reproduce the issue, the initial response will also
+contain confirmation of the issue. If we are not, we will often ask for more
+information about the reproduction scenario.
+
+Our goal is to have a fix for any vulnerability released within two weeks of
+the initial disclosure. This may potentially involve shipping an interim
+release that simply disables function while a more mature fix can be prepared,
+but will in the vast majority of cases mean shipping a complete release as soon
+as possible.
+
+Throughout the fix process we will keep you up to speed with how the fix is
+progressing. Once the fix is prepared, we will notify you that we believe we
+have a fix. Often we will ask you to confirm the fix resolves the problem in
+your environment, especially if we are not confident of our reproduction
+scenario.
+
+At this point, we will prepare for the release. We will obtain a CVE number
+if one is required, providing you with full credit for the discovery. We will
+also decide on a planned release date, and let you know when it is. This
+release date will *always* be on a weekday.
+
+At this point we will reach out to our major downstream packagers to notify
+them of an impending security-related patch so they can make arrangements. In
+addition, these packagers will be provided with the intended patch ahead of
+time, to ensure that they are able to promptly release their downstream
+packages. Currently the list of people we actively contact *ahead of a public
+release* is:
+
+- Python Maintenance Team, Red Hat (python-maint@redhat.com)
+- Daniele Tricoli, Debian (@eriol)
+
+We will notify these individuals at least a week ahead of our planned release
+date to ensure that they have sufficient time to prepare. If you believe you
+should be on this list, please let one of the maintainers know at one of the
+email addresses at the top of this article.
+
+On release day, we will push the patch to our public repository, along with an
+updated changelog that describes the issue and credits you. We will then issue
+a PyPI release containing the patch.
+
+At this point, we will publicise the release. This will involve mails to
+mailing lists, Tweets, and all other communication mechanisms available to the
+core team.
+
+We will also explicitly mention which commits contain the fix to make it easier
+for other distributors and users to easily patch their own versions of requests
+if upgrading is not an option.
+
+Previous CVEs
+-------------
+
+- Fixed in 2.20.0
+ - `CVE 2018-18074 `_
+
+- Fixed in 2.6.0
+
+ - `CVE 2015-2296 `_,
+ reported by Matthew Daley of `BugFuzz `_.
+
+- Fixed in 2.3.0
+
+ - `CVE 2014-1829 `_
+
+ - `CVE 2014-1830 `_
diff --git a/third_party/gsutil/third_party/requests/docs/conf.py b/third_party/gsutil/third_party/requests/docs/conf.py
new file mode 100644
index 00000000000..edbd72ba823
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/conf.py
@@ -0,0 +1,386 @@
+# -*- coding: utf-8 -*-
+#
+# Requests documentation build configuration file, created by
+# sphinx-quickstart on Fri Feb 19 00:05:47 2016.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys
+import os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+# sys.path.insert(0, os.path.abspath('.'))
+
+# Insert Requests' path into the system.
+sys.path.insert(0, os.path.abspath(".."))
+sys.path.insert(0, os.path.abspath("_themes"))
+
+import requests
+
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+ "sphinx.ext.autodoc",
+ "sphinx.ext.intersphinx",
+ "sphinx.ext.todo",
+ "sphinx.ext.viewcode",
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ["_templates"]
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+# source_suffix = ['.rst', '.md']
+source_suffix = ".rst"
+
+# The encoding of source files.
+# source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = "index"
+
+# General information about the project.
+project = u"Requests"
+copyright = u'MMXVIX. A Kenneth Reitz Project'
+author = u"Kenneth Reitz"
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = requests.__version__
+# The full version, including alpha/beta/rc tags.
+release = requests.__version__
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+# today = ''
+# Else, today_fmt is used as the format for a strftime call.
+# today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ["_build"]
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+# default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+add_function_parentheses = False
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+# show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = "flask_theme_support.FlaskyStyle"
+
+# A list of ignored prefixes for module index sorting.
+# modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+# keep_warnings = False
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = True
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+html_theme = "alabaster"
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+html_theme_options = {
+ "show_powered_by": False,
+ "github_user": "requests",
+ "github_repo": "requests",
+ "github_banner": True,
+ "show_related": False,
+ "note_bg": "#FFF59C",
+}
+
+# Add any paths that contain custom themes here, relative to this directory.
+# html_theme_path = []
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# " v documentation".
+# html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+# html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+# html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+# html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ["_static"]
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+# html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+# html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+html_use_smartypants = False
+
+# Custom sidebar templates, maps document names to template names.
+html_sidebars = {
+ "index": ["sidebarintro.html", "sourcelink.html", "searchbox.html", "hacks.html"],
+ "**": [
+ "sidebarlogo.html",
+ "localtoc.html",
+ "relations.html",
+ "sourcelink.html",
+ "searchbox.html",
+ "hacks.html",
+ ],
+}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+# html_additional_pages = {}
+
+# If false, no module index is generated.
+# html_domain_indices = True
+
+# If false, no index is generated.
+# html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+# html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+html_show_sourcelink = False
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+html_show_sphinx = False
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+# html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+# html_file_suffix = None
+
+# Language to be used for generating the HTML full-text search index.
+# Sphinx supports the following languages:
+# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
+# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
+# html_search_language = 'en'
+
+# A dictionary with options for the search language support, empty by default.
+# Now only 'ja' uses this config value
+# html_search_options = {'type': 'default'}
+
+# The name of a javascript file (relative to the configuration directory) that
+# implements a search results scorer. If empty, the default will be used.
+# html_search_scorer = 'scorer.js'
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = "Requestsdoc"
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+ # The paper size ('letterpaper' or 'a4paper').
+ #'papersize': 'letterpaper',
+ # The font size ('10pt', '11pt' or '12pt').
+ #'pointsize': '10pt',
+ # Additional stuff for the LaTeX preamble.
+ #'preamble': '',
+ # Latex figure (float) alignment
+ #'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+# author, documentclass [howto, manual, or own class]).
+latex_documents = [
+ (master_doc, "Requests.tex", u"Requests Documentation", u"Kenneth Reitz", "manual")
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+# latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+# latex_use_parts = False
+
+# If true, show page references after internal links.
+# latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+# latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+# latex_appendices = []
+
+# If false, no module index is generated.
+# latex_domain_indices = True
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [(master_doc, "requests", u"Requests Documentation", [author], 1)]
+
+# If true, show URL addresses after external links.
+# man_show_urls = False
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+texinfo_documents = [
+ (
+ master_doc,
+ "Requests",
+ u"Requests Documentation",
+ author,
+ "Requests",
+ "One line description of project.",
+ "Miscellaneous",
+ )
+]
+
+# Documents to append as an appendix to all manuals.
+# texinfo_appendices = []
+
+# If false, no module index is generated.
+# texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+# texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+# texinfo_no_detailmenu = False
+
+
+# -- Options for Epub output ----------------------------------------------
+
+# Bibliographic Dublin Core info.
+epub_title = project
+epub_author = author
+epub_publisher = author
+epub_copyright = copyright
+
+# The basename for the epub file. It defaults to the project name.
+# epub_basename = project
+
+# The HTML theme for the epub output. Since the default themes are not
+# optimized for small screen space, using the same theme for HTML and epub
+# output is usually not wise. This defaults to 'epub', a theme designed to save
+# visual space.
+# epub_theme = 'epub'
+
+# The language of the text. It defaults to the language option
+# or 'en' if the language is not set.
+# epub_language = ''
+
+# The scheme of the identifier. Typical schemes are ISBN or URL.
+# epub_scheme = ''
+
+# The unique identifier of the text. This can be a ISBN number
+# or the project homepage.
+# epub_identifier = ''
+
+# A unique identification for the text.
+# epub_uid = ''
+
+# A tuple containing the cover image and cover page html template filenames.
+# epub_cover = ()
+
+# A sequence of (type, uri, title) tuples for the guide element of content.opf.
+# epub_guide = ()
+
+# HTML files that should be inserted before the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+# epub_pre_files = []
+
+# HTML files that should be inserted after the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+# epub_post_files = []
+
+# A list of files that should not be packed into the epub file.
+epub_exclude_files = ["search.html"]
+
+# The depth of the table of contents in toc.ncx.
+# epub_tocdepth = 3
+
+# Allow duplicate toc entries.
+# epub_tocdup = True
+
+# Choose between 'default' and 'includehidden'.
+# epub_tocscope = 'default'
+
+# Fix unsupported image types using the Pillow.
+# epub_fix_images = False
+
+# Scale large images.
+# epub_max_image_width = 0
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+# epub_show_urls = 'inline'
+
+# If false, no index is generated.
+# epub_use_index = True
+
+intersphinx_mapping = {
+ "python": ("https://docs.python.org/3/", None),
+ "urllib3": ("https://urllib3.readthedocs.io/en/latest", None),
+}
diff --git a/third_party/gsutil/third_party/requests/docs/dev/authors.rst b/third_party/gsutil/third_party/requests/docs/dev/authors.rst
new file mode 100644
index 00000000000..e9799a91421
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/dev/authors.rst
@@ -0,0 +1,4 @@
+Authors
+=======
+
+.. include:: ../../AUTHORS.rst
diff --git a/third_party/gsutil/third_party/requests/docs/dev/contributing.rst b/third_party/gsutil/third_party/requests/docs/dev/contributing.rst
new file mode 100644
index 00000000000..63bfdfdbf22
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/dev/contributing.rst
@@ -0,0 +1,208 @@
+.. _contributing:
+
+Contributor's Guide
+===================
+
+If you're reading this, you're probably interested in contributing to Requests.
+Thank you very much! Open source projects live-and-die based on the support
+they receive from others, and the fact that you're even considering
+contributing to the Requests project is *very* generous of you.
+
+This document lays out guidelines and advice for contributing to this project.
+If you're thinking of contributing, please start by reading this document and
+getting a feel for how contributing to this project works. If you have any
+questions, feel free to reach out to either `Nate Prewitt`_, `Ian Cordasco`_,
+or `Seth Michael Larson`_, the primary maintainers.
+
+.. _Ian Cordasco: http://www.coglib.com/~icordasc/
+.. _Nate Prewitt: https://www.nateprewitt.com/
+.. _Seth Michael Larson: https://sethmlarson.dev/
+
+The guide is split into sections based on the type of contribution you're
+thinking of making, with a section that covers general guidelines for all
+contributors.
+
+Be Cordial
+----------
+
+ **Be cordial or be on your way**. *—Kenneth Reitz*
+
+Requests has one very important rule governing all forms of contribution,
+including reporting bugs or requesting features. This golden rule is
+"`be cordial or be on your way`_".
+
+**All contributions are welcome**, as long as
+everyone involved is treated with respect.
+
+.. _be cordial or be on your way: https://kenreitz.org/essays/2013/01/27/be-cordial-or-be-on-your-way
+
+.. _early-feedback:
+
+Get Early Feedback
+------------------
+
+If you are contributing, do not feel the need to sit on your contribution until
+it is perfectly polished and complete. It helps everyone involved for you to
+seek feedback as early as you possibly can. Submitting an early, unfinished
+version of your contribution for feedback in no way prejudices your chances of
+getting that contribution accepted, and can save you from putting a lot of work
+into a contribution that is not suitable for the project.
+
+Contribution Suitability
+------------------------
+
+Our project maintainers have the last word on whether or not a contribution is
+suitable for Requests. All contributions will be considered carefully, but from
+time to time, contributions will be rejected because they do not suit the
+current goals or needs of the project.
+
+If your contribution is rejected, don't despair! As long as you followed these
+guidelines, you will have a much better chance of getting your next
+contribution accepted.
+
+
+Code Contributions
+------------------
+
+Steps for Submitting Code
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+When contributing code, you'll want to follow this checklist:
+
+1. Fork the repository on GitHub.
+2. Run the tests to confirm they all pass on your system. If they don't, you'll
+ need to investigate why they fail. If you're unable to diagnose this
+ yourself, raise it as a bug report by following the guidelines in this
+ document: :ref:`bug-reports`.
+3. Write tests that demonstrate your bug or feature. Ensure that they fail.
+4. Make your change.
+5. Run the entire test suite again, confirming that all tests pass *including
+ the ones you just added*.
+6. Send a GitHub Pull Request to the main repository's ``main`` branch.
+ GitHub Pull Requests are the expected method of code collaboration on this
+ project.
+
+The following sub-sections go into more detail on some of the points above.
+
+Code Review
+~~~~~~~~~~~
+
+Contributions will not be merged until they've been code reviewed. You should
+implement any code review feedback unless you strongly object to it. In the
+event that you object to the code review feedback, you should make your case
+clearly and calmly. If, after doing so, the feedback is judged to still apply,
+you must either apply the feedback or withdraw your contribution.
+
+New Contributors
+~~~~~~~~~~~~~~~~
+
+If you are new or relatively new to Open Source, welcome! Requests aims to
+be a gentle introduction to the world of Open Source. If you're concerned about
+how best to contribute, please consider mailing a maintainer (listed above) and
+asking for help.
+
+Please also check the :ref:`early-feedback` section.
+
+Kenneth Reitz's Code Styleâ„¢
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The Requests codebase uses the `PEP 8`_ code style.
+
+In addition to the standards outlined in PEP 8, we have a few guidelines:
+
+- Line-length can exceed 79 characters, to 100, when convenient.
+- Line-length can exceed 100 characters, when doing otherwise would be *terribly* inconvenient.
+- Always use single-quoted strings (e.g. ``'#flatearth'``), unless a single-quote occurs within the string.
+
+Additionally, one of the styles that PEP8 recommends for `line continuations`_
+completely lacks all sense of taste, and is not to be permitted within
+the Requests codebase::
+
+ # Aligned with opening delimiter.
+ foo = long_function_name(var_one, var_two,
+ var_three, var_four)
+
+No. Just don't. Please. This is much better::
+
+ foo = long_function_name(
+ var_one,
+ var_two,
+ var_three,
+ var_four,
+ )
+
+Docstrings are to follow the following syntaxes::
+
+ def the_earth_is_flat():
+ """NASA divided up the seas into thirty-three degrees."""
+ pass
+
+::
+
+ def fibonacci_spiral_tool():
+ """With my feet upon the ground I lose myself / between the sounds
+ and open wide to suck it in. / I feel it move across my skin. / I'm
+ reaching up and reaching out. / I'm reaching for the random or
+ whatever will bewilder me. / Whatever will bewilder me. / And
+ following our will and wind we may just go where no one's been. /
+ We'll ride the spiral to the end and may just go where no one's
+ been.
+
+ Spiral out. Keep going...
+ """
+ pass
+
+All functions, methods, and classes are to contain docstrings. Object data
+model methods (e.g. ``__repr__``) are typically the exception to this rule.
+
+Thanks for helping to make the world a better place!
+
+.. _PEP 8: https://pep8.org/
+.. _line continuations: https://www.python.org/dev/peps/pep-0008/#indentation
+
+Documentation Contributions
+---------------------------
+
+Documentation improvements are always welcome! The documentation files live in
+the ``docs/`` directory of the codebase. They're written in
+`reStructuredText`_, and use `Sphinx`_ to generate the full suite of
+documentation.
+
+When contributing documentation, please do your best to follow the style of the
+documentation files. This means a soft-limit of 79 characters wide in your text
+files and a semi-formal, yet friendly and approachable, prose style.
+
+When presenting Python code, use single-quoted strings (``'hello'`` instead of
+``"hello"``).
+
+.. _reStructuredText: http://docutils.sourceforge.net/rst.html
+.. _Sphinx: http://sphinx-doc.org/index.html
+
+
+.. _bug-reports:
+
+Bug Reports
+-----------
+
+Bug reports are hugely important! Before you raise one, though, please check
+through the `GitHub issues`_, **both open and closed**, to confirm that the bug
+hasn't been reported before. Duplicate bug reports are a huge drain on the time
+of other contributors, and should be avoided as much as possible.
+
+.. _GitHub issues: https://github.com/psf/requests/issues
+
+
+Feature Requests
+----------------
+
+Requests is in a perpetual feature freeze, only the BDFL can add or approve of
+new features. The maintainers believe that Requests is a feature-complete
+piece of software at this time.
+
+One of the most important skills to have while maintaining a largely-used
+open source project is learning the ability to say "no" to suggested changes,
+while keeping an open ear and mind.
+
+If you believe there is a feature missing, feel free to raise a feature
+request, but please do be aware that the overwhelming likelihood is that your
+feature request will not be accepted.
diff --git a/third_party/gsutil/third_party/requests/docs/index.rst b/third_party/gsutil/third_party/requests/docs/index.rst
new file mode 100644
index 00000000000..dbcaa55740e
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/index.rst
@@ -0,0 +1,140 @@
+.. Requests documentation master file, created by
+ sphinx-quickstart on Sun Feb 13 23:54:25 2011.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+Requests: HTTP for Humansâ„¢
+==========================
+
+Release v\ |version|. (:ref:`Installation `)
+
+
+.. image:: https://pepy.tech/badge/requests/month
+ :target: https://pepy.tech/project/requests
+ :alt: Requests Downloads Per Month Badge
+
+.. image:: https://img.shields.io/pypi/l/requests.svg
+ :target: https://pypi.org/project/requests/
+ :alt: License Badge
+
+.. image:: https://img.shields.io/pypi/wheel/requests.svg
+ :target: https://pypi.org/project/requests/
+ :alt: Wheel Support Badge
+
+.. image:: https://img.shields.io/pypi/pyversions/requests.svg
+ :target: https://pypi.org/project/requests/
+ :alt: Python Version Support Badge
+
+**Requests** is an elegant and simple HTTP library for Python, built for human beings.
+
+-------------------
+
+**Behold, the power of Requests**::
+
+ >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
+ >>> r.status_code
+ 200
+ >>> r.headers['content-type']
+ 'application/json; charset=utf8'
+ >>> r.encoding
+ 'utf-8'
+ >>> r.text
+ '{"type":"User"...'
+ >>> r.json()
+ {'private_gists': 419, 'total_private_repos': 77, ...}
+
+See `similar code, sans Requests `_.
+
+
+**Requests** allows you to send HTTP/1.1 requests extremely easily.
+There's no need to manually add query strings to your
+URLs, or to form-encode your POST data. Keep-alive and HTTP connection pooling
+are 100% automatic, thanks to `urllib3 `_.
+
+Beloved Features
+----------------
+
+Requests is ready for today's web.
+
+- Keep-Alive & Connection Pooling
+- International Domains and URLs
+- Sessions with Cookie Persistence
+- Browser-style SSL Verification
+- Automatic Content Decoding
+- Basic/Digest Authentication
+- Elegant Key/Value Cookies
+- Automatic Decompression
+- Unicode Response Bodies
+- HTTP(S) Proxy Support
+- Multipart File Uploads
+- Streaming Downloads
+- Connection Timeouts
+- Chunked Requests
+- ``.netrc`` Support
+
+Requests officially supports Python 2.7 & 3.6+, and runs great on PyPy.
+
+
+The User Guide
+--------------
+
+This part of the documentation, which is mostly prose, begins with some
+background information about Requests, then focuses on step-by-step
+instructions for getting the most out of Requests.
+
+.. toctree::
+ :maxdepth: 2
+
+ user/install
+ user/quickstart
+ user/advanced
+ user/authentication
+
+
+The Community Guide
+-------------------
+
+This part of the documentation, which is mostly prose, details the
+Requests ecosystem and community.
+
+.. toctree::
+ :maxdepth: 2
+
+ community/recommended
+ community/faq
+ community/out-there
+ community/support
+ community/vulnerabilities
+ community/release-process
+
+.. toctree::
+ :maxdepth: 1
+
+ community/updates
+
+The API Documentation / Guide
+-----------------------------
+
+If you are looking for information on a specific function, class, or method,
+this part of the documentation is for you.
+
+.. toctree::
+ :maxdepth: 2
+
+ api
+
+
+The Contributor Guide
+---------------------
+
+If you want to contribute to the project, this part of the documentation is for
+you.
+
+.. toctree::
+ :maxdepth: 3
+
+ dev/contributing
+ dev/authors
+
+There are no more guides. You are now guideless.
+Good luck.
diff --git a/third_party/gsutil/third_party/requests/docs/make.bat b/third_party/gsutil/third_party/requests/docs/make.bat
new file mode 100644
index 00000000000..9eaf9b88930
--- /dev/null
+++ b/third_party/gsutil/third_party/requests/docs/make.bat
@@ -0,0 +1,263 @@
+@ECHO OFF
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+ set SPHINXBUILD=sphinx-build
+)
+set BUILDDIR=_build
+set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
+set I18NSPHINXOPTS=%SPHINXOPTS% .
+if NOT "%PAPER%" == "" (
+ set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
+ set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
+)
+
+if "%1" == "" goto help
+
+if "%1" == "help" (
+ :help
+ echo.Please use `make ^