w Net-security-devel - Tornevalls Corner Skip to content

Google!

Archive

Category: Net-security-devel

This post is for the guys at vbulletin.org, by request.

First of all, here’s the current source:

http://tmm.tornevall.net/dev/nntpgw-100312.tar

Changes made:

  • admincp/nntp_settings.php
    • Added settings for ”static email” for the from-header. Using this, will set a non-dynamic sender e-mail.
  • gateway.php
    • Added ”support” for console-runs (fix for vBulletin 4.0 that doesn’t like this)
    • ”Debug”-modes: 1 = Activate debug (not used), 2 = Unlock the script if it got stuck (this is a console thing)
    • Added some info into a logfunction to get more verbose info on connection
    • Dupechecker for threads/posts. If the xref/lastpost-value changes due to the nntpserver, this function avoids duplicate posts from the newsserver. This is extremely nice, if the newsserver used in some reason has been reset due to reinstallations, crashes etc (yes, this has happened to me – this is the fix)
    • Last-Insert-ID fixed, an old issue that happens when trying to read a new post from a forum
  • includes/functions_nntp.php
    • Small fixes, including footer changes – in some reason the original footer added to posts, made from a forum disturbed me, so this has been cleaned up so it looks more like a ”real” post on usenet. This fix was something about the signatures, so to speak.
    • Message-ID, References and From manipulated (partially referred to the static-email-setting above)
    • Another first-post-id/last-post-id fix
    • An old issue about attachments fixed here (observer that this is always accepting attachments/thumbnails). It also includes some kind of extension fix. Well, this is a very old fix and one of the first made to the script and my memory is quite blurry in this case… But I’ve never needed to change this back to it’s original state
    • require class_image.php replaced for attachments support. Also this is an old issue, and documented somewhere in the thread at vbulletin.org
  • includes/nntp.php
    • Fix for handling usenet-traffic if the webserver where the script is running, happens to run a peer for the nntp-server (sending MODE READER on connection – if the server is a peer, some servers initially are expecting MODE  STREAM, which the script won’t understand)

This is it I think. Wishes and questions will be answered if possible!

See you at vbulletin.org!


Läs även andra bloggares åsikter om , , , , , , , , , ,

$loc = preg_replace("/(.*?)Location: (.*?)\n(.*)/s", '$2', preg_replace("[\r]", '', $test));

Rensar allt framför och bakom exempelvis följande text:

Server: Apache
X-Powered-By: PHP/5.3.1
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Location: http://www.tornevall.net/index.php?id=77
Content-Type: text/html

Utresultatet blir:

http://www.tornevall.net/index.php?id=77

TorneEngine har fått ytterligare en funktion för att förenkla livet – saker man borde ha tänkt på tidigare… Denna gången handlar det om att snabbt kunna skicka in SQL-frågor i en databas och samtidigt slippa tänka själv. Det sparar åtminstone en del tid och en del kodutrymme.

Exempel:

Parametrar och dess värden lagras i en array. Dessa vill jag snabbt kunna skicka in i en databas, antingen för att modifiera värden, eller för att lägga in helt nya.

$sql[username] = "Pelle";
$sql[password] = "p4ssw0rd123";

Implodefunktionen fixar det galant! Den skall dock användas från en class, så att den inte förstör PHPs befintliga implodefunktion.

$ins = $tornevall->db->implode($sql);
$upd = $tornevall->db->implode($sql, "update");
echo "INSERT INTO test ($ins[0]) VALUES ($ins[1])\n";
echo "UPDATE test SET $upd[0] WHERE userid = 3\n";

Resultatet blir fantastiskt bekvämt enligt nedan!

INSERT INTO test (username, password) VALUES ('Pelle', 'p4ssw0rd123')
UPDATE test SET username = 'Pelle', password = 'p4ssw0rd123' WHERE userid = 3
/*
	Implode columns and their values

	Returned data:

	INPUT TYPE: Insert
	$array[0] - "Column names"
	$array[1] - "Column values"

	INPUT TYPE: Update
	$array[0] - "Columns = '$values'"

	- Tornevall
*/
function implode($sql = array(), $type = "insert")
{
	foreach ($sql as $p => $v)
	{
		$inserts[] = $p;
		$values[] = "'" . $this->injection($v) . "'";
		$updates[] = "$p = '".$this->injection($v)."'";
	}
	if ($type == "insert")
	{
		$ret = array(implode(", ", $inserts), implode(", ", $values));
	}
	else
	{
		$ret = array(implode(", ", $updates));
	}
	return $ret;
}

Testa gärna!

RSS-Vakten övervakar bloggar och rapporterar förändringar i dessa. Förändringarna lagras i cache och om förändring har skett i de inlägg som den snappar upp, så kommer det även visas på sidan. Sidan kollar även om blogginlägg har raderats och man har en chans att göra en förhandsvisning på inläggen!

http://dev.tornevall.net/rsswatch/index.php

Så här kan det se ut när inlägg i en övervakad blogg ändras (bilden kan förstoras):


Läs även andra bloggares åsikter om , , ,

Under utveckling: Ett RSS-övervakare som övervakar RSS-sidor. Exempelvis bloggar eller nyhetssidor. Men detta scriptet kommer vara lite speciellt. Det kommer nämligen kontrollera de aktuella posterna i RSS-filen för att se om någon förändring har gjorts i inläggen som postas – och eventuellt spegla websidan med innehållet. Och varje gång jag skriver till en grej i scriptet kommer jag på vilka tillägg man skulle kunna lägga med också. Exempelvis en mailfunktion…

Då är bara frågan hur långt man kommer komma på det. Speciellt eftersom det strax är dags för ännu en melodifestival. Man måste ju hålla utkik efter plagiat! Och Dolph!

Edit: Testar

Det här inlägget påbörjades klockan 22:01 under gårdagen. Jag somnade 7 och väcktes klockan 9 igen av att telefonen ringde. Någon hade upptäckt att popmailen hade slutat fungera. Jag funderade på vad det var, men kom sedan på att det bara var en portforward jag missat. Mail hade nämligen ramlat in i mailboxarna mellan 7-10 precis som om inget hade hänt så det avhjälptes rätt snabbt. Så här kommer dokumentationen, kring hur mailflytten gick! Åtminstone grovt sett.

22:00 – Ikväll blir uppenbarligen den stora dagen. Mailservern har börjat konstra igen och startar spontant om sig på grund av värmeproblem. Så nu är måttet rågat. Skiten ska väck, bort, slängas, ut! Jag vill inte se eländet längre. Nästan allt är klart. Den nya servern har stått och väntat på sina användare, men av lathet har jag inte orkat ta itu med det. Dessutom har jag haft en e-postlist-server på samma maskin som även den måste fungera. Men nu är det som sagt dags. Det får bära eller brista och jag tvingar mig själv att offra min dyrbara fritid.

Så till att börja måste jag se till att ezmlm är patchad och klarar vad den klarar nu. Jag har redan hunnit bli förvånad, eftersom utvecklingen av listservern tydligen har varit rätt ordentlig sedan jag kollade på den sist. Jag sitter med en ezmlm-idx 0.43 när det uppnebarligen finns en ezmlm-idx 7.0.2!

Självklart önskar jag ha kvar mitt ”eventuella” MySQL-stöd så det blir till att glo igenom en massa dokument samtidigt. I det första dokumentet jag hittar står det lite om tabeller, men det finns ingen riktigt info om hur man skapar tabellerna – och jag är ju lat, så jag skippar den delen tills den dag jag snubblar över eländet. SQL-stödet skall dock med ändå. Just in case. Jag börjar dock med att hämta idx-versionen. Den gamla standardversionen har jag ju redan. Förhoppningsvis fungerar kompileringen hela vägen även med denna…

make
make man
make mysql
conf-lang ändrar jag till sv i för att få svenskt språkstöd
make setup
cp ezmlmrc /usr/local/bin/ezmlm/ezmlmrc.en
cp lang/sv/ezmlmrc /usr/local/bin/ezmlm/ezmlmrc

Eftersom testprogrammen nästan alltid failar för mig, så skippar jag de procedurerna, som INSTALL-filen gärna vill att jag gör. Så, första delen av installationen bör alltså vara klar nu. Nu börjar det fruktansvärt långtråkiga kopierandet av användare och deras mailboxar… Glöm dock inte att uppgradera gamla listor om det finns några. Detta görs bland annat med ”ezmlm-idx DIR” för att återindexera listorna (har inte kunnat bekräftat detta själv iofs). Men det viktigaste är att man gör en ”ezmlm-make -+ ~alias/listdir” på alla gamla listmappar – jag stötte nämligen i efterhand på felet ”deny/key does not exist/Sorry, I’ve been told to reject your posts”. Efter remaken, så fungerade listorna igen. Relativt smärtfritt om man jämför med hur resten av flytten gick (det sista här är skrivet efter att allt blivit färdigt).

[...]

Några timmar senare var man klar. För att verkligen vara säker på att alla hemkataloger fortsätter tillhöra rätt användare avslutas nu användarprocessen med en liten sök-och-ersätt:

grep -i /home /etc/passwd | sed s/”[ ]”/”_”/ | sed s/”[:]”/” ”/g | awk ‘{printf ”chown -R ” $3 ”:” $4 ” ” $6 ”\n”}’ | grep -i home

Och för gruppbehörigheterna för varje undermapp…

find -type d -maxdepth 1 | sed s/”[\/]”// | sed s/”[\^\.]”// | awk ‘{printf ”chgrp ” $1 ” ” $1 ”\n”}’

Problem uppstår givetvis på andra håll dock. Med pop3-servern som vägrar acceptera användare som loggar in. Courier-lösningen som tidigare installerats fungerar inte heller eftersom authdaemon där kräver grejer jag inte vill ha. Ju lite inverkan som möjligt, desto bättre. Standard-auth via passwd/shadow är alltså ändå alternativet jag godtar. Det löstes dock genom att …

pop3   stream  tcp     nowait  root    /usr/sbin/tcpd  /var/qmail/bin/qmail-popup tornevall.net /bin/checkpassword qmaill /var/qmail/bin/qmail-pop3d Maildir

… måste ändras till …

pop3    stream  tcp     nowait  root    /usr/sbin/tcpd  /var/qmail/bin/qmail-pop

Därefter skapar man en fil i qmail-bin-katalogen som innehåller:

#!/bin/sh
/var/qmail/bin/qmail-popup tornevall.net /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir

Och vips var den delen färdig! Varför folk jämt skall envisa med helt sjuka lösningar förstår jag faktiskt inte, när man kan göra det så enkelt för sig…

Beträffande ett authpaket som saknas för courier så kan varken jag eller någon annan (figures! det har vi aaaaaaaaaldrig varit med om förr) svara på varför authshadow saknas vid kompileringen. Ja, förutom att ett gäng shadowlibs saknas, så att kompilatorn kan hitta dom ordentligt. Och förutom att det är helt omöjligt att hitta libs att installera också. Förutom ”shadow suite” – som inte går att kompilera. GÖTT! Därför ligger libauthshadow för courier HÄR nu! Fysiskt om min första courierinstallation efterföljs, så skall dessa filerna placeras i /usr/local/lib/courier-authlib och i /usr/local/etc/authlib/authdaemonrc på raden authmodulelist skall authshadow finns med. Fixat och klart!

Efter många om och men så är då projektet – till synes – avslutat. Numera sitter man här, med en specifik in- och uthanterande mailserver, med mailauth. Det står även en annan smtp-server, hos ”grannen”, som explicit skickar ut mail från interna nätet – där enbart några få ipadresser släpps in för att få skicka mail. Bland annat ovanstående nya mailserver (och den gamla). Det är en sendmail-daemon som inte har så många andra uppgifter än att forsla mailtrafiken förbi port 25, genom en VPN-tunnel. Inga fel har hittats ännu och förhoppningsvis håller sånt sig borta även i fortsättningen, så man slipper sitta ytterligare timmar och rätta fel.

Projekt: Bloggportalen – Sökord

Detta blir det första officiella utvecklingsprojektet, som i första hand utförs för forskningssyften. Idén föddes dock ur ett irritationsmoment, där andra bloggare omotiverat postat en massa populära sökord på bloggportalen, med syfte att ”hamna högt upp” i listorna. Tanken slog mig då, om man inte skulle ta ett steg längre – med lite tur kanske någon vaknar och börjar rätta till indexeringen på bloggportalen. Eller inte. Så det här torde hamna – och sluta – vid ett helt vanligt forskningsprojekt. Ett annat script inkluderas i samband också – se under rubrikerna nedan.

Under betatesting alltså.

Tips till den som administrerar bloggportalen: Rensa ut toppbloggarna en gång i månaden och låt andra få en chans att vara med och ”tävla”.

Bloggportalen: Autotagger

Första scriptet – taggaren – berikades med tre singeltaggar – bptag, bptagtext och bptaghref. Till dessa behövs inga avslutande taggar, utan de ersätts helt  av scriptet, med sökinnehåll från Bloggportalen. Taggarna har alltså ett enda syfte: Autoposta bloggportalens senaste 50 sökkriterier i ett inlägg. Varför detta? För att piska alla som sitter och försöker åstadkomma detta manuellt.

Resultatet blev enligt bilden till höger (klicka på den för förstoring). Ett exempel finns även längst ned i detta inlägget. Tagpluginen är ett litet tiny-tiny-script som med hjälp av regular expressions plockar ut de 50 senaste sökorden från ”bloggsök”.

Den har två lägen: Ett textläge (2) och ett ”href”-läge (3). Läge 1 är defaultläget, som i bilden står pekad mot ”text”, dvs alla sökorden listas rakt upp och ned efter varandra. Det andra läget listar orden på nästan samma sätt, men de länkar tillbaka till bloggsök också. I skrivande stund har även några fler grejer lagts till och jag funderar även på att lägga till en begränsning av antalet sökkriterier som listas också. Topplistan går att sortera i bokstavsordning – och listas med ett ”sökord” per rad.

Bloggportalen: Specifika sökord

Det andra projektet handlar om att länka sig själv till Bloggportalens söksidor, likt många andra gör. För övrigt ett väldigt simpelt skrivet script som i princip bara gör en ”sök & ersätt” på vissa ord och sätter in länken till bloggportalens söksida. Här i bloggen har jag aktiverat scriptet för att se hur det fungerar, där ordet som ersätts är ”jag”. Skall se om jag någon gång i framtiden orkar göra pluginen (vilket den bygger på) även går att konfigurera genom wordpress. Men det blir ett senare problem. Det finns säkert redan script som fixar detta, men jag är inte vän av tålamod alla gånger och man vill ju gärna ha lite ”egen” kontroll.


Detta skriver andra bloggare om just nu: Tornevall, alabama, amanda falk, anna bergendahl, anorexi, bastardo, bloggunionen.se, bodil malmsten, bondage, bröst, dennis m, dennism, dennism.se, desiree nilsson, foki, foki*, glasögon, guess her beaver, gummistövlar, http://jonashsvensson.se, jackie ferm, jonas h svensson, jonashsvensson, jonashsvensson.se, kenza, kissnödig, latex, magnus bråth, malin karlsson, melodifestivalen, mode, nimrod, novell, omtvserier, omtvserier.se, ormen i paradiset, otrohet, sauk, sex, sexstory.se, skinnbyxor, snabbisen, snabbisen.blogspot.com, sperma, stay-ups, stefan och malin, stövlar, svenskarnas parti, sverigedemokraterna, topless, tove lind


Läs även andra bloggares åsikter om , , , , , , , , ,

Finns det något bättre än att kunna snabbmoderera kommentarer i wordpress UTANFÖR wordpress egna gränssnitt (eftersom det går snabbare) och samtidigt få dessa svartlistade åt alla andra som också har dessa funktioner påslagna i sina bloggar? Nej, det gör nog inte det! Och aksimet gör samtidigt en del av jobbet, genom att filtrera bort alltihop, så man bara kan markera vad som skall ut i svartfiltret!

Här är queryn:

SELECT c.comment_author_IP,c.comment_content,c.comment_ID,p.post_title,r.term_taxonomy_id,t.name
FROM wp_comments c
INNER JOIN wp_posts p
ON c.comment_post_ID = p.ID
INNER JOIN wp_term_relationships r
ON r.object_id = p.ID
INNER JOIN wp_terms t
ON t.term_id = r.term_taxonomy_id
WHERE p.post_status = ‘publish’
AND c.comment_approved = ’spam’

Som sedan visas direkt via ett underbart gränssnitt!


Läs även andra bloggares åsikter om , , , , , , , , ,

Och det är tydligen lättare än nånsin att få upp det!

Jag fann en tidning (techworld) på mitt nya jobb, med en artikel som handlade om ipv6 och jag blev förstås åter nyfiken på att försöka få igång det igen. Jag har ju haft det i flera år, men i omgångar det inte fungerat. Kunde det vara så att jag skulle få tillbaka det? Ja, det är ju egentligen redan avslöjat… Tunnelbroker är den leverantör av adresser som rekommenderades i tidningen och det var visserligen lätt att installera, men någon fullständig anslutning fick jag aldrig. Så jag fick återgå till min gamla broker jag hade tidigare. Och jag blev faktiskt förvånad. Mitt konto var intakt så det behövde aldrig registreras något nytt konto. Däremot var anslutningsklienten avsevärt förbättrad. Två program installerades och sedan var allt klart. Att sedan få igång routingen i XP var ännu enklare. Faktum är att jag i princip inte behövde göra något alls. Så nu har jag en fullt fungerande ipv6-router stående här. Helt underbart!

download client-linux (gw6c)
download radvd
install radvd
gmake
make installdir=/usr/local/ipv6 install
redigera configfilen lite
starta gw6c
KLAR!

radvd är visst den klient som delvis även agerar dhcp för efter kommandot i XP, så fanns det en färdig uppkoppling mot servern. Det enda som behövdes var…

ipv6 install

Tiderna förändras onekligen.

Så vad ändrade jag i configen då? Jo, detta:

server=authenticated.freenet6.net
auth_method=any
host_type=router
prefixlen=56
dns_server=ns1.tornevall.ne

Detta för att verkligen kunna köra router med fler ipadresser än en. Det är förresten Slackware 12, kernel 2.6.x som körs.

Lite minnesanteckningar bara…

Fördelen med Maildir är att alla mail lagras som enskilda filer istället för att allt läggs i samma fil (mboxfiler). Det här ger vissa fördelar när man vill ta bort mail med specifikt innehåll. Ett sånt script dök precis upp, som baseras på att mailservern efter ett massutskick har fått tillbaka de mail som inte kunnat levereras till mottagaren. Att sitta och leta efter alla såna tillbakastudsade mail i en mailklient som inte fattar att sånt som levererats som bifogade filer OCKSÅ skall genomsökas.

Enda problemet är att alla Maildir-mailfiler innehåller ”:” så man kan inte bara söka och separera innehåll och filnamn. Men med lite trollande så… Om alla mail innehåller ungefär samma sak så går det rätt bra faktiskt. Så här kan det se ut… Scriptet letar fram varje mail som innehåller  ”forne” och grep returnerar raderna den hittat det på (denna gången orkade jag dock inte göra sökningen tyst så att jag bara får fram filnamnen).

grep -i forne * | awk '{printf $1 "\n"}' | sed s/"\:K"/" "/ | awk '{printf "rm " $1 "\n"}' >orka
chmod +x orka
orka

När grep är klart, separeras allt innehåll bort utom första ordet som grep har tagit fram – där även filnamnet är… Utan sista delen med sed och awk ser resultatet ut så här:

För att få bort resterande text används alltså sed för att få bort ”:K”, där ett mellanslag istället skapas. Här drar vi igenom den nya textsträngen med en sista awk, så bara filnamnet återstår. Detta kan vi sedan returnera i en ny output, som blir raderingskommandot för varje separat mail.

Wohoo!