Så er min første lille iphone applikation blevet udgivet. For at tage beskrivelsen fra itunes (link):
IPView is a small application which displays the current IP address on all your iphone and ipod’s network interfaces.
IPView
Så er min første lille iphone applikation blevet udgivet. For at tage beskrivelsen fra itunes (link):
IPView is a small application which displays the current IP address on all your iphone and ipod’s network interfaces.
IPView
Dette er en guide til hvordan man spore e-mail med forfalskede afsender adresser som fx SPAM eller virus e-mail.
Måden man sporer e-mail på er ved at kigge i den header som enhver e-mail har. Denne header er nogle tekst linjer som bliver skrevet ind både af det program der sender e-mailen, serverende det kommer igennem samt det modtagende e-mail program.
Disse linjer gør det muligt at følge e-mailen tilbage igennem den vej den har taget før den har nået dig.
Hvordan man ser disse header variere fra program til program:
- I Microsoft Outlook skal man højre klikke på e-mailen og vælge indstillinger.
- I Outlook Express/Windows Mail skal man højreklikke på e-mailen og egenskaber. Derefter skal man så over på fanebladet detaljer.
- I gmail skal man vælge show original, i menuen til højre for reply.
Her kommer et eksempel på en e-mail jeg har sendt fra en cybercity e-mail adresse til min martinschultz.dk adresse. Jeg har ændret lidt på e-mail adresserne for at undgå at de bliver spammet.
afsender@adresse.invalid Er den adresse som jeg har sendt e-mailen fra.
modtager@adresse.invalid Er den adresse som e-mailen er sendt til.
000.000.000.000 er min egen offentlige IP adresse på min hjemmemaskine.
Return-Path: <afsender@adresse.invalid>
Delivered-To: modtager@adresse.invalid
Received: from cicero0.cybercity.dk (cicero0.cybercity.dk [212.242.40.52])
by martinschultz.dk (Postfix) with ESMTP id 1D64B24FA04A
for <modtager@adresse.invalid>; Sun, 14 Feb 2010 10:00:07 -0400 (EDT)
Received: from user5.cybercity.dk (user5.cybercity.dk [212.242.41.51])
by cicero0.cybercity.dk (Postfix) with ESMTP id 035EA29378
for <modtager@adresse.invalid>; Sun, 14 Feb 2010 16:00:06 +0200 (CEST)
Received: from [10.0.0.2] ([000.000.000.000])
by user5.cybercity.dk (Postfix) with ESMTP id C4E6A3A20A6
for <modtager@adresse.invalid>; Sun, 14 Feb 2010 16:00:05 +0200 (CEST)
Reply-To: afsender@adresse.invalid
From: afsender@adresse.invalid ( Martin Schultz)
Subject: Sporing af spam
Date: Sun, 14 Feb 2010 15:03:39 +0200
Message-Id: <410e3bab501d73.11216925@not right>
Første linje i headeren er:
Return-Path: <afsender@adresse.invalid>
Denne linje er skrevet ind af den afsende e-mail program/server og er ikke pålidelig, den kan meget nemt forfalskes.
Så kommer Delivered-To: modtager@adresse.invalid som er den adresse som e-mailen er afleveret til lokalt på din e-mail server. Den behøver ikke at være identisk med den adresse der står i to. Den kan man som regel godt stole på.
Nu kommer det egentlige kød i headeren:
Received: from cicero1.cybercity.dk (cicero1.cybercity.dk [212.242.40.4])
by martinschultz.dk (Postfix) with ESMTP id D07DA24FA04A
for <modtager@adresse.invalid>; Sun, 14 Feb 2010 09:03:40 -0400 (EDT)
Denne linje fortæller at min e-mail server (martinschultz.dk) har modtaget e-mailen fra serveren cicero1.cybercity.dk [212.242.40.4]. Man kan roligt vælge at stole på denne første recived linje da den er tilføjet af ens egen mail server. Hvis man ikke stoler på sin egen mailserver bør man skifte
Når der står (postfix) angiver det navnet på det program mail serveren kører.
Det spændende her er at min mail server har modtaget e-mailen fra serveren (cicero0.cybercity.dk [212.242.40.52]). Da maskinen kan have oplyst et forkert domænenavn vil jeg anbefale at man slår ip adressen op. Hvis man ikke lige har en eller anden form for Unix maskine ved hånden kan man gøre det på http://www.geektools.com/whois.php
Her viser det sig at maskinen korrekt tilhører cybercity og der er også en kontakt e-mail i tilfælde af misbrug (fx. hvis den er blevet brugt til at sende spam eller virus).
Næste recived linie er:
Received: from user5.cybercity.dk (user5.cybercity.dk [212.242.41.51])
by cicero0.cybercity.dk (Postfix) with ESMTP id 035EA29378
for <modtager@adresse.invalid>; Sun, 14 Feb 2010 16:00:06 +0200 (CEST)
Den er kun pålidelig hvis den server vi fandt overfor er. Hvis serveren tilhører en stører Internet udbyder eller virksomhed kan man som regel godt stole på den (Tjek det på samme måde som overfor).
Sidste recived linie er:
Received: from [10.0.0.2] ([000.000.000.000])
by user5.cybercity.dk (Postfix) with ESMTP id C4E6A3A20A6
for <modtager@adresse.invalid>; Sun, 14 Feb 2010 16:00:05 +0200 (CEST)
Denne linje fortæller os at afsendende maskine har den offentlige IP adresse 000.000.000.000 og den lokale IP 10.0.0.2. Den lokale IP kan man ikke bruge til noget med mindre man selv administrere det afsendende netværk. Lokale IP adresser kan være i følgende puljer: 10.x.x.x eller 168.x.x.x eller 192.x.x.x
Hvis linjen ikke er forfalsket har man afsenderen af e-mailen og man kan klage til den udbyder der ejer [000.000.000.000])
I denne guide vil jeg vise hvordan man kan udvikle ASP.NET på en mac og deploye koden på en Linux server der kører apache2.
For at få dette til at virke skal mono og monodevelop installeres på mac’en og mono skal installeres på Linux serveren.
For at starte med mac’en hvor udviklingen skal foregå skal man hente og installere mono develop fra http://monodevelop.com/Download og installere denne.
Når dette er gjort er man klar til at få udviklet noget C# kode. Dette kan enten gøres ved at man åbner en eksisterende ASP.NET solution lavet i visual studio eller man starter en ny.
Når man så har et projekt man er klar til at teste kan man gøre det ved at gå op i Kør og vælge kør.
Tip: Codecomplete kommer ikke automatisk frem, du skal show completion windows eller genvejstasten.
Monodevelop er ikke helt på højde med Visual Studio som IDE, men bliver hele tiden forbedret, som det er nu ser jeg kun tre ting jeg mangler:
- En visuel designer.
- Understøttelse af WPF og winforms.
- Edit and continue i debuggeren.
Når du så har fået udviklet din solution og skal have installeret den på din linux server. Dette gøre forskelligt alt efter hvilken linux distribution du bruger, på en debian gøres det simpelt hen med sudo apt-get install libapache2-mod-mono hvilket vil installere og aktivere mono i din apache2. På suse ligger modulet også i deres pakke manager.
Når det er gjort skal du have tilføjet din applikation til din sites availble fil Mine er sat op som Applications og ikke virtual hosts, da jeg ikke har været instand til at få mono til at køre som i en virtual host på min egen debian server.
Her følger min kommenterede opsætning (tt er både min namespace og det bibliotek løsningen ligger i):
Alias /tt “/stien/til/filerne/tt”
MonoServerPath tt “/usr/bin/mod-mono-server2″
#Hvis du af en eller anden underliggrund ønsker at køre .NET 1.1 kan #du i overstående ændre to tallet til et et tal:
# MonoServerPath tt “/usr/bin/mod-mono-server1″
MonoDebug tt true
#Jeg vil gerne se stacktraces når noget går galt.
MonoSetEnv tt MONO_IOMAP=all
#Mono skal stå for tilpasning til platformen, fx håndtereing af #backslashes i filadgang og store/små bokstaver.
MonoApplications tt “/tt: /stien/til/filerne/tt ”
<Location “/tt”>
Allow from all
Order allow,deny
MonoSetServerAlias Timetrack
SetHandler mono
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI “.(?:gif|jpe?g|png)$” no-gzip dont-vary
</Location>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
</IfModule>
Når man har gjort dette skal man bare reloade ens apache konfiguration og det vil køre J
I denne artikel vil jeg vise et eksempel på hvordan man kan skrive programkode der uploader filer til en sharepoint side og manipulere dem. Helt konkret er det et eksempel på hvordan man fra et desktop C# program uploader en side til sharepoint og sætter den til at være et sites ”welcome” page. Koden er ret simpel og jeg viser de betydende dele i det følgende. Du kan downloade den komplette klasse her.
Først skal du huske og inkludere sharepoint klasserne:
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.Publishing;
try{
using (SPSite siteCollection = new SPSite(“http://ditsharepointsite”))
Her skal du skrive hovedurlen til dit sharepoint site. (Det du ville skrive I din browser for at få startsiden frem).
{
SPWeb site = siteCollection.AllWebs["dinsitecollection"];
Stream fStream = File.OpenRead(“welcome.aspx”);
Din lokale fil, på din harddisk.
… upload af fil …
site.Files.Add(“http://ditsharepointsite/dinsitecollection/sider/welcome.aspx”, contents);
Tilføj filen, der hvor den skal være.
if (PublishingWeb.IsPublishingWeb(site))
{
PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(site);
publishingWeb.DefaultPage = site.GetFile(“sider/welcome.aspx”);
Dette sætter din nyligt uploadede fil til sitecolloectionens welcomepage.
publishingWeb.Update();
}
Dette er bare et kort eksempel der viser hvor nemt sharepoint kan modificeres fra dine egne programmer.
Når man laver et program i java kan man som regel uden problemer køre det på en mac. Det eneste problem er at det som standard ikke opfører sig som et “rigtigt” mac program, menulinien ligger ikke i toppen af skærmen og standard menupunkter som about, quit og preferences virker/eksisterer ikke.
Dette kan meget nemt løses med ganske få kodelinier.
Følgende eksempel håndtere de ekstre standardmenupunkter der bør være i et mac program:
new MacOSAboutHandler();
MRJApplicationUtils.registerPrefsHandler(
new MRJPrefsHandler() {
public void handlePrefs(){
new navnet-på-din-klasse-med-configuration().setVisible(true);
}
}
);
MRJApplicationUtils.registerAboutHandler(
new MRJAboutHandler() {
public void handleAbout(){
new Navnet-på-din-about-klasse().setVisible(true);
}
}
);
MRJApplicationUtils.registerQuitHandler(new MRJQuitHandler()
{
public void handleQuit()
{
System.exit(0);
}
});
}
Du kan flytte menubaren op i toppen af programmet hvis du køre det med parametren -Dcom.apple.macos.useScreenMenuBar=true
Det er dog ikke den mest elegante løsning, det nemmeste er at lave en korrekt app pakke til macen med værktøjet jarbundler (Kommer på macen sammen med developertools) og sætte kryds i at menuen skal flyttes op.
Som det sidste, hvis java programmet også skal køre på andre platforme end en mac vil du sikkert gerne kunne identificere om det køre på en mac, også igangsætte overstående kode. Dette kan du køre med de følgende to linier:
String lcOSName = System.getProperty(“os.name”).toLowerCase();
boolean MAC_OS_X = lcOSName.startsWith(“mac os x”);
Som standard er de fejlmeddelelser som sharepoint kommer med når noget går galt (Exceptions osv) ikke særligt informative. De er beregnet på ikke tekniskkyndige slutbrugere og ikke på nogen der skal rette fejlene.
For at få mere uddybende fejlbeskeder skal man rette to steder i web.config filen. I <System.web> sektionen skal man ændre <customErrors mode=”On” /> til <customErrors mode=”Off” /> samt i <sharepoint> sektionen ændre
<SafeMode MaxControls=”200″ CallStack=”false” DirectFileDependencies=”10″ TotalFileDependencies=”50″ AllowPageLevelTrace=”false”>
til
<SafeMode MaxControls=”200″ CallStack=”true” DirectFileDependencies=”10″ TotalFileDependencies=”50″ AllowPageLevelTrace=”false”>
Når filen så er gemt vil man få langt mere fejlinformation.
Den kinesiske mur
Hvis man har oprettet et IIS websted og senere ønsker at skifte godkendelsesform kan man anvende scriptet adsutil.vbs der normalt ligger i c:inetpubadminscripts
Denne guide vil vise hvordan man bruger dette script.
Først kan man bruge det til at undersøge hvilken godkendelsesform der er sat på et givent IIS websted. Dette gøres med kommandoen:
cscript c:inetpubadminscriptsadsutil.vbs get w3svc/1/root/NTAuthenticationProviders.
Her er 1 tallet IDet på det websted man ønsker at undersøge. Man kan finde dette ID ved at åbne WebSites mappen i IIS Manager og kigge i kollonen Identifier.
Kommandoen vil, hvis websitet er sat til NTLM godkendelse, svare følgende:
NTAuthenticationProviders : (String) “NTLM“
Hvis kerberos var sat som den eneste godkendelsesform ville den havde svaret:
NTAuthenticationProviders : (String) “Negotiate“
Hvis man foreksempel ønsker at anvende både NTLM og Kerberos godkendelse på et websted kan dette sættes med følgende kommando:
cscript c:inetpubadminscriptsadsutil.vbs set w3svc/1/root/NTAuthenticationProviders “Negotiate,NTLM“
Hvis man fjerner en godkendelses type skal man huske også at rekonfigurere den software der anvender sitet (Fx sharepoint).
Hvis du ønsker at køre php koder i filer der ender på .html (.htm) kan det godt lade sig gøre med en enkelt ændring i webstedets lokale apache konfiguration.
Du skal oprette en fil i roden af dit webbibliotek med navnet .htaccess og i den skal du tilføje følgende:
AddType application/x-httpd-php .htm
AddType application/x-httpd-php .html
Så vil apache fortolke .html filer med php kode i. Det kan man også bruge til sjove ting som at kalde sine php filer .asp og smide følgende i filen:
AddType application/x-httpd-php .asp
AddType application/x-httpd-php .aspx
Så vil det se ud som om din side køre asp. Du skal naturligvis have adgang til at bruge .htaccess filer for at dette virker.
Da jeg kører webmail på min server ville jeg gerne kører https således at dit brugernavn/adgangskode og indholdet af mine e-mails ikke bliver opsnappet af uvedkomne. Da hvordan man gjorde dette ikke var umiddelbart indlysende har jeg lavet denne guide så andre kan få glæde af mine erfaringer.
Først skal vi generere krypterings nøglerne. Dette gøres med følgende kommandoer (der, som alle andre kommandoer i denne guide skal køres som root):
Først skifter vi til apache2 ssl biblioteket (Behøves ikke, men gør det nemmere at få fat i certifikatet senere)
cd /etc/apache2/ssl/
Og derefter genereres certifikatet:
openssl genrsa -out ssl.key 1024 openssl req -new -key ssl.key -out ssl.csr
Når du kører den sidste kommando vil du blive spurgt om ting som dit navn osv. Den vigtige ting her er når du bliver spurgt om host. Den skal være præcis det samme som domænenavnet, ellers vil brugerne få en fejl.
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt -days 365 angiver hvor længe nøglen er gyldig. I dette tilfælde 365 dage.
Når den er genereret skal du fortælle apache at den skal bruge SSL med kommandoen a2enmod der loader nye moduler i apache ved at skrive (Dette skridt er kun relevant på debian baserede systemer (inklusiv ubuntu): a2enmod ssl
Når SSL nå er slået til skal vi også fortælle apache at den skal lytte på https porten der er 443.
Dette gøres ved at tilføje linien: Listen 443 Til filen: /etc/apache2/ports.confNu skal du så opsætte din virtual host i apache. Den kunne for eksempel se ud som den følgende og skal som regel ligge i filen /etc/apache2/sites-available/ default:
<VirtualHost webmail.martinschultz.dk:443>
DocumentRoot /stien/til/din-webmail ServerName webmail.martinschultz.dk
<Directory “/stien/til/din-webmail “> allow from all Options +Indexes </Directory>
SSLEngine on SSLProtocol +SSLv2 +SSLv3
SSLCertificateFile /etc/apache2/ms.dk.crt
SSLCertificateKeyFile /etc/apache2/ms.dk.key
ServerAlias webmail.martinschultz.dk
ErrorLog /stien/til/din-webmail/webmail.log
LogLevel notice
Options FollowSymLinks Includes
Includes NOEXEC SymLinksIfOwnerMatch
</VirtualHost>
Det vigtige i denne fil er at adressen i VitualHost bliver efterfulgt af :443 og sll bliver slået til og peget hen på certifikatet hvilket sker med:
SSLEngine on SSLProtocol +SSLv2 +SSLv3
SSLCertificateFile /etc/apache2/ms.dk.crt
SSLCertificateKeyFile /etc/apache2/ms.dk.key