Page 4 of 8

Re: CoolBasic & netti = cbNetwork

Posted: Thu May 21, 2009 4:54 pm
by axu
programmer of DSG wrote:Jos tekisi omat foorumit, siellä sitten pitäisi rekisteröityä pelin käyttäjäksi, niin miten tämä onnistuisi? Kun kirjoittaisi nimen ja salasanan ohjelmassa, niin pääsisi servu valikkoon ja sieltä joinimaan peliin. :) Miten asia tapahtuisi käytännössä, jos se on edes mahdollista cb:n networkilla?
Mielestäni se voisi toimia näin(en sitten ole mikään PHP/cbNetwork asiantuntija): Kun halutaan kirjautua ohjelmaan/peliin niin ohjelma lähettää http pyynnön, jossa käyttäjänimi ja salasana sisällytetään urliin php:lle HTTPGet() funktiolle sopivaksi ja tämä sitten antaa normaalin html sivun sijasta tiedoston joka sisältää tiedon siitä, onnistuiko kirjautuminen. Ohjelma lukee sen sitten funktiolla HTTPLoadContent() ja hakee sieltä tiedon annetaanko käyttäjän mennä eteenpäin. Mielestäni pitäisi toimia, mutta Phptä pitäisi osata myös.

Re: CoolBasic & netti = cbNetwork

Posted: Sun May 24, 2009 4:02 am
by valscion
axu wrote:
programmer of DSG wrote:Jos tekisi omat foorumit, siellä sitten pitäisi rekisteröityä pelin käyttäjäksi, niin miten tämä onnistuisi? Kun kirjoittaisi nimen ja salasanan ohjelmassa, niin pääsisi servu valikkoon ja sieltä joinimaan peliin. :) Miten asia tapahtuisi käytännössä, jos se on edes mahdollista cb:n networkilla?
Mielestäni se voisi toimia näin(en sitten ole mikään PHP/cbNetwork asiantuntija): Kun halutaan kirjautua ohjelmaan/peliin niin ohjelma lähettää http pyynnön, jossa käyttäjänimi ja salasana sisällytetään urliin php:lle HTTPGet() funktiolle sopivaksi ja tämä sitten antaa normaalin html sivun sijasta tiedoston joka sisältää tiedon siitä, onnistuiko kirjautuminen. Ohjelma lukee sen sitten funktiolla HTTPLoadContent() ja hakee sieltä tiedon annetaanko käyttäjän mennä eteenpäin. Mielestäni pitäisi toimia, mutta Phptä pitäisi osata myös.
Jep, aika paljon niinkuin axu sanoi. Tosin, tiettyä varovaisuutta pitää käyttää kun siirretään tietoa niin, että sitä voidaan muokata matkalla. Sinun olisi pitänyt tehdä foorumeillasi oma PHP-tiedosto, jossa tarkistaisit URL:iin kirjoitetun nimen ja salasanan perusteella onnistuuko sisäänkirjautuminen ja sitten palauttaa vaikka MD5-hash nimen, salasanan ja jonkin salaisen merkkijonon yhdistelmästä.

Lue URL GetHTTPStringillä ja jos takaisin tuli se odotettu hash, niin saat mennä eteenpäin. Itse ohjelman puolellahan olisi tietysti myös generoitu se MD5-hash käyttämällä CBKK:sta löytyvää MD5-funktiota


Tässä olisi muuten esimerkki, miten voi lähettää hiscoret turvallisesti nettiin (katso koodin alussa olevat kommentit):

Code: Select all

'*** CB ***'
// Käyttää CBKK:sta funktioita:
//   MD5 -> http://vesq.org/filestorage/cbkk/MD5.CB  <-- Tämä täytyy ladata jos haluaa testata
//   URLEncode -> http://vesq.org/filestorage/cbkk/URLEncode.CB
//   GetHTTPString -> http://vesq.org/filestorage/cbkk/GetHTTPString.CB
Include "cbNetwork.cb"

Const HISCORES_PASSPHRASE = "ki#&3$&U"

Function SendHiScore(_nickname$, _score)
    
    // Luo MD5-hash, jonka avulla haxaajat eivät onnistu lisäilemään omia tuloksiaan
    hash$ = MD5(_nickname + _score + HISCORES_PASSPHRASE)

    url$ = "http://www.oman-sivustosi-url-tulee-tahan.fi/hiscores.php"
    url$ = url$ + "?nick=" + URLEncode(_nickname$)
    url$ = url$ + "&score=" + _score
    url$ = url$ + "&hash=" + hash$
    
    Return GetHTTPString(url)
EndFunction

//------------------------------------------------------------------
// *URLEncode by Bagard*
// http://cbkk.systec.fi/koodi.php?id=75
// -> "Funktio koodaa erikoismerkit oikeaan muotoon URL:sta. 
//     Kätevä mm. nettipistelistaa tehtäessä. "
//------------------------------------------------------------------

Function URLEncode(url$)
    For i = 1 To Len(url$)
        char = Asc(Mid(url$, i, 1))

        If (char <= 47) Or (char >= 58 And char <= 64) Or (char >= 91 And char <= 96) Or (char >= 123) Then
            merkki$ = "%" + Right(Hex(char), 2)
        Else
            merkki$ = Chr(char)
        EndIf

        uusi$ = uusi$ + merkki$
    Next i

    Return uusi$
EndFunction

//------------------------------------------------------------------
// *GetHTTPString by VesQ aka OonSuomesta*
// http://cbkk.systec.fi/koodi.php?id=177
// -> "Funktio lataa merkkijonoon nettisivun sisällön ja palauttaa sen."
//------------------------------------------------------------------
Function GetHTTPString$(_path$)
    nRet = HTTPGet(_path)
    // Tuli jotain muuta kuin olisi pitänyt
    If nRet <> 200 Then Return False

    HTTPLoadContent()
    For i = 1 To HTTP_ContentLength
        palautus$ = palautus + Chr(_Net_GetByte())
    Next i
    Return palautus
EndFunction

//Esimerkkiohjelma:
return_string$ = SendHiScore("Erkki Esimerkki", 15200)
MakeError return_string$

Code: Select all

<?php
/*** hiscores.php ***/
// Tämä on siis se PHP-puoli :)
    define("PASSPHRASE", "ki#&3$&U");
    
    $name = stripslashes(urldecode($_GET["nick"]));
    $score = $_GET["score"];
    $hash = $_GET["hash"];
    
    $server_hash = MD5($name . $score . PASSPHRASE);
    
    echo ( $server_hash === $hash ) ? "ok" : "fail";
?>
EDIT(12.9.2010): Fixasin linkit.
EDIT(15.11.2011): Jännät PHP-syntaksivärjäykset.

Re: CoolBasic & netti = cbNetwork

Posted: Tue May 26, 2009 6:36 pm
by MaGetzUb
Kiitos, tuo selvensi jo paljon minulle, vaikka ei vielä paljoa netin kikkoja ymmärrä.. :)
Mites saanko selville cbNetworkillä IP:n? Teen varmaan jonkun Antihack ohjelman, joka jakelee IP bännejä.. :lol:

Re: CoolBasic & netti = cbNetwork

Posted: Tue May 26, 2009 7:06 pm
by Jani
programmer of DSG wrote:Kiitos, tuo selvensi jo paljon minulle, vaikka ei vielä paljoa netin kikkoja ymmärrä.. :)
Mites saanko selville cbNetworkillä IP:n? Teen varmaan jonkun Antihack ohjelman, joka jakelee IP bännejä.. :lol:
Tämä oli muistaaksesi merkin ":" edessä Client_ID muuttujassa.

Re: CoolBasic & netti = cbNetwork

Posted: Fri Jun 12, 2009 10:55 pm
by valscion
Henkru wrote:EDIT2.
Tutkin tuota funktio listaa sen verran vielä et osui silmään vielä ClientState() funktio ja sen tarkoitus? Marocerilta oisi ollut kyllä kiva jonkun lainen dokumentaatio.
http://msdn.microsoft.com/en-us/library ... S.60).aspx

Veikkaisin, että ClientState() funktio palauttaa tuon ylläolevan sivun mukaisen tilan. Tein pikatestin, joka paljasti sen että chattiesimerkin aikana ClientState()-funktion paluuarvo vaihtelee 0-2 välillä, eli vaikuttaisi tukevan veikkaustani.

Re: CoolBasic & netti = cbNetwork

Posted: Thu Jun 18, 2009 1:58 pm
by JATothrim
Argh... Laitanpa tämän tänne kun en KOLMANNELLAKAAN uudelleenkirjoitus kerralla saanut toimimaan. :x
Kyseessä on siis "Asiakas <-> Palvelin" pohja.
Olisin hyvin kiitollinen jos löydätte virheen/bugin miksi Asiakas ei saa yhteyttä Palvelimeen. Asikaan puolella heittää aina, SIIS AINA, jonkin ClientRead():n palauttaman virheen jonka seurauksena ohjelma kaatuu siihen. Tällä hetkellä Asiakas lykkää kymppitonni-kolmekasia. Kommentoin Asiakaan niin, että kun yhdistetään lähetetään pelkää idleä koko ajan. Palvelin vastaa takaisin idlellä ilman 300 rivin lisähärpäkkeitä. Mutta Yksinkertaisuudestaan huolimatta homma kusee. Älkää Epäilkö modattua cbNetWork.cb sorsaa, sillä käänsin ChatClient.cb ja ChatServer ohjelmat tuolla includella eikä ongelmia ollut. :/
EDIT:

Hips. :mrgreen: Raa'alla bugien tuho voimalla(tm) Korjasin tilanteen, itseasiassa erittäin hyvin. Palvelin/asiakas ei töki/kaadu vaikka localhostissa oli kymmenen asiakasta auki. Asiakkaiden listaus toimii kuin junanvessa.


Re: CoolBasic & netti = cbNetwork

Posted: Sun Jun 21, 2009 11:21 pm
by phons
Hei, onko mitenkään mahdollista lähettää, clientille joku file. Siis ei mistään sivulta, vaan suoraan serveriltä. Enkä nyt tarkoita pientä teksti tiedostoa jonka sisällön voi lähettää erikseen. Vaan esim. jonkun biisin lähettämistä, tai vaikka sen soittamista clientillä serverin kautta, tai kuvien katselu, tai jotain... :roll:

Re: CoolBasic & netti = cbNetwork

Posted: Sun Jun 21, 2009 11:37 pm
by JATothrim
Mahdollistahan tuo on. Toteutus vain uuppuu. ;) Tosin musiikin suora-streaminen suoraan clientiltä (tai serveritä) clientille, on mahdotonta nykyisillä netti palikoilla. (liian hidasta) Itse Koetan juuri tehdä tuommosta tiedostonsiirto juttua. Jos tiedosto ei mahdu pakettiin (on isompi kuin 4000 tavua) pitää se pilkoa osiin ja lähettää palasina. Toisessa päässä palasina saapunut tiedosto pitää osata tietenkin kasata ehjäksi ja 100% varmasti, koska dataa ei saa uuppua. (esim jos siirretään jokin .exe)

Re: CoolBasic & netti = cbNetwork

Posted: Mon Jun 22, 2009 1:21 am
by valscion
UDP on tiedostojen siirrossa errrittäin huono ja virhealtis protokolla, koska sillä ei tarkisteta, tulevatko paketit oikeassa järjestyksessä perille vai saapuvatko ne edes. Näin siis voi hyvinkin jokin elintärkeä paketti jäädä uupumaan ja ohjelma/biisi toimiikin varsin omituisella tavalla.

Mutta ainahan sitä saa testata ;) olisi hauska nähdä jotain cbNetworkilla toteutettua tiedostonjako-koodinpätkää, ihan vain mielenkiinnonkin vuoksi.

Re: CoolBasic & netti = cbNetwork

Posted: Fri Jun 26, 2009 3:46 am
by MaGetzUb
Mitenkä voisi tehdä cbNetworkillä ohjelman, jolla voisi ladata videoita youtubesta? (.flv?) En ymmärrä Http scriptiä, enkä löydä siitä mitään vinkkiä missä se video voisi piileskellä. :( Onhan se ohjelma tehty, jolla voi ladata pelejä funnygames.biz:stä, niin eikö tuon homman pitäisi luonnistua samalla tavalla?

Re: CoolBasic & netti = cbNetwork

Posted: Fri Jun 26, 2009 8:27 pm
by valscion
YouTuben HTML-lähdekoodissa ei ole varsinaisesti niitä youtuben videoiden lähteitä merkattu. Videotiedoston URL pitäisi kaapata HTTP-virrasta (jos näin voi sanoa) eikä cbNetwork siihen pysty. Funnygames.biz:stä voi taas ladata pelejä vain parsimalla tietyn pelin kohdalta sen osoite HTML-koodista ja siksi siihen ei siis vaadita muita kuin normaaleja lataus-funktioita.

Re: CoolBasic & netti = cbNetwork

Posted: Fri Jun 26, 2009 10:43 pm
by Koodiapina
Voit muuten ladata CoolBasicilla videoita netistä ilman DLL-sähellyksiäkin.

Re: CoolBasic & netti = cbNetwork

Posted: Sun Jun 28, 2009 3:05 am
by MaGetzUb
VesQ wrote:YouTuben HTML-lähdekoodissa ei ole varsinaisesti niitä youtuben videoiden lähteitä merkattu. Videotiedoston URL pitäisi kaapata HTTP-virrasta (jos näin voi sanoa) eikä cbNetwork siihen pysty. Funnygames.biz:stä voi taas ladata pelejä vain parsimalla tietyn pelin kohdalta sen osoite HTML-koodista ja siksi siihen ei siis vaadita muita kuin normaaleja lataus-funktioita.
Huomasinkin sen, koska youtubea tutkiessani en löytänyt .flv päätteisiä Urleja, kun taas löysin .swf päätteisä url:eija funnygamesista. :)
Grandi wrote:Voit muuten ladata CoolBasicilla videoita netistä ilman DLL-sähellyksiäkin.
Grandi, kerrohan toki miten olisi mahdollista? :D

Re: CoolBasic & netti = cbNetwork

Posted: Sun Jun 28, 2009 3:44 am
by Koodiapina
programmer of DSG wrote:Grandi, kerrohan toki miten olisi mahdollista? :D
Olikohan se niin, että playanimation-komento pystyi lataamaan videon suoraan netistä. Kuvaruudun koko vain piti olla säädetty oikeaksi ja latautumista odottaa melko kauan. Vaikea muistaa varmaksi, kun kyseisen ominaisuuden löytymisestä on aikaa useampi vuosi eikä itselläni ole nyt CoolBasicia testaamiseen.

Re: CoolBasic & netti = cbNetwork

Posted: Sun Jun 28, 2009 4:09 am
by MaGetzUb
Grandi wrote:
programmer of DSG wrote:Grandi, kerrohan toki miten olisi mahdollista? :D
Olikohan se niin, että playanimation-komento pystyi lataamaan videon suoraan netistä. Kuvaruudun koko vain piti olla säädetty oikeaksi ja latautumista odottaa melko kauan. Vaikea muistaa varmaksi, kun kyseisen ominaisuuden löytymisestä on aikaa useampi vuosi eikä itselläni ole nyt CoolBasicia testaamiseen.
En kyllä tiedä, Mavin pukkas..

Re: CoolBasic & netti = cbNetwork

Posted: Sun Jun 28, 2009 7:23 am
by Latexi95
Vinkkinä vaan, että esim. Youtuben sivu, millä videota toistetaan ei riitä lataus osoitteeksi,
koska varsinainen video on tallennettu tietääkseni toisaalle. Sinun pitää löytää videon oikea osoite.
Eli oikean sivun pääte vastaa videon tiedosto päätettä. Ainakin "lahjoitan musiikkia projekteihinne" viestiketjussa olevat osoitteet viittaavat suoraan kappaleeseen, joten niiden toistaminen onnistuu todennäköisesti PlaySound komennolla. ;)

Re: CoolBasic & netti = cbNetwork

Posted: Sun Jun 28, 2009 10:58 am
by Viltzu
Itse en ääntä kuullut PlaySoundilla, kyllä se siinä jotain latasi ja melko kauan, mutta sen jälkeen ei kuulunut mitään. LoadSoundilla taas tulee virheilmoitus. Videon lataamista en nyt kyllä taida testata, mutta mielestäni myytti että PlaySound voisi soittaa netistä on murrettu. :P

Re: CoolBasic & netti = cbNetwork

Posted: Sun Jun 28, 2009 11:24 am
by phons
Viltzu wrote:Itse en ääntä kuullut PlaySoundilla, kyllä se siinä jotain latasi ja melko kauan, mutta sen jälkeen ei kuulunut mitään. LoadSoundilla taas tulee virheilmoitus. Videon lataamista en nyt kyllä taida testata, mutta mielestäni myytti että PlaySound voisi soittaa netistä on murrettu. :P
En ole kokeillut, tuota mutta minusta se ei ole murrettu... Jos kerta viedot toimii(TESTATTU) niin miksei musiikki toimisi, ehkei se vain osannut soitta sitä\sulla oli kaiuttimet pois päältä\et kuunnellut tarpeeksi tarkasti\äänikortti rikki\sulla luki PlaySound file$,0\tai jotain muuta... mahdollisuuksia on paljon.

Re: CoolBasic & netti = cbNetwork

Posted: Sun Jun 28, 2009 11:41 am
by DatsuniG
Kyllä minulla ainakin kuului tuo musiikki. Ja koodin pätkähän oli tämä:

Code: Select all

PlaySound "http://tormen.org/sound/Tormen_Sleepaway.mp3"
WaitKey 
EDIT:

Ja niin latautumista ei tarvinnut odottaa kuin muutama sekunti.


Re: CoolBasic & netti = cbNetwork

Posted: Sun Jun 28, 2009 7:01 pm
by Latexi95
Hyvinhän tuo kieltämättä kuului. :D