Spy_nickname (spy_Pseudo)
Posted: Fri Dec 10, 2010 1:18 am
ce prg sert a voir qui est connecté sur le forum anglais
meme si nous ne sommes pas connecté !!
et peut nous avertir (par un beep() ) si un membre est connecté
savoir si Fred passe sur le forum par exemple
ou pour surveiller un robot spameur par exemple
Google Translate :
this prg is used to see who is logged on the forum English
although we are not connected!
and can we tell (by an beep() ) if someone is logged
whether Fred connecting on the forum for example
or an robot for the moderate ...
run this code and wait 10 secondes
meme si nous ne sommes pas connecté !!
et peut nous avertir (par un beep() ) si un membre est connecté
savoir si Fred passe sur le forum par exemple

ou pour surveiller un robot spameur par exemple
Google Translate :
this prg is used to see who is logged on the forum English
although we are not connected!
and can we tell (by an beep() ) if someone is logged
whether Fred connecting on the forum for example

or an robot for the moderate ...
run this code and wait 10 secondes
; Spy_Pseudo
; by Dobro
; Purebasic 4.51
;-initialisation
Declare.S dobro_replace2(chaine$,chaine_cherche$,chaine_remplace$)
Declare.S Url2Text(Url.S)
Declare.S Url2Text2(Url.S, OpenType.b,ProxyAndPort.S)
Declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Declare.S recup_pseudo()
Declare.S Extract(phrase.S,balise_gauche.S,balise_droite.S,longueur)
Declare sonne(*bidon)
Global newlist liste_pseudo.S()
Global pseudo_alarme.S
;****************** exemple de phrase a recuperer **********************************************
; <td class="row1" width="100%"><span class="genmed">Au total il y a <strong>17</strong> utilisateurs en ligne :: 9 enregistrés, 0 invisible et 8 invités (basées sur les utilisateurs actifs des 5 dernières minutes)<br />Le record du nombre d’utilisateurs en ligne est de <strong>59</strong>, Le Dim 11/Juin/2006 19:10<br /><br />utilisateurs enregistrés : <a href="./memberlist.php?mode=viewprofile&u=1659">Berfau</a>, <a href="./memberlist.php?mode=viewprofile&u=111">Dobro</a>, <span style="color: #9E8DA7;" class="username-coloured">Exabot [Bot]</span>, <a href="./memberlist.php?mode=viewprofile&u=305">flaith</a>, <span style="color: #9E8DA7;" class="username-coloured">Google [Bot]</span>, <span style="color: #9E8DA7;" class="username-coloured">Google Adsense [Bot]</span>, <a href="./memberlist.php?mode=viewprofile&u=406">SPH</a>, <a href="./memberlist.php?mode=viewprofile&u=1570">Warkering</a>, <span style="color: #9E8DA7;" class="username-coloured">Yahoo [Bot]</span></span></td>
;
;
; StringField(string$,1,">Dobro</a>" )
; ************************************************************************************************
Enumeration
#Window
#timer_1
#editor
#file
#pseudo
#text_pseudo
#font
#titre
EndEnumeration
Global Site.S= "index.php"
; *********************************************************************
If filesize ( "spy_pseudo" ) <>-1
openfile ( #file , "spy_pseudo" )
windowx = readlong ( #file )
windowy = readlong ( #file )
pseudo_alarme.S= readstring ( #file )
closefile ( #file )
Else
windowx =10
windowy =10
EndIf
Global decalage=30
; ************************* interface *************************************
;-interface
openwindow ( #Window , windowx , windowy ,100,350, "Liste des Pseudo Connectés" , #PB_Window_SystemMenu )
stickywindow ( #Window , 1)
Handle = windowid ( #Window )
SetTimer_ (Handle, #timer_1 , 5000, @TimerProc()) ; toute les 1 minutes
textgadget ( #titre , 10, 5, 100, 50, "Spy_Pseudo" )
If loadfont ( #font , "Comic Sans MS" , 12, #PB_Font_Bold )
setgadgetfont ( #titre , fontid ( #font ))
EndIf
editorgadget ( #editor , 10, 10+decalage, 100,200)
textgadget ( #text_pseudo , 10, 220+decalage, 90, 55, "nicklist monitor" + chr (10)+ "separated by a comma" )
stringgadget ( #pseudo , 10, 280+decalage, 90, 20, "" )
setgadgettext ( #pseudo ,pseudo_alarme.S)
; ************************************************************************²
; ****************** boucle principale ***************************************
;-bouce_principale
Repeat
event= windowevent ()
; tout se passe dans le timer
Select event
Case #PB_Event_Gadget
pseudo_alarme.S= getgadgettext ( #pseudo )
EndSelect
Until event = #PB_Event_CloseWindow
; **************************************************************************
KillTimer_ (Handle, #timer_1 )
openfile ( #file , "spy_pseudo" )
X= windowx ( #Window ):Y= windowy ( #Window )
writelong ( #file , X)
writelong ( #file , Y)
pseudo_alarme.S= getgadgettext ( #pseudo )
writestringn ( #file ,pseudo_alarme.S)
closefile ( #file )
; ***************** Zone Procedures ****************************************************
;- les procedures
Procedure.S recup_pseudo()
; recupere les pseudo et les mets dans liste()
text_page$=Url2Text(Site.S)
For i2=1 To len (text_page$)
ligne_page$= stringfield (text_page$,i2, chr (10))
If findstring (ligne_page$, "gistered users" ,1)
ok=1
; pos_debut1= FindString(ligne_page$,"tilisateurs enregistr",1)+35
clearlist (liste_pseudo.S())
Repeat
pseudo.S=Extract(ligne_page$, chr (34)+ ">" , "</a>" ,15) ; on ne recupere que si inf a 15 carcteres d'ecart ²
If pseudo.S<> "dobro_stop"
If pseudo.S<> ""
addelement (liste_pseudo())
liste_pseudo()=pseudo.S
EndIf
EndIf
Until pseudo.S= "dobro_stop"
EndIf
If ok=1
ok=0
Break
EndIf
Next i2
ProcedureReturn
EndProcedure
ProcedureDLL.S Url2Text2(Url.S, OpenType.b,ProxyAndPort.S)
; 1 INTERNET_OPEN_TYPE_DIRECT Resolves all host names locally.
; 0 INTERNET_OPEN_TYPE_PRECONFIG Retrieves the proxy Or direct configuration from the registry.
; 4 INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY Retrieves the proxy Or direct configuration from the registry And prevents the use of a startup Microsoft JScript Or Internet Setup (INS) file.
; 3 INTERNET_OPEN_TYPE_PROXY Passes requests To the proxy unless a proxy bypass list is supplied And the name To be resolved bypasses the proxy. In this Case, the function uses INTERNET_OPEN_TYPE_DIRECT.
isLoop.b=1
INET_RELOAD.l = $80000000
hInet.l=0
hURL.l=0
Bytes.l=0
Buffer.S= space (2048 )
res.S= ""
hInet = InternetOpen_ ( "" , OpenType, ProxyAndPort, "" , 0)
hURL = InternetOpenUrl_ (hInet, Url, #Null , 0, INET_RELOAD, 0)
Repeat
InternetReadFile_ (hURL,@Buffer, len (Buffer), @Bytes)
If Bytes = 0
isLoop=0
Else
res = res + left (Buffer, Bytes)
EndIf
Until isLoop=0
InternetCloseHandle_ (hURL)
InternetCloseHandle_ (hInet)
ProcedureReturn res
EndProcedure
ProcedureDLL.S Url2Text(Url.S)
ProcedureReturn Url2Text2(Url,1, "" )
EndProcedure
; **************************** Timer **********************************************
;-Timer
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Select uMsg
Case #WM_TIMER
Select idEvent
Case #timer_1
; Ici, le code à executer toutes les 30 secondes
; AddGadgetItem(#editor, -1, Url2Text(Site.S))
recup_pseudo()
ClearGadgetItems( #editor )
compteur= countstring (pseudo_alarme.S, "," )+1
ForEach liste_pseudo.S()
pseudo.S =liste_pseudo.S()
For i=1 To compteur
pseudo_test.S = stringfield (pseudo_alarme.S ,i, "," )
If pseudo.S=pseudo_test.S
createthread (@sonne(),*bidon)
EndIf
Next i
addgadgetitem ( #editor , -1, pseudo.S )
Next
EndSelect
EndSelect
EndProcedure
Procedure.S Extract(phrase.S,balise_gauche.S,balise_droite.S,longueur)
; by Dobro
; retourne l'extrait de chaine compris entre 2 balises
; les balises sont 1 caractere ou un mot.....
; utile pour extraire les infos d'une page web par exemple
; le parametre longueur , sert a determiner l'eccart entre 2 balises
; et de savoir si l'on recupere l'extrait si les balises sont trop éloigné
; si "dobro_stop" est renvoyé , fin de l'exploration du text$
Static pointeur_debut
Static pointeur_fin
pointeur_debut= findstring (phrase.S,balise_gauche.S,pointeur_debut)+ len (balise_gauche.S)
pointeur_fin= findstring (phrase.S,balise_droite.S,pointeur_debut)
If (pointeur_debut- len (balise_gauche.S))=0 Or pointeur_fin=0
extrait$= "dobro_stop" ; signale la fin du traitement²
pointeur_debut=0
pointeur_fin=0
ProcedureReturn extrait$
EndIf
long=pointeur_fin-pointeur_debut
extrait$= mid (phrase.S,pointeur_debut,long)
If len (extrait$)<longueur
pointeur_debut=pointeur_fin
ProcedureReturn extrait$
Else
extrait$= ""
ProcedureReturn extrait$
EndIf
EndProcedure
Procedure sonne(*bidon)
beep_ (880,1000)
EndProcedure