CoolBasic & netti = cbNetwork

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: CoolBasic & netti = cbNetwork

Post 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.
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic & netti = cbNetwork

Post 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.
Last edited by valscion on Tue Nov 15, 2011 3:41 pm, edited 4 times in total.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic & netti = cbNetwork

Post 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:
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: CoolBasic & netti = cbNetwork

Post 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.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic & netti = cbNetwork

Post 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.
Last edited by valscion on Sun Aug 16, 2009 12:14 am, edited 2 times in total.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: CoolBasic & netti = cbNetwork

Post 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.

Attachments
Net_Template.zip
Lahja teille, jos saatte sen toimiaan :)
(1.26 MiB) Downloaded 515 times
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: CoolBasic & netti = cbNetwork

Post 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:
Image
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: CoolBasic & netti = cbNetwork

Post 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)
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic & netti = cbNetwork

Post 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.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic & netti = cbNetwork

Post 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?
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic & netti = cbNetwork

Post 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.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: CoolBasic & netti = cbNetwork

Post by Koodiapina »

Voit muuten ladata CoolBasicilla videoita netistä ilman DLL-sähellyksiäkin.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic & netti = cbNetwork

Post 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
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: CoolBasic & netti = cbNetwork

Post 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.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic & netti = cbNetwork

Post 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..
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: CoolBasic & netti = cbNetwork

Post 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. ;)
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: CoolBasic & netti = cbNetwork

Post 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
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: CoolBasic & netti = cbNetwork

Post 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.
Image
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: CoolBasic & netti = cbNetwork

Post 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.

Hengität nyt manuaalisesti.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: CoolBasic & netti = cbNetwork

Post by Latexi95 »

Hyvinhän tuo kieltämättä kuului. :D
Post Reply