<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
  <channel>
    <title>Batland</title>
    <link>http://batland.de/subdomains/nucleus/Batland.php</link>
    <description>ProFTPd patches and web frontend, perl development</description>
    <language>en-us</language>           
    <generator>Nucleus CMS v3.51</generator>
    <copyright>©</copyright>             
    <category>Weblog</category>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>http://batland.de/subdomains/nucleus/Batland.php/nucleus/nucleus2.gif</url>
      <title>Batland</title>
      <link>http://batland.de/subdomains/nucleus/Batland.php</link>
    </image>
    <item>
 <title>Padre on Mac OS X Leopard</title>
 <link>http://batland.de/subdomains/nucleus/Batland.php?itemid=133</link>
<description><![CDATA[<p>Hi, </p>  
<p>Padre is becoming an open source IDE for perl which is under heavy development. It is written in Perl with wxwidgets for the GUI. Therefore, it is (almost) platform independent and, as far as I know, the only free perl IDE still being actively developed (no, I neither count vi nor emacs as an IDE, even though you can use it as such). So I tried to installed Padre on my macbook pro. The <a href="http://padre.perlide.org/trac/wiki/Download#OSX" target="_blank" >Padre download</a> pages have detailed instructions on that topic, but for me they never worked. So I&rsquo;ll document my way, maybe someone else doesn&rsquo;t need to spend one complete evening to install an IDE.   </p>
<p>First of all we need to upgrade wxwidgets because leopard uses version 2.8.4. and Padre requires at least version 2.8.8. Therefore, download a source tarball from <a href="http://batland.de/subdomains/nucleus/Batland.php/" target="http://sourceforge.net/projects/wxwindows/files/2.8.11/wxMac-2.8.11.tar.gz/download" >here</a>. After extracting the file, run the following commands after changing into the newly created directory</p>
<p align="center">mkdir osx-build<br />cd osx-build<br /> ../configure --prefix=/usr/ --enable-mediactrl --enable-listctrl --with-opengl<br />make<br />make install 
<p align="left">Now you&rsquo;ve got an up-to-date version of wxwidgets. The next step is to install some requirements of Wx and Padre. I had to install the following modules before installing Wx because Wx depends on them, but cpan doesn&rsquo;t resolve the dependency for some unknown reason. So you install the following three modules first: 
<ul>
<li>Test::Base</li>
<li>Test::Differences</li> 
<li>ExUtils::CBuilder</li></ul>
<p align="left">Some tests of File::HomeDir failed, therefore I forced the installation in the cpan shell via   </p>
<p align="center"> force install File::HomeDir</p>
<p align="left">I could not use the newest version of Wx supplied by cpan, because it failed to compile (some XS bugs) and cpan onyl provides the newest version of a module, you need to download an older version, I chose <a href="http://search.cpan.org/~mbarbon/Wx-0.95/" target="_blank" >0.95</a>. Before, installed this version by hand, give cpan a try and even if it fails, all dependencies are installed. Then extract the tar file and change in the newly created directory to run:</p>
<p align="center">perl MakeFile.pl <br />make<br />make install   </p>
<p align="left">Now I suggest to change you cpan settings so that cpan will stop an installation if an required module does not install.This makes life simpler to track down modules which need to be installed by force. In the last step you need to start cpan witht the wxperl executable which is done by:</p>
<p align="center">wxPerl -MCPAN -eshell</p>
<p align="left">And you can now install Padre. After an successful installation you can start padre via /usr/local/bin/padre. Enjoy it. And here some screenshots of padre 0.66.   </p>
<p align="left"><a href="http://batland.de/subdomains/nucleus/media/1/20100705-Padre1.png" target="_blank" ><img src="http://batland.de/subdomains/nucleus/media/1/20100705-Padre1_preview.jpg" border="0" hspace="8" alt="Padre on OS X" align="top" width="480" height="308" /></a></p>
<p align="left"><a href="http://batland.de/subdomains/nucleus/media/1/20100705-Bild%203.png" target="_blank" ><img src="http://batland.de/subdomains/nucleus/media/1/20100705-Padre2_preview.jpg" border="0" hspace="8" alt="Padre on OS X" align="top" width="480" height="308" /></a></p>
<p align="left">Bye<br />Dennis</p>]]></description>
 <category>Perl</category>
<comments>http://batland.de/subdomains/nucleus/Batland.php?itemid=133</comments>
 <pubDate>Mon, 5 Jul 2010 18:46:42 +0200</pubDate>
</item><item>
 <title>ProFTPd Administrator 1.3</title>
 <link>http://batland.de/subdomains/nucleus/Batland.php?itemid=130</link>
<description><![CDATA[<p>Hello, <br />  <br /> 
during the last couple of weeks I spent some of my time to enhance <a href="http://proftpd-adm.sourceforge.net/" target="_blank" >proftpd Administrator</a>. This is a web frontend to manage ftp accounts and the proftpd server. The project&rsquo;s last release dates back to 2006, but the latest Version (1.2) has a lot of nice features. Therefore, I fixed some bugs and added a lot of new features to it and removed some others.  
If you find any bugs or need help, just contact me via info(q)batland(d)de where (q) stands for @ and (d) for a dot. So far, this is the only documentation. But, I&rsquo;ll add some more during the next couple of weeks if needed. <br /> 
This Version has been tested with FreeBSD 7.3, Ubuntu 10.04 and SLES 10.0, but it should work on any other *nix and Windows, too, as long as mysql, proftpd, php and apache can be installed.<br />
You&rsquo;ll find all the needed information in the following paragraphs. The changelog is incomplete. I&rsquo;ve applied many minor changes so that I just wrote down the important changes. </p>
New Features: <ul> 
<li>Added a login system to the web frontend. After 10 login failures the account is automatically disabled and can be reactivated by a script.</li> 
<li>Management of administrators via scripts</li> 
<li>Password generator which is deriviate from the <a href="http://www.multicians.org/thvv/gpw.html" target="_blank" >GWP</a></li> 
<li>Overview of the current active Bans</li> 
<li>support to run script when a group is added or deleted</li> 
<li>A separate interface for users so that they can see their quota stats without having any permissions.</li> 
<li>Activation and deactivation all users of a group</li> 
<li>German translation</li> 
<li>Import of users via a CSV file</li> 
<li>Improvement to the web GUI</li></ul> 
Removed Features:<ul> 
<li>A user only belongs to one group, no secondary groups exists anymore  
<li>Support for postgres_sql (which can be added without a problem)  
<li>Configuration of the proftpd administrator via the webinterface because of security reasons </li></ul> 
Bug Fixes: 
<ul> 
<li>Fixes system problems with the parsing of command outputs to generate the system status  
<li>Fixes some security holes such as mysql injection  
<li>Removed the usage of $_SERVER[&rsquo;PHP_SELF&rsquo;]  
<li>Added some protection against SQL injection  
<li>Removed warnings and minor errors </li></ul> 
<strong><font size="4">Download</font></strong> 
<p>You can download the ProFTPd Administrator <a href="http://batland.de/proftpd_admin/proftpd_admin_1.3.tar" target="_blank" >here</a>. </p>
 <br />
<font size="4"><strong>Install Instructions:</strong></font> 
<ul> 
<li>Setup Apache including mod_php  
<li>Setup a MySQL Server  
<li>You need to edit misc/database_structure_mysql/db_structure.sql. In line 89 to 94 replace each <em>test </em>at the end of the line by a password for the mysql database for proftpd administrator. In line 97 replace the <em>test123 </em>with a different password. The second account is used by the web interface for regular ftp-uses to display their quotas. This user has only read rights on some tables.  
<li>Copy the following directories to apaches data directory: admin and userView  
<li>Copy the configuration.xml to a directory accessible by the web server, but not accessible via the web server so that no user can download the file.  
<li>Now edit the configuration.xml: You need to change the password in line 10 to the first password you set in the db_struture.sql file and maybe you need to change the IP of the mysql server if it is not running on localhost. Additionally check the lines 52 - 70 regarding the correct paths to the command.  
<li>You need <strong>to </strong>set the Path to the <em>admin </em>directory in the admin/include_rootpath.php (2. line) and in the 3. line the path to the configuration file.  
<li>Open the userView/index.php and change line 12 - 13 so that the correct password is set (this is the second password you choose in the db_structure.sql) and your database host.  
<li>Before we can setup an administrator account the following Perl modules need to be installed: Term::ReadKey, XML::Simple, DBD::mysql. I suggest to use your OS package manager to install these, because if you have no experiences with cpan, it can be tough.  
<li>Now you need to edit scripts/rootpath.pl. Set the correct path to you configuration in the 1. line including its name.  
<li>The last step is to configure your proftpd. You find an example configuration in misc/proftpd. this includes three files: proftpd.conf, include_mysql.conf and modules.conf. In the proftpd.conf you need to set your IP address and port. Additionally, you can activate TLS or configure additional modules. In the include_mysql.conf you need to set the credentials. This is done in line 13, change <em>test</em> to your password you choose in db_structure.sql. Now start the proftpd server. Depending on your proftpd installation you need to edit the modules.conf file to deactivate not installed modules or to adjust the <em>ModulePath.</em>  
<li>You can change the language of the userView frontend by editing the index file and including a different language file.</li></ul> 
<br />
<font size="4"><strong>Upgrading Instructions: </strong></font> <br />
<ul> 
<li>Change the two Password set in /misc/database_structure_mysql/upgrade_to_1.3.sql in line 11 and line 13.  
<li>Execute the SQL Script.  
<li>You can delete all files of the previous version.  
<li>Copy the following directories to apaches data directory: admin and userView  
<li>Copy the configuration.xml to a directory accessible by the web server, but not accessible via the web server so that no user can download the file.  
<li>Now edit the configuration.xml: You need to change the password in line 10 to the first password you set in the db_struture.sql file. Additionally check the lines 52 - 70 regarding the correct paths to the command.  
<li>You need to set the Path to the <em>admin </em>directory in the admin/include_rootpath.php (2. line) and in the 3. line the path to the configuration file.  
<li>Open the userView/index.php and change line 12 - 13 so that the correct password is set </li></ul> 
<br />
<font size="4"><strong>General Instructions:</strong></font> 
<p>Management of administrators via scripts: 
<table width="80%" border="2" cellspacing="0" cellpadding="0"> 
<tr> 
<td width="297">createAdmin.pl</td> 
<td>A &quot;createuser&quot; unix like script. It takes no argument. All needed information will re requested interactively by the script.</td></tr> 
<tr> 
<td width="297">enableAdmin.pl</td> 
<td>First argument is the name of the administrator which shall be activated because the account is deactivated after 10 failed login attempts.</td></tr> 
<tr> 
<td width="297">deleteAdmin.pl</td> 
<td>Deletes a administrator. The scripts takes no argument. All needed information will re requested interactively by the script.</td></tr> 
<tr height="13"> 
<td width="297">upDateAdminPwd.pl</td> 
<td>Changes the password of an administrator. The scripts takes no argument. All needed information will re requested interactively by the script. </td></tr></tbody></table></p> 
<p><strong></strong></p> 
<br />
<p><font size="4">Instructions for use import:</font> </p> 
<p>The cvs file needs to have the following format regarding the columns: </p> 
<ol> 
<li>Username  
<li>Password  
<li>Groupename  
<li>Is deactivated (=1) or is active (=0)  
<li>Expiration date. Set to 0 if the account does not expire. Otherwise use the following format: YYYY-MM-DD HH:MM:SS  
<li>Real name of the user  
<li>Address  
<li>Notes</li></ol> 
<p>Note: The groups of the users need to exist otherwise the import will fail. </p> <br />
<p align="left"><strong><font size="4">A few Screenshots:</font></strong></p> 
<p align="center"><a href="http://batland.de/subdomains/nucleus/media/1/20100702-overview.PNG" target="_blank" ></a></p> 
<p align="center"><a href="http://batland.de/subdomains/nucleus/media/1/20100702-overview.PNG" target="_blank" ><img src="http://batland.de/subdomains/nucleus/media/1/20100702-overview_preview.jpg" border="0" hspace="8" alt="overview" align="top" width="480" height="299" /></a></p> 
<p align="center">(After successful login) </p> 
<p align="center"></a><a href="http://batland.de/subdomains/nucleus/media/1/20100702-createUser.PNG" target="_blank" ><img src="http://batland.de/subdomains/nucleus/media/1/20100702-createUser_preview.jpg" border="0" hspace="8" alt="createUser" align="top" width="480" height="348" /></a><a href="http://batland.de/subdomains/nucleus/media/1/20100702-createUser.PNG" target="_blank" ></p></a> 
<p align="center">(create user) </p> 
<p align="center"><a href="http://batland.de/subdomains/nucleus/media/1/20100702-groups.PNG" target="_blank" ></a></p> 
<p align="center"><a href="http://batland.de/subdomains/nucleus/media/1/20100702-groups.PNG" target="_blank" ><img src="http://batland.de/subdomains/nucleus/media/1/20100702-groups_preview.jpg" border="0" hspace="8" alt="groups" align="top" width="480" height="183" /></a></p> 
<p align="center">(overview of all groups)</p> 
<p align="center"><a href="http://batland.de/subdomains/nucleus/media/1/20100702-userreport.PNG" target="_blank" ></a></p> 
<p align="center"><a href="http://batland.de/subdomains/nucleus/media/1/20100702-userreport.PNG" target="_blank" ><img src="http://batland.de/subdomains/nucleus/media/1/20100702-userreport_preview.jpg" border="0" hspace="8" alt="userreport" align="top" width="480" height="121" /></a></p> 
<p align="center">(report when the user is created) </p> 
<p align="center"><a href="http://batland.de/subdomains/nucleus/media/1/20100702-QuotaOverviewUser.PNG" target="_blank" ></a></p> 
<p align="center"><a href="http://batland.de/subdomains/nucleus/media/1/20100702-QuotaOverviewUser.PNG" target="_blank" ><img src="http://batland.de/subdomains/nucleus/media/1/20100702-QuotaOverviewUser_preview.jpg" border="0" hspace="8" alt="QuotaOverviewUser" align="top" width="480" height="89" /></a></p> 
<p align="center">(the overview about the used quota for a standard ftp user)</p> 
<p align="left">Bye, 
Dennis</p>]]></description>
 <category>ProFTP</category>
<comments>http://batland.de/subdomains/nucleus/Batland.php?itemid=130</comments>
 <pubDate>Fri, 2 Jul 2010 16:53:32 +0200</pubDate>
</item><item>
 <title>New Project: Batland&apos;s Photos</title>
 <link>http://batland.de/subdomains/nucleus/Batland.php?itemid=112</link>
<description><![CDATA[Hi, <br /><div><br />one of the my hobby which is not PC related is photography. One year ago I made the switch from analog to digital photography, because even I had to admit that the new digital SLR cameras are affordable and have caught up with the analog cameras in the field of quality. So now more and more pictures are filling up my hard drive and I think I got some nice ones. Therefore, I started <a href="http://photos.batland.de" title="Batland's Photos" target="_blank">Batland's Photos</a> to publish some. <br /></div><p style="clear: both">The Batland's Photos blog is strictly devoted to my photography. The photos cover everything except human beings because I believe in privacy and anonymity of the web. Futhermore, I don't believe in photoshop. So all the photos you see are not edited, except for converting a photo from color to black & white.</p><p style="clear: both">Feel free to leave a comment ;) </p><p style="clear: both">Bye,<br />Dennis</p><br class='final-break' style='clear: both' />]]></description>
 <category>News</category>
<comments>http://batland.de/subdomains/nucleus/Batland.php?itemid=112</comments>
 <pubDate>Thu, 10 Jun 2010 18:00:19 +0200</pubDate>
</item><item>
 <title>Blocked because of fully generic DNS (#5.7.1)</title>
 <link>http://batland.de/subdomains/nucleus/Batland.php?itemid=107</link>
<description><![CDATA[<p>I&rsquo;ve never really found an error which google has not at least a few entries covering the error message to some degree. But for a couple of month now I was not able to send a mail from batland.de to a specific mail server, because the mail was always rejected by the postmaster of this particular server, because of this: </p><br />
<div align="center"><pre wrap=""><font size="4">Blocked because of fully generic DNS (#5.7.1)</font></pre></div><br />
<div align="left"><p>Google came up with zero entries which quote this error message. And at first I had no clue what a fully generic DNS is. So I just decided to not sent mails to this server via batland.de! Yesterday, for some unknown reason I definitely wanted to fix this issue. I thought back to my college time when I had a lecture on SPAM and how to fight spam. </p><br />
<p>On simple way to fight phishing mails and spam in general is to only accept mails from a mail server, if this mail server is authorized to sent mails for this domain. So a trivial approach is to check, if a mail sent from mail server yx.com belongs to this domain. Therefore, the recipient mail server just checks this by doing a reverse DNS query on the IP. This is a in a nutshell description of the <a href="http://en.wikipedia.org/wiki/Sender_Policy_Framework" target="_blank" >Sender Policy Framework</a> (SPF) with some simplifications. So I checked on the reverse DNS name of my IP and, guess what, it does not resolve to batland.de, but a different domain because several domains run on this IP. So I changed the reverse dns entry to batland.de and after a while (because of the caching) it just worked.<br />
<p>So anyone else stumbling over this error has some information on where to look for a solution to this problem. In the next days I need to take a closer look at the dns entries regarding SPF so that all domains on this IP can sent mails to a mail server which uses SPF.</p>Bye, <br />Dennis </div>]]></description>
 <category>General</category>
<comments>http://batland.de/subdomains/nucleus/Batland.php?itemid=107</comments>
 <pubDate>Thu, 3 Jun 2010 20:25:19 +0200</pubDate>
</item><item>
 <title>Patch for proftpd: New Option for CreateHome to specify a UID</title>
 <link>http://batland.de/subdomains/nucleus/Batland.php?itemid=102</link>
<description><![CDATA[Hi, <br /><br />I just added a patch for <a href="http://www.proftpd.org">proftpd</a> to extend the functionality of the <em>CreateHome </em>directive. My problem was that the home directory should not be created with the owner being the ftp user, because this can lead to several problems in some deployment scenarios. Basically it boils down to this: Several <br />users share the same home directory and they shall be able to read each <br />others files, but a user shall only be able able to delete it's own <br />files. Currently the owner of the directory can delete all files, even though the sticky bit is set, because the <br />user who first logs on will own the directory and, therefore, be able to <br />delete all files, regarding of the files' permissions. <br />Therefore, I needed a way to automatically create the home directory while being able to specify the owner. <br /><br />So I added a new option to the <em>CreateHome</em> directive. The option is called <em><strong>homeuid</strong> </em>and can be used as follows: <br /><div align="center">CreateHome on homeuid UID<br /><div align="left">So when the home directory is created the owner of the directory is set to UID. This option can be used with all the other officially supported options. For example,&nbsp; assume the directory /ftp already exists and the home directory of the new user is set to /ftp/foobar/new, the following directive:<br /><div align="center">CreateHome on mode 755 uid 150 gid ~ homeuid 10000<br /><div align="left">will result in creating the following directories:<br /><ul><li>/ftp/foobar being owned by UID 150 and GID being the new user's group. </li><li>/ftp/foobar/new is owned by UID 10000 and GID of the new user's group.</li></ul><br />The patch for mod_auth.c and mkhome.c can be found <a href="https://batland.de/upload/batland/homeuidPatch.zip">here</a>. I'll submit this to the official proftpd project during the next couple of days. I'll inform you if the patch is accepted or not. <br /><br />Bye,<br />Dennis&nbsp; <br /></div><br /><div align="left"><br /></div></div></div></div>]]></description>
 <category>ProFTP</category>
<comments>http://batland.de/subdomains/nucleus/Batland.php?itemid=102</comments>
 <pubDate>Sun, 30 May 2010 18:44:23 +0200</pubDate>
</item><item>
 <title>online for good</title>
 <link>http://batland.de/subdomains/nucleus/Batland.php?itemid=99</link>
<description><![CDATA[<p>Today, I moved this homepage to become the new main page of batland.de. The delay is caused by a bug in Microsoft's Live Writer. I hate online editors, therefore, I searched for a good and free publishing software and this was Live Writer for me. But after publishing the first article for batland v3 it stopped working. So I started to debug it and then, suddenly, the weekend was over. Therefore, the change is late. I hope I'll have time to write a line during the weekend. I've got a nice patch for proftpd which I would like to publish here.</p><br /> <p>Bye Mips</p>]]></description>
 <category>News</category>
<comments>http://batland.de/subdomains/nucleus/Batland.php?itemid=99</comments>
 <pubDate>Thu, 20 May 2010 19:03:30 +0200</pubDate>
</item><item>
 <title>Back online with batland.de v3</title>
 <link>http://batland.de/subdomains/nucleus/Batland.php?itemid=94</link>
<description><![CDATA[<p>Two versions of batland have been online since 2005. I used to only ranodmly publize small IT related articles. The main problem with taht is that the articles become deprected, because of changes in the software, and I seldomly have enough time to write a longer article. Therefore, I haven?t published anything in over a year. I dont really believe in not using batland to publsih anything. </p> <p>So I had this idea during the last couple of days to move from an article centric page to a more blog like type of homepage. batland.de will not become just a blog. I try to combine a blog with a static homepage so that I can just post some smaller stuff that can become irrelevant in a few month and articles which will be accessable for a long time. </p> <p>I have not yet compelete the new cms to fit my needs. But the current setup is good enough to go online with it. So back I am. </p> <p>I don?t know if I will port any of the old stuff to batland v3, but the old version is still accessable <a href="http://batland.de/wb">here</a>. </p> <p>So see you soon. </p> <p>Mips </p>]]></description>
 <category>News</category>
<comments>http://batland.de/subdomains/nucleus/Batland.php?itemid=94</comments>
 <pubDate>Thu, 13 May 2010 14:35:58 +0200</pubDate>
</item>
  </channel>
</rss>