<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 26, 2013 at 8:35 AM, Jaak Ristioja <span dir="ltr">&lt;<a href="mailto:jaak@ristioja.ee" target="_blank">jaak@ristioja.ee</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">-----BEGIN PGP SIGNED MESSAGE-----<br>
Hash: SHA1<br>
<br>
</div>On 26.06.2013 16:25, Greg Hellings wrote:<br>
&gt; bserver directory listing output (which is what I think it does).<br>
<div class="im">&gt;<br>
&gt; V E R Y   V E R Y   B A D   P R A C T I C E ! ! !<br>
&gt;<br>
&gt;<br>
&gt; Parsing server output is bad practice? How in the world did you<br>
&gt; reach that over-zealous conclusion?<br>
&gt;<br>
&gt; --Greg<br>
<br>
</div>I didn&#39;t. It is not safe to assume that web servers provide similar<br>
output for directory listings. They might even do AJAX or something<br>
which might only be reasonably interpreted by human (if at all:).<br>
<br>
Example: The current code doesn&#39;t work when links start with<br>
  &lt;a id=&quot;x&quot; href=&quot;<br>
because it only searches for &quot;&lt;a href=&quot;. Even parsing the HTML<br>
properly would not be enough in some cases.<br></blockquote><div><br></div><div style>This is different than &quot;V E R Y   V E R Y   B A D   P R A C T I C E ! ! !&quot;<br><br>Since the code was originally written and presented with the caveat that it only works on the default Apache listings and has only been tested against CrossWire and we make no guarantees about it working elsewhere (although I have successfully used it on my own default Apache install), it is far from the horrible practice you make it out to be.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Therefore, it is not reasonable to try to parse the directory listing<br>
output of the webserver. Instead, better mechanisms should be used,<br>
e.g. custom-format index files, e.g. with a format like &quot;one<br>
filename/URL per line, separated by &#39;\n&#39; characters.&quot;. Sword would<br>
just need to download a single file (instead of the webserver<br>
directory output listing), and parse that.<br></blockquote><div><br></div><div style>It is by design that we do not require this behavior. Some people wanted it, as it would do exactly as you say, but one of the goals of the FTPTransport is to make a minimum barrier to entry. As such, it requires nothing more than pointing an FTP server at the root of a directory it has read access to. Likewise the same requirement was placed on an HTTPTranport (which was initially only put together by Nic because FTP was impossible from iOS devices). We talked about having an index file like you suggest, about requiring WebDAV, or something similar. But the choice was made for simplicity (plus, it was &quot;good enough&quot; to fulfill the requirements of PocketSword being unable to leverage FTP).</div>
<div style><br></div><div style>Now our list has expanded to include FTP, HTTP, HTTPS and SFTP. Everyone agrees that the HTTP parsing is very much not ideal, but it does what it needs to, and if you would like to improve it to do so better, you&#39;re free to put in patches. I&#39;ve made the patches for HTTPS and SFTP in the interest of Wycliffe&#39;s requirements for security and access control. However, the SFTP patch exposed an issue with our assumption of username-password authentication techniques as it will also attempt private key authentication if no username-password are given, but we have no way of specifying the private key with the current InstallMgr configuration system so it will only try for ~/.ssh/id_rsa.pub.</div>
<div style><br></div><div style>If you would like to improve it, without breaking PocketSword&#39;s reliance on the functionality, feel free to submit patches.</div><div style><br></div><div style>--Greg</div><div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
This is much easier to parse and handle error conditions, no need to<br>
try to interpret HTML, filter links etc...<br>
<br>
Blessings,<br>
Jaak<br>
<div class="im">-----BEGIN PGP SIGNATURE-----<br>
Version: GnuPG v2.0.20 (GNU/Linux)<br>
<br>
</div>iQgcBAEBAgAGBQJRyu4qAAoJEEqsYmEt1rCO8X0//1TklYXolDw4Izp67jNUz+UG<br>
bA3D9+1cCQQ6+3GXm5qHDLSDIwhrY34s7S9bEf2NXZgna294PK+zTmZ0soruiV0O<br>
iwxp2AKX7P4vz0Or+3qfkX0g+1PEInd2I34uV21f5lsnY8p7ZmGlfxMKpAvO5my9<br>
MT0QnNupsbt8jWitmkVH2Ivd1iVUHcU+XU9MC66VkufTorIZqYz+yPT5Q9mAeNoq<br>
cph6m4tWGNMknM4EmOQderD0BjzxQ7COWFdCNcxwV6z+VKwzCXdfOyi3LH2RQjHb<br>
puRe7UMOUbOGr63h/w8dRuOaoQDF0EXR6E9q/W22yauQoiLNTwhu5Y19SwXh2MjN<br>
r8RJpfLxqEvw7iFVd+O0O6y4gdjxhGV61vHMLe5iftni9FZeRfq6s8JxOt1QCrFz<br>
j0s3ZuWSkDb1B3Uefmx2T6uQXOWKIFKvK7eHPSKtNFb+wGNBPzB0kEZCfaf3jQ4b<br>
yyY1Ff2YoIAqWiyalWwqCxT8HXGEQCtZOJt6vG7Quow/7wpoawM9uH+A6ijgJ5ZH<br>
YLtPZBqVOmbTi4fpwVMipjjSw9PfSfOsfVlV6JabVQv9w2zH76stXvMDM+C0/aiT<br>
staXI7UD4a9MuyyMxc/fYsbjGzx5zyzyGPhVd4o73ZZ+PBGzW/sePHTnftWYdtsx<br>
BWcmuPoBohF07gCo20g932wIsIpShM+TztYaozYOfJzuQKX5LfqKeKLss8rL8JPZ<br>
H3FJHp12a0+DcdGzGfZ4/Vkgb5NzCv8GXoNLvG0R5Rgq3tbQqPc2vT4lt+fgXr6F<br>
ecRhdso5Mw7MEfU08RCyPczoeU9Zx5EBadIYjrBHsAl7argkjEgUEWW1BC/5WBO3<br>
G999NhkZuyeLMozzpstEcGUkOfffx/k/E+lnTdcbgnZmHi9j4F3blgxPTboyuY/t<br>
chm4FYkxEXjObHcTXbIa1i3hhnLWxgjHTzWE6pYWhg4S9uJW2DLGPrssMP2ehw4Q<br>
VGYLVIcRLap6a53EVnPbkkKE/TZYmHXzwM2NUfE8QgceDBzBgeFPIFh7nFw7HZuk<br>
RPtuX11RQmoAD9Np6hr9NlB98Mx0SC11NUcn62wjiuHgK1unPj4KfdWHmTH3v4iD<br>
SouXy9h2Rnj6N/mth6nEvjmETPvRFhtnUIdkNwXyu8uXsYWIwIURwy/qGxoAYBhy<br>
7S4PRqxwh4RSemuYvCeTix462ARekq9ANcGKSEZNi46JpBLHNLXDaoJCr1Sj5lCe<br>
rsClTMcqtPxj5Z9uvyHwp+6q4G0gkwSoGuD3Z77o6Hg0/pSottarjc+y9mW2srWX<br>
eaVvbccpgwDsW9hn5JJxNQ9o5xRSrkMrmzM0GuR/Zl44zsXWIe9hC1nxIh4v8L+L<br>
tWtKgrv/GcyGb/yRwzGf/17OpyHJB7rtvarQLi+pyzWQpEPt0Pxp5bEGpjxJT+a7<br>
cilGKPBXYH0MEmrq75bqlGVwtVqSnBPN9N8H7iCY0eF4EkSPYGhACC7YYD58ziQB<br>
yY+AaAJz0A7aqvUAhv6K6s+5uXmugaSvXYYOo5kS6EiM5SdjCitLpt1THDJ1EHPT<br>
nA+USbnsP3BMML6g3FRKQmln7vrmlaY5ofRvi9VfVe7P0V+2l+UJ5bhhMsZrlB+p<br>
loH/qItGMNzIZeu1QQRbgWuVsm20/QdH0KIH+dOw7Geid/i0IH2kW48PUOUj2WeJ<br>
noGD3Un+oH7UvQx1zRZEN4Pa4s4bn8ryI578qn6laQn39hfe2TqjXgrfMIcu8omg<br>
lyk7leYWl/jNy6DhlNuiUaAARWJ9cMkYI0L7JoqoBZ+vwBB1H6U9I41R5Y/ZNIbk<br>
frJbnG9L1aQqSkwOmlkaunhDOyYShIDFxMQlI4HjyFLMnMKRHJFKCMDyw2Uobn5K<br>
nA09C6sdiPkvdBv/EzyUOhkU5iBVYUhDw+DrFCOoWIyeqwHNtGqLz2EKE7nNgYue<br>
g9igpFeFmdMPlw9jIicEm+rmRIlYNwlUBxfufkEpMWzhNyPzt+uSKGqb7Fzv4BQw<br>
VlHnwhElYMnWLu14R2SPuPw9UABadA+ejMYiiColH2bz+yhfCyNkOfESl6OZc0z8<br>
vwcNR3eVeHRwypOA9gL0QCEaNnixqVw770LASolx+0qw8ftOCJMks1KaBhYPTQAH<br>
EawB1BgY/38cZCwcSYR0nLq+Wnv9V7TTmpBDQ3evwR9DTmppmTWbTrJadtdjp0H5<br>
KZoTuxssEVjmrAhIwIq8cUq9TlS1KTk+9kn2lHm7W18MrVab0d2Ka6A35mZFirkG<br>
g24d8DzuClyGn3NPVAvYKF9OM22tBG1XOac+7/kLSeuKekrdYbGLTQxiAbQgTe36<br>
ixiJXx5LvUSS/SBkQWJ8GaQAuH0OBHQxKHm46uZkh82llS0KZVEK/GhHvGi9+zcc<br>
7kX76EGPj7eJI5H+LZKb9tV9of/36CVCTOsw7HNCW4dl5dBKeU3Ej1/C9FiCqDa3<br>
7+tkSbEuGU0BsgEj1RZVeWD+hhrEL9TJ8Uz/ZzEjl0VTh8Ahn9u+eEWN5SntUe9b<br>
nhmjphXtq4/Yo5yKZbhRu8eOKaVcX8pVMfgjDbYz8GX6OTZiJcNWy/Z02pyJhUmc<br>
NeNjh4iqVt+I1M73+B63zx39XPQtrWGa0UqGKBssC51ed56/dHYRiIKAElWUplO9<br>
vZDyvZ2iVIjtc8otiI96GFYStyYBF0630Ya8bwZoxbLd13/YxskxEqbHqmAPWh1Q<br>
s7UXb9jv4LpK43n0Zx9C<br>
=oZdy<br>
<div class=""><div class="h5">-----END PGP SIGNATURE-----<br>
<br>
_______________________________________________<br>
sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org">sword-devel@crosswire.org</a><br>
<a href="http://www.crosswire.org/mailman/listinfo/sword-devel" target="_blank">http://www.crosswire.org/mailman/listinfo/sword-devel</a><br>
Instructions to unsubscribe/change your settings at above page<br>
</div></div></blockquote></div><br></div></div>