Every time I peek into the webserver logfiles, I find quite a few 404 requests trying to figure out if certain exploits exist on this server. Now I get that these are automated attempts, and the number of requests coming from one IP show that they try several different exploits and path names. Nevertheless I thought that I don’t need this in my log, and on my webserver. fail2ban for the rescue.
Continue reading "Using fail2ban to block unfriendly web requests"
Let's say I have a Django app "users". The admin menu shows this as category "Users". That's ok, but if the website users speak another language I want this name translated. Also I'm not necessarily using "Users" as name in the admin menu as section name, but can use something more descriptive. "Website Users", as example.
Continue reading "Django: Change or translate the app name in the admin menu"
The Django administration site comes with a couple of default entries, depending on which apps and middleware is installed.
Usually there is at least "Users" and "Groups", and if the quite common "allauth" is installed, then there is also "Site", "SocialApp", "SocialAccount", and "SocialToken". They are not always necessary, especially when no Social Login is used. Or why have the "Site" administration when only Site=1 is used?
With a few tricks these can be removed from the admin menu.
Continue reading "Django: Remove default entries from admin menu"
The Huginn software is not only good for monitoring Twitter feeds, it can also be used to monitor websites for changes.
That's actually easy and needs only two agents:
Continue reading "Huginn: Monitor changes in websites"
The Django Web Framework makes it quite easy to add new referenced objects in the admin menu.
Let's say the model has two foreign keys in it:
class TeamMember(models.Model):
team = models.ForeignKey(Team, on_delete=models.CASCADE, verbose_name=_("Team"))
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, verbose_name=_("User"))
And the admin form:
class TeamMemberForm(forms.ModelForm):
class Meta:
model = TeamMember
class CustomTeamMemberAdmin(admin.ModelAdmin):
form = TeamMemberForm
add_form = TeamMemberForm
model = TeamMember
fieldsets = [
(None, {'fields': ['team', 'user']}),
]
admin.site.register(TeamMember, CustomTeamMemberAdmin)
Then Django will show small a small green "
" sign next to the fields:

Continue reading "Django: disable inline option to add new referenced objects"
After setting up Huginn, and implementing the actions on my todo list, I had a look at the available agents and started thinking what else they can be useful for.
One of the ideas I came up with is monitoring if a website is available, or has some trouble. I already have a monitoring system in place, but it's a nice exercise to learn more about the other agents.
Continue reading "Monitor website status with Huginn"