<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://test.amule.szerverem.hu/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://test.amule.szerverem.hu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=199.203.130.250</id>
		<title>AMule Project FAQ - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://test.amule.szerverem.hu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=199.203.130.250"/>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/Special:Contributions/199.203.130.250"/>
		<updated>2026-04-05T21:04:13Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.3</generator>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/AMuleWeb_PHP</id>
		<title>AMuleWeb PHP</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/AMuleWeb_PHP"/>
				<updated>2006-10-16T16:46:12Z</updated>
		
		<summary type="html">&lt;p&gt;199.203.130.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aMuleWeb PHP manual ==&lt;br /&gt;
By Froenchenko Leonid lfroen@gmail.com [[User:Lfroen|Lfroen]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[aMuleWeb]] is an add-on program, used together with [[aMule]] and serves as webserver, allowing user to control aMule through browser interface. aMuleWeb works very similar to regular and wide-known webservers such as Apache[http://www.apache.org] - set of HTML pages stored on server side (called &amp;quot;template&amp;quot;). Those pages contains embedded server-side script, which is running when user requests the page. Resulting page is returned to user.&lt;br /&gt;
&lt;br /&gt;
The scripting language, [[aMuleWeb]] using is very similar to widely known &amp;quot;PHP&amp;quot;, developed and distributed by Zend company [http://www.zend.com]. Since aMuleWeb implementation is differ from original PHP, I will call it &amp;quot;aMuleWeb PHP&amp;quot; for reader convenience. &amp;quot;The PHP&amp;quot; language, will be referred as &amp;quot;real PHP&amp;quot; or just &amp;quot;PHP&amp;quot; to make difference between the two.&lt;br /&gt;
&lt;br /&gt;
== Conventions ==&lt;br /&gt;
Language elements, reserved words are marked bold: '''keyword'''.&lt;br /&gt;
&lt;br /&gt;
== Core language constructs ==&lt;br /&gt;
aMuleWeb PHP have same basic language elements as real PHP version 5. Several things supported or implemented differently:&lt;br /&gt;
OO constructs (classes) may pass syntax check, but they are not supported in any way.&lt;br /&gt;
'''include''' construct is parse-time directive (in contrary to PHP, where you can do it in run-time and check result of &amp;quot;include&amp;quot; operation)&lt;br /&gt;
There's no '''list''' at all.&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
There's scalar (referred as $var) and array (referred as @var) variables. Similarly to real PHP all variables are local, unless defined otherwise.&lt;br /&gt;
Variables, marked as '''global''' must be declated ''before'' this definition. Example:&lt;br /&gt;
&lt;br /&gt;
 $a = 1;&lt;br /&gt;
&lt;br /&gt;
 function foo()&lt;br /&gt;
 {&lt;br /&gt;
 	global $a;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
References to variable and to array members are fully supported:&lt;br /&gt;
 $a = &amp;amp;$b;&lt;br /&gt;
 $c = &amp;amp;$c[5];&lt;br /&gt;
&lt;br /&gt;
*Notes:&lt;br /&gt;
**Reference of variable by name like $$var is not supported.&lt;br /&gt;
**Integer variables are 64-bit unsigned integers&lt;br /&gt;
**Variable substitution inside of &amp;quot;&amp;quot; is not supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Predefined global variables ====&lt;br /&gt;
Similarly to real PHP, there's set of special, or predefined variables, which have special meaning. Those variables may indicate input received from user, or they may control script execution.&lt;br /&gt;
&lt;br /&gt;
=== Operators ===&lt;br /&gt;
All PHP operators supported. Implicit type conversion is supported too, as common in scripting languages. This way 1 + &amp;quot;2&amp;quot; = 3.&lt;br /&gt;
Arrays are converted to integer in &amp;quot;Perl style&amp;quot; i.e. in case array variable is used in integer context, number of members is taken as value.&lt;br /&gt;
*Prefix and postfix ++ and -- are not distinguished (prefix form used)&lt;br /&gt;
&lt;br /&gt;
=== Subroutines ===&lt;br /&gt;
'''function''' construct is fully supported. In contrary to regular PHP function must be defined prior calling. It is error to do otherwise. Functions can be recursive, thou.&lt;br /&gt;
Real PHP allows to omit parameters for function calls (default parameters). aMuleWeb PHP does not support this conventions, which mean that all parameters must be present when function is called. This is not an error, and parameters will receive predefined values when omit: 0 for numbers, &amp;quot;&amp;quot; (empty string) for strings.&lt;br /&gt;
Parameters can be references or arrays with usual meaning.&lt;br /&gt;
*Function can return value but not reference.&lt;br /&gt;
&lt;br /&gt;
== Library ==&lt;br /&gt;
PHP language is known to have huge library of useful subroutines. Those subroutines are used to perform various tasks, varying from simple string manipulation to complex databases and OS binding. aMuleWeb PHP on the other hand, have very limited library. &lt;br /&gt;
There's several reasons behind this fact. First of all, it is out of question to completely re-create PHP library, given it's size and complexity. Second, and most important, it's not really needed. aMuleWeb PHP is built to serve very specific application, and used to create very specific kind of pages. It will not be used to create e-commerce site or webmail. List below summarize supported functions:&lt;br /&gt;
&lt;br /&gt;
*var_dump($var): [http://www.zend.com/manual/function.var-dump.php]&lt;br /&gt;
*strlen($string):[http://www.zend.com/manual/function.strlen.php]&lt;br /&gt;
*usort($var): [http://www.zend.com/manual/function.usort.php]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== aMule binding ==&lt;br /&gt;
The whole purpose of [[aMuleWeb]] control [[aMule]]. Script provide convinient way to access underlying aMule datastructure for both queries and actions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
Real PHP have wide range of authentication and session management possibilities. In aMuleWeb PHP, status is different. Both authentication and session management are not part of scripting language. Instead, they are implemented as part of in webserver itself, and running invisibly for script engine.&lt;/div&gt;</summary>
		<author><name>199.203.130.250</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/AMuleWeb_PHP</id>
		<title>AMuleWeb PHP</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/AMuleWeb_PHP"/>
				<updated>2006-10-16T16:45:34Z</updated>
		
		<summary type="html">&lt;p&gt;199.203.130.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aMuleWeb PHP manual ==&lt;br /&gt;
By Froenchenko Leonid lfroen@gmail.com [[User:Lfroen|Lfroen]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[aMuleWeb]] is an add-on program, used together with [[aMule]] and serves as webserver, allowing user to control aMule through browser interface. aMuleWeb works very similar to regular and wide-known webservers such as Apache[http://www.apache.org] - set of HTML pages stored on server side (called &amp;quot;template&amp;quot;). Those pages contains embedded server-side script, which is running when user requests the page. Resulting page is returned to user.&lt;br /&gt;
&lt;br /&gt;
The scripting language, [[aMuleWeb]] using is very similar to widely known &amp;quot;PHP&amp;quot;, developed and distributed by Zend company [http://www.zend.com]. Since aMuleWeb implementation is differ from original PHP, I will call it &amp;quot;aMuleWeb PHP&amp;quot; for reader convenience. &amp;quot;The PHP&amp;quot; language, will be referred as &amp;quot;real PHP&amp;quot; or just &amp;quot;PHP&amp;quot; to make difference between the two.&lt;br /&gt;
&lt;br /&gt;
== Conventions ==&lt;br /&gt;
Language elements, reserved words are marked bold: '''keyword'''.&lt;br /&gt;
&lt;br /&gt;
== Core language constructs ==&lt;br /&gt;
aMuleWeb PHP have same basic language elements as real PHP version 5. Several things supported or implemented differently:&lt;br /&gt;
OO constructs (classes) may pass syntax check, but they are not supported in any way.&lt;br /&gt;
'''include''' construct is parse-time directive (in contrary to PHP, where you can do it in run-time and check result of &amp;quot;include&amp;quot; operation)&lt;br /&gt;
There's no '''list''' at all.&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
There's scalar (referred as $var) and array (referred as @var) variables. Similarly to real PHP all variables are local, unless defined otherwise.&lt;br /&gt;
Variables, marked as '''global''' must be declated ''before'' this definition. Example:&lt;br /&gt;
&lt;br /&gt;
 $a = 1;&lt;br /&gt;
&lt;br /&gt;
 function foo()&lt;br /&gt;
 {&lt;br /&gt;
 	global $a;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
References to variable and to array members are fully supported:&lt;br /&gt;
 $a = &amp;amp;$b;&lt;br /&gt;
 $c = &amp;amp;$c[5];&lt;br /&gt;
&lt;br /&gt;
*Notes:&lt;br /&gt;
**Reference of variable by name like $$var is not supported.&lt;br /&gt;
**Integer variables are 64-bit unsigned integers&lt;br /&gt;
**Variable substitution inside of &amp;quot;&amp;quot; is not supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Predefined global variables ====&lt;br /&gt;
Similarly to real PHP, there's set of special, or predefined variables, which have special meaning. Those variables may indicate input received from user, or they may control script execution.&lt;br /&gt;
&lt;br /&gt;
=== Operators ===&lt;br /&gt;
All PHP operators supported. Implicit type conversion is supported too, as common in scripting languages. This way 1 + &amp;quot;2&amp;quot; = 3.&lt;br /&gt;
Arrays are converted to integer in &amp;quot;Perl style&amp;quot; i.e. in case array variable is used in integer context, number of members is taken as value.&lt;br /&gt;
*Prefix and postfix ++ and -- are not distinguished (prefix form used)&lt;br /&gt;
&lt;br /&gt;
=== Subroutines ===&lt;br /&gt;
'''function''' construct is fully supported. In contrary to regular PHP function must be defined prior calling. It is error to do otherwise. Functions can be recursive, thou.&lt;br /&gt;
Real PHP allows to omit parameters for function calls (default parameters). aMuleWeb PHP does not support this conventions, which mean that all parameters must be present when function is called. This is not an error, and parameters will receive predefined values when omit: 0 for numbers, &amp;quot;&amp;quot; (empty string) for strings.&lt;br /&gt;
Parameters can be references or arrays with usual meaning.&lt;br /&gt;
*Function can return value but not reference.&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
PHP language is known to have huge library of useful subroutines. Those subroutines are used to perform various tasks, varying from simple string manipulation to complex databases and OS binding. aMuleWeb PHP on the other hand, have very limited library. &lt;br /&gt;
There's several reasons behind this fact. First of all, it is out of question to completely re-create PHP library, given it's size and complexity. Second, and most important, it's not really needed. aMuleWeb PHP is built to serve very specific application, and used to create very specific kind of pages. It will not be used to create e-commerce site or webmail. List below summarize supported functions:&lt;br /&gt;
&lt;br /&gt;
*var_dump($var): [http://www.zend.com/manual/function.var-dump.php]&lt;br /&gt;
*strlen($string):[http://www.zend.com/manual/function.strlen.php]&lt;br /&gt;
*usort($var): [http://www.zend.com/manual/function.usort.php]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== aMule binding ===&lt;br /&gt;
The whole purpose of [[aMuleWeb]] control [[aMule]]. Script provide convinient way to access underlying aMule datastructure for both queries and actions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
Real PHP have wide range of authentication and session management possibilities. In aMuleWeb PHP, status is different. Both authentication and session management are not part of scripting language. Instead, they are implemented as part of in webserver itself, and running invisibly for script engine.&lt;/div&gt;</summary>
		<author><name>199.203.130.250</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/AMuleWeb_PHP</id>
		<title>AMuleWeb PHP</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/AMuleWeb_PHP"/>
				<updated>2006-10-16T16:44:32Z</updated>
		
		<summary type="html">&lt;p&gt;199.203.130.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== aMuleWeb PHP manual ==&lt;br /&gt;
By Froenchenko Leonid lfroen@gmail.com [[User:Lfroen|Lfroen]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[aMuleWeb]] is an add-on program, used together with [[aMule]] and serves as webserver, allowing user to control aMule through browser interface. aMuleWeb works very similar to regular and wide-known webservers such as Apache[http://www.apache.org] - set of HTML pages stored on server side (called &amp;quot;template&amp;quot;). Those pages contains embedded server-side script, which is running when user requests the page. Resulting page is returned to user.&lt;br /&gt;
&lt;br /&gt;
The scripting language, [[aMuleWeb]] using is very similar to widely known &amp;quot;PHP&amp;quot;, developed and distributed by Zend company [http://www.zend.com]. Since aMuleWeb implementation is differ from original PHP, I will call it &amp;quot;aMuleWeb PHP&amp;quot; for reader convenience. &amp;quot;The PHP&amp;quot; language, will be referred as &amp;quot;real PHP&amp;quot; or just &amp;quot;PHP&amp;quot; to make difference between the two.&lt;br /&gt;
&lt;br /&gt;
== Conventions ==&lt;br /&gt;
Language elements, reserved words are marked bold: '''keyword'''.&lt;br /&gt;
&lt;br /&gt;
== Core language constructs ==&lt;br /&gt;
aMuleWeb PHP have same basic language elements as real PHP version 5. Several things supported or implemented differently:&lt;br /&gt;
OO constructs (classes) may pass syntax check, but they are not supported in any way.&lt;br /&gt;
'''include''' construct is parse-time directive (in contrary to PHP, where you can do it in run-time and check result of &amp;quot;include&amp;quot; operation)&lt;br /&gt;
There's no '''list''' at all.&lt;br /&gt;
&lt;br /&gt;
==== Variables ===&lt;br /&gt;
There's scalar (referred as $var) and array (referred as @var) variables. Similarly to real PHP all variables are local, unless defined otherwise.&lt;br /&gt;
Variables, marked as '''global''' must be declated ''before'' this definition. Example:&lt;br /&gt;
&lt;br /&gt;
 $a = 1;&lt;br /&gt;
&lt;br /&gt;
 function foo()&lt;br /&gt;
 {&lt;br /&gt;
 	global $a;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
References to variable and to array members are fully supported:&lt;br /&gt;
 $a = &amp;amp;$b;&lt;br /&gt;
 $c = &amp;amp;$c[5];&lt;br /&gt;
&lt;br /&gt;
*Notes:&lt;br /&gt;
**Reference of variable by name like $$var is not supported.&lt;br /&gt;
**Integer variables are 64-bit unsigned integers&lt;br /&gt;
**Variable substitution inside of &amp;quot;&amp;quot; is not supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Predefined global variables ====&lt;br /&gt;
Similarly to real PHP, there's set of special, or predefined variables, which have special meaning. Those variables may indicate input received from user, or they may control script execution.&lt;br /&gt;
&lt;br /&gt;
=== Operators ===&lt;br /&gt;
All PHP operators supported. Implicit type conversion is supported too, as common in scripting languages. This way 1 + &amp;quot;2&amp;quot; = 3.&lt;br /&gt;
Arrays are converted to integer in &amp;quot;Perl style&amp;quot; i.e. in case array variable is used in integer context, number of members is taken as value.&lt;br /&gt;
*Prefix and postfix ++ and -- are not distinguished (prefix form used)&lt;br /&gt;
&lt;br /&gt;
=== Subroutines ===&lt;br /&gt;
'''function''' construct is fully supported. In contrary to regular PHP function must be defined prior calling. It is error to do otherwise. Functions can be recursive, thou.&lt;br /&gt;
Real PHP allows to omit parameters for function calls (default parameters). aMuleWeb PHP does not support this conventions, which mean that all parameters must be present when function is called. This is not an error, and parameters will receive predefined values when omit: 0 for numbers, &amp;quot;&amp;quot; (empty string) for strings.&lt;br /&gt;
Parameters can be references or arrays with usual meaning.&lt;br /&gt;
*Function can return value but not reference.&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
PHP language is known to have huge library of useful subroutines. Those subroutines are used to perform various tasks, varying from simple string manipulation to complex databases and OS binding. aMuleWeb PHP on the other hand, have very limited library. &lt;br /&gt;
There's several reasons behind this fact. First of all, it is out of question to completely re-create PHP library, given it's size and complexity. Second, and most important, it's not really needed. aMuleWeb PHP is built to serve very specific application, and used to create very specific kind of pages. It will not be used to create e-commerce site or webmail. List below summarize supported functions:&lt;br /&gt;
&lt;br /&gt;
*var_dump($var): [http://www.zend.com/manual/function.var-dump.php]&lt;br /&gt;
*strlen($string):[http://www.zend.com/manual/function.strlen.php]&lt;br /&gt;
*usort($var): [http://www.zend.com/manual/function.usort.php]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== aMule binding ===&lt;br /&gt;
The whole purpose of [[aMuleWeb]] control [[aMule]]. Script provide convinient way to access underlying aMule datastructure for both queries and actions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
Real PHP have wide range of authentication and session management possibilities. In aMuleWeb PHP, status is different. Both authentication and session management are not part of scripting language. Instead, they are implemented as part of in webserver itself, and running invisibly for script engine.&lt;/div&gt;</summary>
		<author><name>199.203.130.250</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/AMuleWeb_PHP</id>
		<title>AMuleWeb PHP</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/AMuleWeb_PHP"/>
				<updated>2006-10-16T15:00:15Z</updated>
		
		<summary type="html">&lt;p&gt;199.203.130.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= aMuleWeb PHP manual =&lt;br /&gt;
By Froenchenko Leonid lfroen@gmail.com [[User:Lfroen|Lfroen]]&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
[[aMuleWeb]] is an add-on program, used together with [[aMule]] and serves as webserver, allowing user to control aMule through browser interface. aMuleWeb works very similar to regular and wide-known webservers such as Apache[http://www.apache.org] - set of HTML pages stored on server side (called &amp;quot;template&amp;quot;). Those pages contains embedded server-side script, which is running when user requests the page. Resulting page is returned to user.&lt;br /&gt;
&lt;br /&gt;
The scripting language, [[aMuleWeb]] using is very similar to widely known &amp;quot;PHP&amp;quot;, developed and distributed by Zend company [http://www.zend.com]. Since aMuleWeb implementation is differ from original PHP, I will call it &amp;quot;aMuleWeb PHP&amp;quot; for reader convenience. &amp;quot;The PHP&amp;quot; language, will be referred as &amp;quot;real PHP&amp;quot; or just &amp;quot;PHP&amp;quot; to make difference between the two.&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
Language elements, reserved words are marked bold: '''keyword'''.&lt;br /&gt;
&lt;br /&gt;
=== Core language constructs ===&lt;br /&gt;
aMuleWeb PHP have same basic language elements as real PHP version 5. Several things supported or implemented differently:&lt;br /&gt;
OO constructs (classes) may pass syntax check, but they are not supported in any way.&lt;br /&gt;
'''include''' construct is parse-time directive (in contrary to PHP, where you can do it in run-time and check result of &amp;quot;include&amp;quot; operation)&lt;br /&gt;
There's no '''list''' at all.&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
There's scalar (referred as $var) and array (referred as @var) variables. Similarly to real PHP all variables are local, unless defined otherwise.&lt;br /&gt;
Variables, marked as '''global''' must be declated ''before'' this definition. Example:&lt;br /&gt;
&lt;br /&gt;
 $a = 1;&lt;br /&gt;
&lt;br /&gt;
 function foo()&lt;br /&gt;
 {&lt;br /&gt;
 	global $a;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
References to variable and to array members are fully supported:&lt;br /&gt;
 $a = &amp;amp;$b;&lt;br /&gt;
 $c = &amp;amp;$c[5];&lt;br /&gt;
&lt;br /&gt;
*Notes:&lt;br /&gt;
**Reference of variable by name like $$var is not supported.&lt;br /&gt;
**Integer variables are 64-bit unsigned integers&lt;br /&gt;
**Variable substitution inside of &amp;quot;&amp;quot; is not supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Predefined global variables ====&lt;br /&gt;
Similarly to real PHP, there's set of special, or predefined variables, which have special meaning. Those variables may indicate input received from user, or they may control script execution.&lt;br /&gt;
&lt;br /&gt;
==== Operators ====&lt;br /&gt;
All PHP operators supported. Implicit type conversion is supported too, as common in scripting languages. This way 1 + &amp;quot;2&amp;quot; = 3.&lt;br /&gt;
Arrays are converted to integer in &amp;quot;Perl style&amp;quot; i.e. in case array variable is used in integer context, number of members is taken as value.&lt;br /&gt;
*Prefix and postfix ++ and -- are not distinguished (prefix form used)&lt;br /&gt;
&lt;br /&gt;
==== Subroutines ====&lt;br /&gt;
'''function''' construct is fully supported. In contrary to regular PHP function must be defined prior calling. It is error to do otherwise. Functions can be recursive, thou.&lt;br /&gt;
Real PHP allows to omit parameters for function calls (default parameters). aMuleWeb PHP does not support this conventions, which mean that all parameters must be present when function is called. This is not an error, and parameters will receive predefined values when omit: 0 for numbers, &amp;quot;&amp;quot; (empty string) for strings.&lt;br /&gt;
Parameters can be references or arrays with usual meaning.&lt;br /&gt;
*Function can return value but not reference.&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
PHP language is known to have huge library of useful subroutines. Those subroutines are used to perform various tasks, varying from simple string manipulation to complex databases and OS binding. aMuleWeb PHP on the other hand, have very limited library. &lt;br /&gt;
There's several reasons behind this fact. First of all, it is out of question to completely re-create PHP library, given it's size and complexity. Second, and most important, it's not really needed. aMuleWeb PHP is built to serve very specific application, and used to create very specific kind of pages. It will not be used to create e-commerce site or webmail. List below summarize supported functions:&lt;br /&gt;
&lt;br /&gt;
*var_dump($var): [http://www.zend.com/manual/function.var-dump.php]&lt;br /&gt;
*strlen($string):[http://www.zend.com/manual/function.strlen.php]&lt;br /&gt;
*usort($var): [http://www.zend.com/manual/function.usort.php]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== aMule binding ===&lt;br /&gt;
The whole purpose of [[aMuleWeb]] control [[aMule]]. Script provide convinient way to access underlying aMule datastructure for both queries and actions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
Real PHP have wide range of authentication and session management possibilities. In aMuleWeb PHP, status is different. Both authentication and session management are not part of scripting language. Instead, they are implemented as part of in webserver itself, and running invisibly for script engine.&lt;/div&gt;</summary>
		<author><name>199.203.130.250</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/AMuleWeb</id>
		<title>AMuleWeb</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/AMuleWeb"/>
				<updated>2006-10-16T07:23:45Z</updated>
		
		<summary type="html">&lt;p&gt;199.203.130.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
aMuleWeb is a utility that listens for [http://www.w3.org/MarkUp HTTP] connections at port 4711 (by default, although it can be changed through '''Preferences''') and allows remote users to control [[aMule]] using just a web browser. &lt;br /&gt;
&lt;br /&gt;
[[aMule]] itself doesn't support listening to [http://www.w3.org/MarkUp HTTP] connections, so the external utility aMuleWeb is used. This utility listens for remote connections, and once the link between aMuleWeb and the remote user is established, it connects to the [[aMule]] main program using the [[External Connections]] mechanism.&lt;br /&gt;
&lt;br /&gt;
== Compiling aMuleWeb ==&lt;br /&gt;
&lt;br /&gt;
[[Compile]] [[aMule]] normally, just add ''--enable-amuleweb'' when running ''configure''.&lt;br /&gt;
&lt;br /&gt;
== Setting up aMuleWeb with [[aMule]] ==&lt;br /&gt;
&lt;br /&gt;
=== aMuleWeb with [[aMule]] 2.0.0 or later ===&lt;br /&gt;
&lt;br /&gt;
*For users running the monotlithic [[aMule]] application:&lt;br /&gt;
**Go to &amp;quot;Preferences&amp;quot;-&amp;gt;&amp;quot;Remote Controls&amp;quot; (in [[aMule]]) and...&lt;br /&gt;
***Enable &amp;quot;Accept External Connections&amp;quot;.&lt;br /&gt;
***Enable &amp;quot;Use TCP ports instead of unix local sockets&amp;quot; (This option doesn't exist since version 2.1.0)&lt;br /&gt;
***Enter a password for [[External Connections]]. If you don't do this, aMuleWeb will not communicate with [[aMule]].&lt;br /&gt;
::'''NOTE:''' When you change your aMuleWeb and [[External Connections]] ports here, make sure to restart [[aMule]].&lt;br /&gt;
&lt;br /&gt;
*For users running the [[aMule|aMule daemon]]:&lt;br /&gt;
**Shutdown [[aMule|aMuled]] if it is still running.&lt;br /&gt;
**Run ''amuleweb -w'' to generate ''~/.aMule/remote.conf'' and edit it for these options. It previously were on ''~/.aMule/amule.conf'', but the lines are still on this file, so edit both if in doubt.&lt;br /&gt;
***''[ExternalConnect]'' &amp;lt;- Section header&lt;br /&gt;
***''AcceptExternalConnections=1'' &amp;lt;-- To enable [[aMule]] listening for [[External Connections]].&lt;br /&gt;
***''ECUseTCPPort=1'' &amp;lt;-- To use the [http://www.faqs.org/faqs/internet/tcp-ip/resource-list TCP] port. Very important since [http://www.unix.org Unix] sockets are disabled.&lt;br /&gt;
***''ECPassword=ca3c365274907c6fd527068788e14639'' &amp;lt;-- To find the MD5 string for your password, do:&lt;br /&gt;
:::''$ echo -n yourpasswordhere | md5sum | cut -d ' ' -f 1''&lt;br /&gt;
:::''ca3c365274907c6fd527068788e14639''&lt;br /&gt;
**If you get ''FATAL ERROR: Cannot find template: default'' it's because you didn't run ''make install''. If you don't want to install aMule, copy the ''src/webserver/default/'' directory into ''~/.aMule/webserver/'' (create it if needed). If you want any other template (probably ''php-default''), copy it too. Then go back to the previous step.&lt;br /&gt;
**Restart [[aMule|aMule]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Every password must be md5sum,also webserver one/s. aMule embedded webserver works without remote.conf,you just need to edit ''amule.conf''. A good trick if you have somewhere an X server is to configure amule using the GUI and then copy the ''amule.conf'' configuration file where you want to run the daemon.&lt;br /&gt;
&lt;br /&gt;
Thanks to [[User:Stefanero|Stefanero]], from who I shamelessly stole a lot from his tutorial.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' aMuleWeb uses cookies to hold session id. Make sure that cookies are enabled in your browser.&lt;br /&gt;
&lt;br /&gt;
=== aMuleWeb with [[aMule]] pre-2.0.0 final ===&lt;br /&gt;
&lt;br /&gt;
Please check [[Webserver-old|this page]] for archived instructions (educational purposes!).&lt;br /&gt;
&lt;br /&gt;
== Connecting to aMuleWeb ==&lt;br /&gt;
&lt;br /&gt;
To run aMuleWeb run '''''amuleweb''''' on a terminal.&lt;br /&gt;
&lt;br /&gt;
Once aMuleWeb is running, open a web browser and connect to:&lt;br /&gt;
&lt;br /&gt;
''http://host:port''&lt;br /&gt;
&lt;br /&gt;
where ''host'' stands for your host's name (try with ''localhost'') and port stands for the aMuleWeb port ('''NOT''' the [[External Connections]] port).&lt;br /&gt;
&lt;br /&gt;
For example: ''http://localhost:4711''&lt;br /&gt;
&lt;br /&gt;
''Shakraw''&lt;br /&gt;
&lt;br /&gt;
== Standard ports ==&lt;br /&gt;
&lt;br /&gt;
The ports can be set to anything, but this are the most used (the standard ones):&lt;br /&gt;
&lt;br /&gt;
*[[External Connections]]: 4712&lt;br /&gt;
*amuleweb: 4711&lt;br /&gt;
&lt;br /&gt;
Make sure you do not confuse with what each of them is.&lt;br /&gt;
&lt;br /&gt;
== Template (skin) location ==&lt;br /&gt;
&lt;br /&gt;
aMuleWeb looks for its files in a number of places:&lt;br /&gt;
*In your home directory: ''$HOME/.aMule/webserver/''[skin name]''/''&lt;br /&gt;
*And at it's install location, in this order (by default, ''/usr/local/share/amule/webserver'' if you compiled [[aMule]], or ''/usr/share/amule/webserver'' if you installed it from a package).&lt;br /&gt;
&lt;br /&gt;
Default template name is 'default'.&lt;br /&gt;
&lt;br /&gt;
If, '''after installing''' [[aMule]], aMuleWeb refuses to run because of not being able to load template:&lt;br /&gt;
*Please report this situation to us, and then&lt;br /&gt;
*Create the directories ''webserver/default'' in the ''.aMule'' subdirectory of your home directory, and copy the contents of the ''src/webserver'' directory there from the [[aMule]] tarball (I mean to ''$HOME/.aMule/webserver/default'').&lt;br /&gt;
&lt;br /&gt;
'''[[User:GonoszTopi|GonoszTopi]]'''&lt;br /&gt;
&lt;br /&gt;
== How to start [[aMuled|aMule Daemon]] and aMuleWeb with your computer ==&lt;br /&gt;
&lt;br /&gt;
The best way to start both the processes aMule Daemon and aMuleWeb with your server is to add a shell script ''/etc/init.d/amule'' like this:&lt;br /&gt;
&lt;br /&gt;
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;
 DAEMON=/usr/bin/amuled&lt;br /&gt;
 WEB=/usr/bin/amuleweb&lt;br /&gt;
 NAME=amuled&lt;br /&gt;
 DESC=amuled&lt;br /&gt;
 RUNAMULE=no&lt;br /&gt;
 USER=youramuleuser&lt;br /&gt;
 &lt;br /&gt;
 test -x $DAEMON || exit 0&lt;br /&gt;
 &lt;br /&gt;
 # Include amule defaults if available&lt;br /&gt;
 if [ -f /etc/default/amule ] ; then&lt;br /&gt;
     . /etc/default/amule&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
 if [ &amp;quot;$RUNAMULE&amp;quot; != &amp;quot;yes&amp;quot; ];then&lt;br /&gt;
     echo &amp;quot;Amule not to be started. Edit /etc/default/amule first.&amp;quot;&lt;br /&gt;
     exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 set -e&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
   start)&lt;br /&gt;
     echo -n &amp;quot;Starting $DESC: &amp;quot;&lt;br /&gt;
        su $USER -c &amp;quot;$DAEMON -f&amp;quot;&lt;br /&gt;
        sleep 20&lt;br /&gt;
        su $USER -c &amp;quot;$WEB --quiet &amp;amp;&amp;quot;&lt;br /&gt;
     echo &amp;quot;$NAME.&amp;quot;&lt;br /&gt;
     ;;&lt;br /&gt;
   stop)&lt;br /&gt;
     echo -n &amp;quot;Stopping $DESC: &amp;quot;&lt;br /&gt;
        killall --quiet --ignore-case $WEB&lt;br /&gt;
        killall --quiet --ignore-case $DAEMON&lt;br /&gt;
     echo &amp;quot;$NAME.&amp;quot;&lt;br /&gt;
     ;;&lt;br /&gt;
   restart|force-reload)&lt;br /&gt;
     echo -n &amp;quot;Restarting $DESC: &amp;quot;&lt;br /&gt;
        killall --quiet --ignore-case $WEB&lt;br /&gt;
        killall --quiet --ignore-case $DAEMON&lt;br /&gt;
     sleep 1&lt;br /&gt;
        su $USER -c &amp;quot;$DAEMON -f&amp;quot;&lt;br /&gt;
        sleep 20&lt;br /&gt;
        su $USER -c &amp;quot;$WEB --quiet &amp;amp;&amp;quot;&lt;br /&gt;
     echo &amp;quot;$NAME.&amp;quot;&lt;br /&gt;
     ;;&lt;br /&gt;
   *)&lt;br /&gt;
     N=/etc/init.d/$NAME&lt;br /&gt;
     echo &amp;quot;Usage: $N {start|stop|restart|force-reload}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
     exit 1&lt;br /&gt;
     ;;&lt;br /&gt;
 esac&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
Then just set that script to be run at start up. On [[Debian]] this would be doen with the following command:&lt;br /&gt;
&lt;br /&gt;
 update-rc.d amule defaults&lt;br /&gt;
&lt;br /&gt;
Then, for the deamons to start you just have to create a file ''/etc/default/amule'' which contains a single line:&lt;br /&gt;
&lt;br /&gt;
 RUNAMULE=yes&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
== Where to report problems and questions? ==&lt;br /&gt;
&lt;br /&gt;
For Problems or Questions just report on http://forum.amule.org forum or join [[IRC]] channel [irc://irc.freenode.net/amule #amule] at [irc://irc.freenode.net irc.freenode.net]&lt;br /&gt;
&lt;br /&gt;
== Other sources of information ==&lt;br /&gt;
&lt;br /&gt;
Read the aMuleWeb man page, which is available in English, French, German, Hungarian and Spanish.&lt;br /&gt;
&lt;br /&gt;
For further information read the [[FAQ_webserver|aMuleWeb FAQ]].&lt;/div&gt;</summary>
		<author><name>199.203.130.250</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/AMuleWeb</id>
		<title>AMuleWeb</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/AMuleWeb"/>
				<updated>2006-01-02T06:41:49Z</updated>
		
		<summary type="html">&lt;p&gt;199.203.130.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
aMuleWeb is a utility that listens for [http://www.w3.org/MarkUp HTTP] connections at port 4711 (by default, although it can be changed through '''Preferences''') and allows remote users to control [[aMule]] using just a web browser. &lt;br /&gt;
&lt;br /&gt;
[[aMule]] itself doesn't support listening to [http://www.w3.org/MarkUp HTTP] connections, so the external utility aMuleWeb is used. This utility listens for remote connections, and once the link between aMuleWeb and the remote user is established, it connects to the [[aMule]] main program using the [[External Connections]] mechanism.&lt;br /&gt;
&lt;br /&gt;
== Compiling aMuleWeb ==&lt;br /&gt;
&lt;br /&gt;
[[Compile]] [[aMule]] normally, just add ''--enable-amuleweb'' when running ''configure''.&lt;br /&gt;
&lt;br /&gt;
== Setting up aMuleWeb with [[aMule]] ==&lt;br /&gt;
&lt;br /&gt;
=== aMuleWeb with [[aMule]] 2.0.0 or later ===&lt;br /&gt;
&lt;br /&gt;
*For users running the monotlithic [[aMule]] application:&lt;br /&gt;
**Go to &amp;quot;Preferences&amp;quot;-&amp;gt;&amp;quot;Remote Controls&amp;quot; (in [[aMule]]) and...&lt;br /&gt;
***Enable &amp;quot;Accept External Connections&amp;quot;.&lt;br /&gt;
***Enable &amp;quot;Use TCP ports instead of unix local sockets&amp;quot; (This option doesn't exist since version 2.1.0)&lt;br /&gt;
***Enter a password for [[External Connections]]. If you don't do this, aMuleWeb will not communicate with [[aMule]].&lt;br /&gt;
::'''NOTE:''' When you change your aMuleWeb and [[External Connections]] ports here, make sure to restart [[aMule]].&lt;br /&gt;
&lt;br /&gt;
*For users running the [[aMule|aMule daemon]]:&lt;br /&gt;
**Shutdown [[aMule|aMuled]] if it is still running.&lt;br /&gt;
**Run ''amuleweb -w'' to generate ''~/.aMule/remote.conf'' and edit it for these options. It previously were on ''~/.aMule/amule.conf'', but the lines are still on this file, so edit both if in doubt.&lt;br /&gt;
***''[ExternalConnect]'' &amp;lt;- Section header&lt;br /&gt;
***''AcceptExternalConnections=1'' &amp;lt;-- To enable [[aMule]] listening for [[External Connections]].&lt;br /&gt;
***''ECUseTCPPort=1'' &amp;lt;-- To use the [http://www.faqs.org/faqs/internet/tcp-ip/resource-list TCP] port. Very important since [http://www.unix.org Unix] sockets are disabled.&lt;br /&gt;
***''ECPassword=ca3c365274907c6fd527068788e14639'' &amp;lt;-- To find the MD5 string for your password, do:&lt;br /&gt;
:::''$ echo -n yourpasswordhere | md5sum | cut -d ' ' -f 1''&lt;br /&gt;
:::''ca3c365274907c6fd527068788e14639''&lt;br /&gt;
**If you get ''FATAL ERROR: Cannot find template: default'' it's because you didn't run ''make install''. If you don't want to install aMule, copy the ''src/webserver/default/'' directory into ''~/.aMule/webserver/'' (create it if needed). If you want any other template (probably ''php-default''), copy it too. Then go back to the previous step.&lt;br /&gt;
**Restart [[aMule|aMuled]]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' In [[aMule]] version 2.0.0 and later you don't need to do any copy/link of [[aMuleWeb|webserver]] files.&lt;br /&gt;
&lt;br /&gt;
'''NOTE2:''' Every password must be md5sum,also webserver one/s. aMule embedded webserver works without remote.conf,you just need to edit ''amule.conf''. A good trick if you have somewhere an X server is to configure amule using the GUI and then copy the ''amule.conf'' configuration file where you want to run the daemon.&lt;br /&gt;
&lt;br /&gt;
Thanks to [[User:Stefanero|Stefanero]], from who I shamelessly stole a lot from his tutorial.&lt;br /&gt;
&lt;br /&gt;
'''NOTE3:''' aMuleWeb uses cookies to hold session id. Make sure that cookies are enabled in your browser.&lt;br /&gt;
&lt;br /&gt;
=== aMuleWeb with [[aMule]] pre-2.0.0 final ===&lt;br /&gt;
&lt;br /&gt;
Please check [[Webserver-old|this page]] for archived instructions (educational purposes!).&lt;br /&gt;
&lt;br /&gt;
== Connecting to aMuleWeb ==&lt;br /&gt;
&lt;br /&gt;
To run aMuleWeb run '''''amuleweb''''' on a terminal.&lt;br /&gt;
&lt;br /&gt;
Once aMuleWeb is running, open a web browser and connect to:&lt;br /&gt;
&lt;br /&gt;
''http://host:port''&lt;br /&gt;
&lt;br /&gt;
where ''host'' stands for your host's name (try with ''localhost'') and port stands for the aMuleWeb port ('''NOT''' the [[External Connections]] port).&lt;br /&gt;
&lt;br /&gt;
For example: ''http://localhost:4711''&lt;br /&gt;
&lt;br /&gt;
''Shakraw''&lt;br /&gt;
&lt;br /&gt;
== Standard ports ==&lt;br /&gt;
&lt;br /&gt;
The ports can be set to anything, but this are the most used (the standard ones):&lt;br /&gt;
&lt;br /&gt;
*[[External Connections]]: 4712&lt;br /&gt;
*amuleweb: 4711&lt;br /&gt;
&lt;br /&gt;
Make sure you do not confuse with what each of them is.&lt;br /&gt;
&lt;br /&gt;
== Skin support ==&lt;br /&gt;
&lt;br /&gt;
aMuleWeb now looks for its files in a number of places:&lt;br /&gt;
*In your home directory: ''$HOME/.aMule/webserver/''[skin name]''/''&lt;br /&gt;
*And at it's install location, in this order (by default, ''/usr/local/share/amule/webserver'' if you compiled [[aMule]], or ''/usr/share/amule/webserver'' if you installed it from a package).&lt;br /&gt;
&lt;br /&gt;
Default skin (template) name is 'default'.&lt;br /&gt;
&lt;br /&gt;
If, '''after installing''' [[aMule]], aMuleWeb refuses to run because of not being able to load template:&lt;br /&gt;
*Please report this situation to us, and then&lt;br /&gt;
*Create the directories ''webserver/default'' in the ''.aMule'' subdirectory of your home directory, and copy the contents of the ''src/webserver'' directory there from the [[aMule]] tarball (I mean to ''$HOME/.aMule/webserver/default'').&lt;br /&gt;
&lt;br /&gt;
'''[[User:GonoszTopi|GonoszTopi]]'''&lt;br /&gt;
&lt;br /&gt;
== How to start [[aMule Daemon|aMuled]] and aMuleWeb with your computer ==&lt;br /&gt;
&lt;br /&gt;
The best way to start both the processes aMule Daemon and aMuleWeb with your server is to add a shell script ''/etc/init.d/amule'' like this:&lt;br /&gt;
&lt;br /&gt;
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;
 DAEMON=/usr/bin/amuled&lt;br /&gt;
 WEB=/usr/bin/amuleweb&lt;br /&gt;
 NAME=amuled&lt;br /&gt;
 DESC=amuled&lt;br /&gt;
 RUNAMULE=no&lt;br /&gt;
 &lt;br /&gt;
 test -x $DAEMON || exit 0&lt;br /&gt;
 &lt;br /&gt;
 # Include amule defaults if available&lt;br /&gt;
 if [ -f /etc/default/amule ] ; then&lt;br /&gt;
     . /etc/default/amule&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
 if [ &amp;quot;$RUNAMULE&amp;quot; != &amp;quot;yes&amp;quot; ];then&lt;br /&gt;
     echo &amp;quot;Amule not to be started. Edit /etc/default/amule first.&amp;quot;&lt;br /&gt;
     exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 set -e&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
   start)&lt;br /&gt;
     echo -n &amp;quot;Starting $DESC: &amp;quot;&lt;br /&gt;
        su youramuleuser -c &amp;quot;$DAEMON -f&amp;quot;&lt;br /&gt;
        su youramuleuser -c &amp;quot;$WEB --quiet &amp;amp;&amp;quot;&lt;br /&gt;
     echo &amp;quot;$NAME.&amp;quot;&lt;br /&gt;
     ;;&lt;br /&gt;
   stop)&lt;br /&gt;
     echo -n &amp;quot;Stopping $DESC: &amp;quot;&lt;br /&gt;
        killall --quiet --ignore-case $WEB&lt;br /&gt;
        killall --quiet --ignore-case $DAEMON&lt;br /&gt;
     echo &amp;quot;$NAME.&amp;quot;&lt;br /&gt;
     ;;&lt;br /&gt;
   restart|force-reload)&lt;br /&gt;
     echo -n &amp;quot;Restarting $DESC: &amp;quot;&lt;br /&gt;
        killall --quiet --ignore-case $WEB&lt;br /&gt;
        killall --quiet --ignore-case $DAEMON&lt;br /&gt;
     sleep 1&lt;br /&gt;
        su youramuleuser -c &amp;quot;$DAEMON -f&amp;quot;&lt;br /&gt;
        su youramuleuser -c &amp;quot;$WEB --quiet &amp;amp;&amp;quot;&lt;br /&gt;
     echo &amp;quot;$NAME.&amp;quot;&lt;br /&gt;
     ;;&lt;br /&gt;
   *)&lt;br /&gt;
     N=/etc/init.d/$NAME&lt;br /&gt;
     echo &amp;quot;Usage: $N {start|stop|restart|force-reload}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
     exit 1&lt;br /&gt;
     ;;&lt;br /&gt;
 esac&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
Then just set that script to be run at start up. On [[Debian]] this would be doen with the following command:&lt;br /&gt;
&lt;br /&gt;
 ln -s /etc/init.d/amule /etc/rc2.d/S61amule&lt;br /&gt;
&lt;br /&gt;
Then, for the deamons to start you just have to create a file ''/etc/default/amule'' which contains a single line:&lt;br /&gt;
&lt;br /&gt;
 RUNAMULE=yes&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
== Where to report problems and questions? ==&lt;br /&gt;
&lt;br /&gt;
For Problems or Questions just report on http://forum.amule.org forum or join [[IRC]] channel [irc://irc.freenode.net/amule #amule] at [irc://irc.freenode.net irc.freenode.net]&lt;br /&gt;
&lt;br /&gt;
== Other sources of information ==&lt;br /&gt;
&lt;br /&gt;
Read the aMuleWeb man page, which is available in English, French, German, Hungarian and Spanish.&lt;br /&gt;
&lt;br /&gt;
For further information read the [[FAQ_webserver|aMuleWeb FAQ]].&lt;/div&gt;</summary>
		<author><name>199.203.130.250</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/FAQ_network</id>
		<title>FAQ network</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/FAQ_network"/>
				<updated>2005-03-01T15:13:14Z</updated>
		
		<summary type="html">&lt;p&gt;199.203.130.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Network speed: what you should know before asking questions =&lt;br /&gt;
 by Froenchenko Leonid, lfroen@gmail.com&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Preface ==&lt;br /&gt;
The purpose of this document is to clarify different issues regarding network &lt;br /&gt;
speed that pops up from time to time in amule forum. Generally speaking, there're several reasons for questions about &amp;quot;amule network&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
* Speed reported by amule doesn't match provider given rate&lt;br /&gt;
* Poor performance of amule itself or another network application on the same computer&lt;br /&gt;
* What are key factors influencing network performance while amule is running&lt;br /&gt;
&lt;br /&gt;
Intended audience for this document are users who want to get better understanding of network functionality in general and in practical implication to amule functionality.&lt;br /&gt;
&lt;br /&gt;
This page, however, is not to be seen as comprehensive general purpose &amp;quot;Network &lt;br /&gt;
FAQ&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
== Network speed - how much is it? ==&lt;br /&gt;
While talking about network speed, people are using &amp;quot;bps&amp;quot; units, which mean &lt;br /&gt;
&amp;quot;bits per second&amp;quot;. The reason for ''bit'' rather that ''byte'' is pretty &lt;br /&gt;
much historical, but also have engineering motivation behind. &lt;br /&gt;
&lt;br /&gt;
This motivation comes from the fact, that not all networks in the world are transferring bytes.&lt;br /&gt;
&lt;br /&gt;
There's also convention to use capital &amp;quot;B&amp;quot; in &amp;quot;Bps&amp;quot; when speed is marked &lt;br /&gt;
in &amp;quot;bytes per second&amp;quot;. However, this convention is not widely accepted. Particularly, organizations like IETF and IEEE are stick to original &amp;quot;bps&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
== Prefixes ==&lt;br /&gt;
Since their invention, networks made quite a progress, and now we have networks &lt;br /&gt;
that transfers thousands and millions bits and more bits per second. For marking those speeds, prefixes ''&amp;quot;kilo&amp;quot;'', ''&amp;quot;mega&amp;quot;'', ''&amp;quot;giga&amp;quot;'', ''&amp;quot;tera&amp;quot;'' etc. are used. &lt;br /&gt;
&lt;br /&gt;
It is a &amp;lt;u&amp;gt;common mistake&amp;lt;/u&amp;gt; to think that values with those prefixes are the same as in computer science, i.e. powers of 2. The truth is that, for historical reasons, prefixes in networking have a decimal base, and not a binary one.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
 title=&amp;quot;Table 1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;th valign=&amp;quot;middle&amp;quot; title=&amp;quot;Table 1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 bgcolor=&amp;quot;#33ff33&amp;quot;&amp;gt;Prefix&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot;&amp;gt;meaning in computers&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th valign=&amp;quot;middle&amp;quot; title=&amp;quot;Table 1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 bgcolor=&amp;quot;#33ff33&amp;quot;&amp;gt;meaning in networks&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot;&amp;gt;difference, %%&amp;lt;/th&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;K (kilo)&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;2^10 = 1024&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;10^3 = 1000&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;2%&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;M (mega)&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;2^20 = 1,048,576&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;10^6 = 1,000,000&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;5%&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;G (giga)&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;2^30 = 1,073,741,624&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;10^9 = 1,000,000,000&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;7%&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;T (tera)&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;2^40 = 1,099,511,627,776&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;10^12 = 1,000,000,000,000&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;9%&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;   &lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see from the table above the error in calculation is about 5% when the prefix is incorrectly interpreted. Please note that the speed your provider tells you is &amp;quot;speed in network&amp;quot;, i.e. calculated on decimal base.&lt;br /&gt;
&lt;br /&gt;
For example when your provider tells you that your link is &amp;quot;ADSL 256/128&amp;quot; you &lt;br /&gt;
should understand that he means 256000/128000 bps. Which means, that the speed of your connection is 32000/16000 bps.&lt;br /&gt;
&lt;br /&gt;
== Protocol overhead - what is it about ==&lt;br /&gt;
When amule is running, it constantly &amp;quot;talks&amp;quot; with other clients and servers. &lt;br /&gt;
This data exchange is needed to identify itself, request information about &lt;br /&gt;
available sources and files, perform searches and so on. &lt;br /&gt;
&lt;br /&gt;
Since this information has no use for the user itself, it's called &amp;quot;overhead&amp;quot; i.e. inevitable addition to the data you actually want to upload or download. &lt;br /&gt;
&lt;br /&gt;
aMule calls this &amp;quot;''connection overhead''&amp;quot;. However, the number amule presents, includes only the size of the actual data that amule itself is sending to the network stack. Later, this data is sent down to the net with more overhead - now of network protocols. How much is it - lets see that in the next section.&lt;br /&gt;
 &lt;br /&gt;
== Network overhead ==&lt;br /&gt;
First of all - we're talking about IPv4 network. Once upon a time, there &lt;br /&gt;
was only one type of IP network. Now there are two - IP version 4, the old&lt;br /&gt;
we all know; and IP version 6 - the new protocol made to fix the limitations of IPv4. &lt;br /&gt;
&lt;br /&gt;
ED2K protocol by design, is unable to talk over IPv6 network, so users who have it (in Japan and China for example) will not be able to connect &amp;quot;as is&amp;quot;. Using IPv4 means, that each packet (TCP, UDP, ICMP) will have IPv4 header.&lt;br /&gt;
&lt;br /&gt;
The minimum size of this header is 20 bytes. Header can have optional parts (each 4 bytes) and it's up to your provider - for example my adds 1 option dword. &amp;lt;-- WTF?&lt;br /&gt;
&lt;br /&gt;
When talking to other thing on ed2k network, amule uses the widely known TCP protocol. UDP is also used, but on a much smaller scale. As the reader might know, TCP is a reliable protocol, i.e. it's guaranteed that data which sent from one side will arrive on the other or an error will be reported.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, TCP send its own data in addition to the actual transfer. This data includes TCP client initial negotiation, checksums, sequence numbers and acknowledgments. All this is in the ''TCP header'' which is added to each packet sent. The size of this header is 20 bytes minimum.&lt;br /&gt;
&lt;br /&gt;
While being small overhead for large bulk transfer, it can take significant part of bandwidth when small amounts of data are being exchanged. &amp;lt;u&amp;gt;This is exactly what happens on source discovery part of amule&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Our client is trying to establish a connection and negotiate with a large number of other clients. Doing this, amule opens new TCP connections &amp;lt;u&amp;gt;''all the time''&amp;lt;/u&amp;gt;. The amount of those connections is controlled by the ''&amp;quot;Maximum number of connections in 5 seconds&amp;quot;'' setting in the preferences. &lt;br /&gt;
&lt;br /&gt;
A typical number is about 100. Each TCP connection results in at least 3 packets traveling the net - one is a SYN packet, i.e. connection request, and one an ACK or a RST when the connection is accepted or refused, and SYN+ACK to establish the session. &lt;br /&gt;
&lt;br /&gt;
There's more overhead of DNS queries when an address is resolved, retries when a host doesn't reply and so on.&lt;br /&gt;
 &lt;br /&gt;
=== On low level ===&lt;br /&gt;
After passing TCP and IP layers packets go down to the network interface &lt;br /&gt;
driver. The kind of this driver depends on the way your computer is connected to the internet. For simplicity sake we will assume that this computer is connected to the ISP directly, i.e. you have no LAN (or switch or router) between. &lt;br /&gt;
&lt;br /&gt;
Common setups that I'm aware of:&lt;br /&gt;
 &lt;br /&gt;
* Analog modem, connected to telephone line (ISDN modem falls in this category too)&lt;br /&gt;
* Cable modem, connected through ethernet, ISP gives you an IP address through DHCP&lt;br /&gt;
* Cable modem, connected through ethernet, ISP requires you to configure PPPoE or PPTP tunnel&lt;br /&gt;
* ADSL modem, connected through ethernet. You must have a PPPoE or PPTP tunnel&lt;br /&gt;
* Variation of above - modem connected to PC by USB.&lt;br /&gt;
 &lt;br /&gt;
In each of above setups there are different protocols in use, and different headers added to transmitted packets. But there's one important thing to note: &amp;lt;u&amp;gt;''ethernet frames traveling between cable/ADSL modem and PC, and don't reach the ISP''&amp;lt;/u&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
And consequently they are not counted in rate calculations. PPPoE and &lt;br /&gt;
PPTP headers, on the contrary &amp;lt;u&amp;gt;''do reach the ISP''&amp;lt;/u&amp;gt;. Whether or not &lt;br /&gt;
your particular provider includes them in rate calculations I obviously have &lt;br /&gt;
no idea about. For this reason I will exclude those headers from my calculations. &lt;br /&gt;
&lt;br /&gt;
If you think that your ISP includes it, add 4 bytes to the size of each packet.&lt;br /&gt;
 &lt;br /&gt;
=== Example ===&lt;br /&gt;
Let's see how much network overhead we have on a typical network. Our connection is a cable modem connected via an ethernet link to a PC directly (no router between them). &lt;br /&gt;
&lt;br /&gt;
In this setup we have IPv4 packets sent over ethernet. &lt;br /&gt;
&lt;br /&gt;
Lets say we have 10 new connections opened each second, and all are being accepted (successfully established TCP session). This alone sums up to (I'm counting data going up - from my computer to the net):&lt;br /&gt;
&lt;br /&gt;
''10 connection * 2 packets * (20 bytes of TCP + 20 bytes of IPv4) = 800 bytes of overhead.''&lt;br /&gt;
&lt;br /&gt;
This means that we are starting with 1.16*8 Kbps of &amp;quot;''invisible&amp;quot;''&lt;br /&gt;
overhead caused by the very way the network works. Now, let's assume that&lt;br /&gt;
after each connection is established our amule sends something to the other side and waits to receive an answer.&lt;br /&gt;
&lt;br /&gt;
''Total of 800 bytes + 800 bytes = 1600 bytes per second = 6400 bps = 6.4 Kbps''&lt;br /&gt;
&lt;br /&gt;
What we have here is 6.4 Kbps of network overhead alone. Taking into account &lt;br /&gt;
that amule has other data to send (uploads) and it is not the only network &lt;br /&gt;
application running we will have the following picture: &lt;br /&gt;
&lt;br /&gt;
Most likely the link to your provider is not that fast. aMule will &amp;lt;u&amp;gt;''try''&amp;lt;/u&amp;gt; to open 10 connections per second and will &amp;lt;u&amp;gt;''try''&amp;lt;/u&amp;gt; to upload on the specified speed. &lt;br /&gt;
&lt;br /&gt;
Your operating system will share all available bandwidth between those and between amule and other network applications (browser for example). Actual results will vary depending on specific OS settings.&lt;br /&gt;
&lt;br /&gt;
== ACK bottleneck ==&lt;br /&gt;
In all calculations above there was one assumption - zero download. But downloading is what amule was built for. So let's examine how the overhead &lt;br /&gt;
above affects your downloading speed. The answer is in TCP protocol. &lt;br /&gt;
&lt;br /&gt;
When TCP is sending data, it requires that the other side acknowledge the reception. So if client A is sending data to client B by TCP, B has to send a special ACK packets to A which tells B &amp;quot;ok, I got it&amp;quot;. If, however, A doesn't receive the ACK packets in time, he will assume that either packet is lost. &lt;br /&gt;
&lt;br /&gt;
So, without going deeply into TCP specification: &amp;lt;u&amp;gt;''if B fails to send ACK to A, as a result A will transmit slower''&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now let's see the situation in aMule. We saw in the previous chapter, that the uplink stream is congested by connection requests and uploads. As a result, there's a good chance that ACK packets for a file we are downloading &amp;lt;u&amp;gt;''will not be sent on time''&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The remote party will notice this and slow down. This is one more reason why the upstream should better not be too congested.&lt;br /&gt;
 &lt;br /&gt;
== Is there anything I can do? ==&lt;br /&gt;
OK, now that you understood why your network is so slow while amule is &lt;br /&gt;
running you will maybe look for a way to fix this. The answer in 2 words: &amp;quot;rate limit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first thing you should do is to assign realistic rate limits in amule &lt;br /&gt;
itself. If you have a uplink rate of 128 Kbps don't set amules upload limit to &lt;br /&gt;
16 (kilobytes per second) just because 128/8 = 16.&lt;br /&gt;
&lt;br /&gt;
A better, but far more complicated solution is to use the QoS and packet scheduling services of your OS. For example, you can give a higher priority to ACK packets to solve the above mentioned &amp;quot;ACK bottleneck&amp;quot; problem. &lt;br /&gt;
&lt;br /&gt;
The QoS topic, however, is beyond scope of this article.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Router (switch, home network): is there any difference? ==&lt;br /&gt;
When the cable coming from your ISP is connected to some switching or routing &lt;br /&gt;
device, which in turn is connected to several PC's, bandwidth is shared between &lt;br /&gt;
them. &lt;br /&gt;
&lt;br /&gt;
So, having N computers connected, an ideal device would simply provide &lt;br /&gt;
each one of them with 1/N of the total bandwidth. The situation may vary in real life, and your particular device may have different idea about fairness. &lt;br /&gt;
&lt;br /&gt;
Since you're not going to have the hardware specs of your router chipset the only advice here is &amp;quot;try and see yourself&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Multiple links ==&lt;br /&gt;
Until now, we talked about computers that are connected to the network through&lt;br /&gt;
single interface. While being most frequent, this is not mandatory. A user&lt;br /&gt;
may choose to connect via 2 (or more links) provided by different ISP's.&lt;br /&gt;
There're 2 reasons for this decision that I know about: link redundancy and&lt;br /&gt;
load balancing.&lt;br /&gt;
&lt;br /&gt;
=== Link redundancy ===&lt;br /&gt;
In a case of link redundancy second link becomes operational when primary&lt;br /&gt;
link fails. This can be done automatically, or by explicit user command.&lt;br /&gt;
When this setup used, amule along with other network applications must be&lt;br /&gt;
restarted when links are being switched. This will allow to bind new address,&lt;br /&gt;
reconnect to server and receive new id. If amule is connected via &amp;amp;nbsp;NAT&lt;br /&gt;
enabled router (it doesn't matter if you have low or high id), and links&lt;br /&gt;
are switched &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;on the router&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;, restart not needed.&lt;br /&gt;
&lt;br /&gt;
=== Load balancing ===&lt;br /&gt;
This is far more complicated case. Both (all) links are simultaneously active,&lt;br /&gt;
and traffic is being distributed between them. The problem is that amule&lt;br /&gt;
bind &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;all interfaces on the system&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; i.e. 0.0.0.0. But, on ed2k&lt;br /&gt;
your id is your IP address, &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;and you can not have 2&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
So, being short: that problem is that amule does not explicitly choose source&lt;br /&gt;
address for &amp;lt;i&amp;gt;&amp;lt;u&amp;gt;outgoing&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt; tcp connections. Note, that it &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;doesn't&lt;br /&gt;
matter&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; on which interface it listening. This is exactly &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;opposite&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
from &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;server&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; applications line ftp or www server. When client&lt;br /&gt;
tries to connect to server he discover its address by resolving DNS. Resolver&lt;br /&gt;
reply will contain all IP addresses of specified host, and client should&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;try them all&amp;lt;/u&amp;gt;&amp;lt;/i&amp;gt;. Server, in turn, may choose not to listen on&lt;br /&gt;
one of them and thus prevent client from using this interface. In our case&lt;br /&gt;
amule &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;is a client&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;, and ed2k server discover its address from&lt;br /&gt;
source IP in connection request. That's where ed2k server will try to connect.&lt;br /&gt;
If connection succeed - client assigned high id, if not - low. The rest you&lt;br /&gt;
know.&lt;br /&gt;
The only solution in this situation (until amule will have an ability to&lt;br /&gt;
bind specific address) is to use amule on your &amp;quot;primary&amp;quot; link.&amp;lt;br&amp;gt;&lt;br /&gt;
You can, however, cause linux to send packet through interface of your choice.&lt;br /&gt;
But, most probably they will be dropped by ISP router as &amp;quot;spoofed&amp;quot; because&lt;br /&gt;
they source IP address doesn't match the address ISP assigned to that interface.&lt;/div&gt;</summary>
		<author><name>199.203.130.250</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/FAQ_network</id>
		<title>FAQ network</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/FAQ_network"/>
				<updated>2005-02-27T13:21:04Z</updated>
		
		<summary type="html">&lt;p&gt;199.203.130.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Network speed: what you should know before asking questions&amp;lt;/h1&amp;gt;&lt;br /&gt;
 by Froenchenko Leonid, &amp;lt;a href=&amp;quot;lfroen@gmail.com&amp;quot;&amp;gt;lfroen@gmail.com&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h2&amp;gt;Preface&amp;lt;/h2&amp;gt;&lt;br /&gt;
The purpose of this document is to clarify different issues regarding network &lt;br /&gt;
speed that pops up from time to time in amule forum. Generally speaking, there're several reasons for questions about &amp;quot;amule &amp;amp;amp; network&amp;quot;:&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Speed reported by amule doesn't match provider given rate&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Pour performance of amule itself or another network application on same computer&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;What are key factors influencing network performance while amule is running&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
Intended audience for this document are users who want to get better understanding of network functionality in general and in practical implication to amule functionality.&amp;lt;br&amp;gt;&lt;br /&gt;
This page, however, is not to be seen as comprehensive general purpose &amp;quot;Network &lt;br /&gt;
FAQ&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h2&amp;gt;Network speed - how match is it ?&amp;lt;/h2&amp;gt;&lt;br /&gt;
While talking about network speed, people are using &amp;quot;bps&amp;quot; units, which mean &lt;br /&gt;
&amp;quot;bit per second&amp;quot;. The reason for &amp;lt;i&amp;gt;bit&amp;lt;/i&amp;gt; rather that &amp;lt;i&amp;gt;byte&amp;lt;/i&amp;gt; is pretty &lt;br /&gt;
match historical, but also have engineering motivation behind. This motivation &lt;br /&gt;
comes from the fact, that not all networks in the world are transferring bytes.&amp;lt;br&amp;gt;&lt;br /&gt;
There's also convention to use capital &amp;quot;B&amp;quot; in &amp;quot;Bps&amp;quot; when speed is marked &lt;br /&gt;
in &amp;quot;bytes per second&amp;quot;. However, this convention is not widely accepted. Particularly, organizations like IETF and IEEE are stick to original &amp;quot;bps&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h3&amp;gt;Prefixes&amp;lt;/h3&amp;gt;&lt;br /&gt;
Since invention, networks made quite a progress, and now we have networks &lt;br /&gt;
that transfers thousand and millions bits more bits per second. For marking &lt;br /&gt;
those speeds, prefixes &amp;lt;i&amp;gt;&amp;quot;kilo&amp;quot;&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;&amp;quot;mega&amp;quot;&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;&amp;quot;giga&amp;quot;&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;&amp;quot;tera&amp;quot;&amp;lt;/i&amp;gt; &lt;br /&gt;
etc. are used. It is &amp;lt;u&amp;gt;common mistake&amp;lt;/u&amp;gt; to think that values of those prefixes are same as in computer science, i.e. powers of 2. The truth is, that for historical reasons, prefixes in networking have decimal base, and not binary.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
 title=&amp;quot;Table 1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;th valign=&amp;quot;middle&amp;quot; title=&amp;quot;Table 1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 bgcolor=&amp;quot;#33ff33&amp;quot;&amp;gt;Prefix&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot;&amp;gt;meaning in computers&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th valign=&amp;quot;middle&amp;quot; title=&amp;quot;Table 1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 bgcolor=&amp;quot;#33ff33&amp;quot;&amp;gt;meaning in networks&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th valign=&amp;quot;middle&amp;quot; align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#33ff33&amp;quot;&amp;gt;difference, %%&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/th&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;K (kilo)&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;2^10 = 1024&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;10^3 = 1000&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;2%&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;M (mega)&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;2^20 = 1,048,576&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;10^6 = 1,000,000&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;5%&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;G (giga)&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;2^30 = 1,073,741,624&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;10^9 = 1,000,000,000&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;7%&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;T (tera)&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;2^40 = 1,099,511,627,776&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;10^12 = 1,000,000,000,000&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;9%&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;&lt;br /&gt;
     &amp;lt;tr&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
As you can from table above the error in calculation is about 5% when prefix &lt;br /&gt;
is incorrectly interpreted. Please, note, that speed, that provider tells &lt;br /&gt;
you is &amp;quot;speed in network&amp;quot;, i.e. calculated on decimal base. &amp;lt;br&amp;gt;&lt;br /&gt;
For example when provider tells you that your link is &amp;quot;ADSL 256/128&amp;quot; you &lt;br /&gt;
should understand that he means 256000/128000 bps. Which means, that you have&lt;br /&gt;
64000/16000 bytes per second speed in your link.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h3&amp;gt;Protocol overhead - what is it about&amp;lt;/h3&amp;gt;&lt;br /&gt;
When amule is running, it constantly &amp;quot;talks&amp;quot; with other &amp;quot;mules&amp;quot; and servers. &lt;br /&gt;
This data exchange is needed to identify itself, request information about &lt;br /&gt;
available sources and files, perform searches and so on. Since this information &lt;br /&gt;
have no use for user itself, it's called &amp;quot;overhead&amp;quot; i.e. inevitable addition &lt;br /&gt;
to the data you actually want to upload or download. Amule calls this &amp;quot;&amp;lt;i&amp;gt;connection &lt;br /&gt;
overhead&amp;lt;/i&amp;gt;&amp;quot;. However, the number amule presents, includes only size of actual&lt;br /&gt;
data that amule itself sending to the network stack. Later, this data is&lt;br /&gt;
sent down to the net with more overhead - now of network protocols. How match&lt;br /&gt;
is it - lets see in the next section.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h3&amp;gt;Network overhead&amp;lt;/h3&amp;gt;&lt;br /&gt;
First of all - we're talking about IPv4 network. Once upon a time, there &lt;br /&gt;
was only one type of IP network. Now there's 2 - IP version &amp;amp;nbsp;4, the old&lt;br /&gt;
we all know; and IP version 6 - the new one. ED2K protocol by design, is&lt;br /&gt;
unable to talk over IPv6 network, so users who have it (in Japan and China &lt;br /&gt;
for example) will not be able to connect &amp;quot;as is&amp;quot;. Using IPv4 means, that each&lt;br /&gt;
packet (TCP, UDP, ICMP) will have IPv4 header. The minimum size of this header&lt;br /&gt;
is 20 bytes. Header can have optional parts (each 4 bytes) and it's up to&lt;br /&gt;
your provider &amp;amp;nbsp;- for example my add 1 option dword.&amp;lt;br&amp;gt;&lt;br /&gt;
When talking to other thing on ed2k network, amule uses wide known TCP protocol.&lt;br /&gt;
UDP also used, but in match smaller scale. As reader might know, TCP is reliable protocol, i.e. it's guarantied that data sent from one side will arrive on the other or error will be reported. In order to achieve this, TCP send its own data to addition to actual transfer. This data includes TCP client initial negotiation, checksums, sequence numbers and acknowledgments. All this in &amp;lt;i&amp;gt;TCP header&amp;lt;/i&amp;gt; which is added to each packet sent. Size of this header &lt;br /&gt;
is 20 bytes minimum. While being small overhead for large bulk transfer, it&lt;br /&gt;
can take significant part of bandwidth when small amounts of data are being&lt;br /&gt;
exchanged. &amp;lt;u&amp;gt;This is exactly what happens on source discovery part of amule&amp;lt;/u&amp;gt;.&lt;br /&gt;
Our client is trying to establish connection and negotiate with large number&lt;br /&gt;
of other clients. Doing this, amule opens new TCP connections &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;all the&lt;br /&gt;
time&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;. The amount of those connections is controlled by &amp;lt;i&amp;gt;&amp;quot;Maximum&lt;br /&gt;
number of connections in 5 seconds&amp;quot;&amp;lt;/i&amp;gt; setting in preferences. Typical number&lt;br /&gt;
is about 100. Each TCP connection results in at least 3 packets traveling&lt;br /&gt;
the net - one is SYN packet, i.e. connection request, and one ACK or RST&lt;br /&gt;
when connection is accepted or refused, and SYN+ACK to establish session. &lt;br /&gt;
There's more overhead of DNS queries when address is resolved, retries when &lt;br /&gt;
host doesn't reply and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h5&amp;gt;On low level:&amp;lt;/h5&amp;gt;&lt;br /&gt;
After passing TCP and IP layers, packets going down to network interface &lt;br /&gt;
driver. The kind of this driver is depends on the way your computer is connected to internet. For simplicity sake we will assume that this computer is connected toISP directly, i.e. you have no LAN (or switch or router) between. &lt;br /&gt;
Common setups that I'm aware of:&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Analog modem, connected to telephone line (ISDN modem falls in this category too)&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Cable modem, connected through ethernet, ISP gives you IP address through DHCP&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Cable modem, connected through ethernet, ISP requires you to configure PPPoE or PPTP tunnel&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;ADSL modem, connected through ethernet. You must have PPPoE or PPTP tunnel&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Variation of above - modem connected to PC by USB.&amp;amp;nbsp;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
In each of above setups have there're different protocols in work, and different headers added to transmitted packets. But, there's important thing to note: &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;ethernet frames traveling between cable/ADSL modem and PC doesn't reach ISP&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;. And consequently not counted in rate calculations. PPPoE and &lt;br /&gt;
PPTP headers, on the contrary &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;does reach ISP&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;. Whether or not &lt;br /&gt;
your particular provider includes them in rate calculations I obviously have &lt;br /&gt;
no idea. For this reason I will exclude those headers from my calculations. &lt;br /&gt;
If you think that your ISP includes it, add 4 bytes to the size of each packet.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h5&amp;gt;Example:&amp;lt;/h5&amp;gt;&lt;br /&gt;
Let's see how match network overhead we have on typical network. Our connection &lt;br /&gt;
is cable modem connected with ethernet link to PC directly (no router between). &lt;br /&gt;
In this setup we have IPv4 packets sent over ethernet. &amp;lt;br&amp;gt;&lt;br /&gt;
Lets say we have 10 new connection opened each second, and all accepted&lt;br /&gt;
(successfully established TCP session). This alone have (I'm counting data&lt;br /&gt;
going up - from my computer to the net):&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;i&amp;gt;10 connection * 2 packets * (20 bytes of TCP + 20 bytes of IPv4) = 800 bytes. &amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
This mean that we starting with&amp;amp;nbsp; 1.16*8 Kbps of &amp;quot;&amp;lt;i&amp;gt;invisible&amp;quot;&amp;lt;/i&amp;gt;&lt;br /&gt;
overhead caused by the very way the network works. Now, let's assume that&lt;br /&gt;
after each connection is established our amule sends something to other side&lt;br /&gt;
and waits to receive an answer.&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;i&amp;gt;10 connections * (1 packet of data + 1 ACK)*(20 bytes of TCP + 20 bytes of IPv4) = 800&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt; bytes. &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Total of 800 bytes + 800 bytes = 1600 bytes per second = 6400 bps = 6.4 Kbps&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
What we have here is 6.4 Kbps of network overhead alone. Taking into account &lt;br /&gt;
that amule have another data to send (uploads) and it is not the only network &lt;br /&gt;
application running we will have following picture. Most chances that your &lt;br /&gt;
link to provider is not that fast. &amp;amp;nbsp;Amule will &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;try&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; to open&lt;br /&gt;
10 connections per second and will &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;try&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt; to upload on specified &lt;br /&gt;
speed. Operating system will share available bandwidth between those and between amule and other network applications (browser for example). Actual results will vary depending on specific OS settings.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h3&amp;gt;ACK bottleneck&amp;lt;/h3&amp;gt;&lt;br /&gt;
In all calculations above there was one assumption - zero download. But, downloading is what the amule was build for. So, let's examine how the overhead &lt;br /&gt;
above affect downloading speed. The answer is in TCP protocol. When TCP sending &lt;br /&gt;
data, it requires from other side to acknowledge the reception. So, if client &lt;br /&gt;
A sending data to client B by TCP, B have to send to A special ACK packets &lt;br /&gt;
which tells B &amp;quot;ok, I've got it&amp;quot;. If, however, A doesn't receive ACK packets &lt;br /&gt;
in time, he will assume that either packet is lost. So, without going deeply &lt;br /&gt;
into TCP specification: &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;if B fails to send ACK to A, as a result A will&lt;br /&gt;
transmit slower&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Now let's see situation in amule. We saw in previous chapter, that uplink &lt;br /&gt;
stream is congested by connections requests and uploads. As a result, there's &lt;br /&gt;
good chance that ACK packet for file we downloading &amp;lt;u&amp;gt;&amp;lt;i&amp;gt;will not be sent &lt;br /&gt;
on time&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;. Remote party will notice and will slow down. This is one &lt;br /&gt;
more reason why upstream better not be too congested.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h3&amp;gt;Is there something I could do ?&amp;lt;/h3&amp;gt;&lt;br /&gt;
OK, now when you understand while your network is so slow while amule is &lt;br /&gt;
running you would search a way to fix it. The answer in 2 words: &amp;quot;rate limit&amp;quot;. &lt;br /&gt;
The first thing you should do is to assign realistic rate limits in amule &lt;br /&gt;
itself. If you have 128 Kbps uplink rate, don't set amule upload limit to &lt;br /&gt;
16 (kilobytes per second) just because 128/8=16.&amp;lt;br&amp;gt;&lt;br /&gt;
Better, but far more complicated solution is to use QoS and packet scheduling &lt;br /&gt;
services of your OS. For example, you can give higher priority to ACK packets &lt;br /&gt;
to solve above &amp;quot;ACK bottleneck&amp;quot; problem. The QoS topic, however, is beyond &lt;br /&gt;
scope of this article.&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h3&amp;gt;Router (switch, home network):&amp;amp;nbsp; is there any difference ?&amp;lt;/h3&amp;gt;&lt;br /&gt;
When cable coming from your ISP is connected to some switching or routing &lt;br /&gt;
device, which in turn is connected to several PC's, bandwidth is shared between &lt;br /&gt;
them. So, having N computers connected, ideal device would simply provide &lt;br /&gt;
each one of them with 1/N of total bandwidth. Situation may vary in the real &lt;br /&gt;
life, and your particular device may have different idea about fairness. Since&lt;br /&gt;
you're not going to have hardware specs about your router chipset, the only&lt;br /&gt;
advice here is &amp;quot;try and see yourself&amp;quot;. &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>199.203.130.250</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/FAQ_amuled</id>
		<title>FAQ amuled</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/FAQ_amuled"/>
				<updated>2004-10-10T13:09:57Z</updated>
		
		<summary type="html">&lt;p&gt;199.203.130.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is full featured aMule, running without any user interface (GUI). It is controlled by remote access thru amuleweb, amulecmd or ed2k utilities.&lt;br /&gt;
&lt;br /&gt;
Stripped from GUI, amuled have reduced memory and CPU requirements; it can run without X at all.&lt;/div&gt;</summary>
		<author><name>199.203.130.250</name></author>	</entry>

	</feed>