sh4dowb / eba-canli-ders-crossplatform

EBA canlı ders crossplatform (Linux & Mac) desteği
GNU General Public License v2.0
59 stars 4 forks source link

SebitVCloud #11

Open rahmanlar opened 3 years ago

rahmanlar commented 3 years ago

Merhaba. Sebit VCloud ile EBA aynı uygulamaları ve aynı site sistemini kullanıyorlar ancak script'lerin bulunduğu dizinler farklı. Herhangi bir şekilde bu kodun Sebit VCloud'a göre uygunlaştırılması yapılabilir mi?

sh4dowb commented 3 years ago

test etmemiz lazım, acaba bana ders olduğu zaman hesap bilgilerinizi atabilir misiniz?

rahmanlar commented 3 years ago

Galiba uyarladım, dersim yarın. Yarın deneyeceğim. https://github.com/rahmanlar/sebit-crossplatform/blob/master/ogrenci.js

bytescreator commented 3 years ago

Merhaba. Sebit VCloud ile EBA aynı uygulamaları ve aynı site sistemini kullanıyorlar ancak script'lerin bulunduğu dizinler farklı. Herhangi bir şekilde bu kodun Sebit VCloud'a göre uygunlaştırılması yapılabilir mi?

Kocaman sebit yazıyor zaten eba'da :smile: birkaç şeyi değiştirince çalışması lazım

Galiba uyarladım, dersim yarın. Yarın deneyeceğim. https://github.com/rahmanlar/sebit-crossplatform/blob/master/ogrenci.js

Muhtemelen çalışmayacak cagriari.com/eba_nonceproxy.php EBA'ya göre ayarlı tokeni bastırıp sebitin kendi adresinden sorgulamak lazım

rahmanlar commented 3 years ago

Zaten sıkıntı da değiştireceğim linki bulamamam, birkaç şey denedim ama bulamadım(https://rahmanlar.github.io/ogrenci.js) Çalışan tek https://sebitvcloud.com/getlivelessoninfo buldum sanırsam.

bytescreator commented 3 years ago

Girerken F12 ile bakın oradan adreslerin hepsini alabiliriz, sebit'de eba gibi bir uygulama veriyor mu?

rahmanlar commented 3 years ago

sebit'de eba gibi bir uygulama veriyor mu?

evet zoom tabanlı uygulaması var,

ayrıca bir link daha buldum: http://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/instudytime/join

bytescreator commented 3 years ago

Bu ders bilgilerini almak için POST ile yapılıyor olması lazım EBA'daki gibi bundan sonra token sorgulamak için bir adres lazım onu da zoom tabanlı uygulama yapıyor, o adresi de bulmak lazım.

Bir de EBA'da canlı ders bildirimindeki adresler anasayfadaki adreslerden farklı, sebitte de böyle bir şey olabilir. Lazım Olan Adresler Şöyle:

bytescreator commented 3 years ago

./smali_classes2/us/zoom/sdkexample2/Utils/RequestManager.smali: const-string v0, "https://uygulama-vcloud.sebittest.com/preprod/VCloudFrontEndService//livelesson/nonce/" ./smali_classes2/us/zoom/sdkexample2/Utils/RequestManager.smali: const-string v0, "https://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/nonce/"

Apk'yı decompile edince çıktı :D gerisi sizde nonce adresi bu

rahmanlar commented 3 years ago

Teşekkürler bir de böyle deneyeceğim, kendim bir dissassembler programından aramaya çalışmıştım ancak hiç doc okumadan veya bir deneyim olmadan yapınca hiç bir şey anlamamıştım

rahmanlar commented 3 years ago

Nonce kısmına gelene kadar çalıştırmayı başardım, tek sıkıntı derse girerken php kodunu linkin sonuna ekliyor ve yönlendirildiğim yer 404 sayfası oluyor bu yüzden.

sh4dowb commented 3 years ago

Nonce kısmına gelene kadar çalıştırmayı başardım, tek sıkıntı derse girerken php kodunu linkin sonuna ekliyor ve yönlendirildiğim yer 404 sayfası oluyor bu yüzden.

nasıl yani tam olarak

rahmanlar commented 3 years ago

Nonce kısmına gelene kadar çalıştırmayı başardım, tek sıkıntı derse girerken php kodunu linkin sonuna ekliyor ve yönlendirildiğim yer 404 sayfası oluyor bu yüzden.

nasıl yani tam olarak

Tum php kodunu kullaniyor, yani buraya atiyor: https://cdnpub.sebitvcloud.com/vcloud/player/VCollabPlayer_v0.0.1398/null?tk=%3C?php//%20Forked%20from%20https://github.com/sh4dowb///%20Bu%20dosyay%C4%B1%20kullanman%C4%B1za%20gerek%20yok.%20Geli%C5%9Ftiriciler%20i%C3%A7indir.//%20EBA%27ya%20nonce%27dan%20Zoom%20tokeni%20i%C3%A7in%20istek%20atarken%20CORS%20headeri%20olmad%C4%B1%C4%9F%C4%B1%20i%C3%A7in%20JS%27den%20yapam%C4%B1yoruz.//%20Sunucuma%20ekledi%C4%9Fim%20bu%20dosya%20ile%20header%20eklemi%C5%9F%20oluyoruz%20ve%20JS%27den%20kullanabiliyoruz.header(%22Access-Control-Allow-Origin:%20*%22);if(ctype_xdigit($_GET[%27nonce%27]))%20%20%20%20%20%20%20%20echo%20file_get_contents(%22https://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/nonce/%22.$_GET[%27nonce%27]);

sh4dowb commented 3 years ago

burda birden fazla hata var, hem /null hem de php dosyası. php dosyasını sunucu olmadan çalıştıramazsınız sizin için https://cagriari.com/eba_nonceproxy_sebit.php adresine koydum dosyayı, bu linki çağırmayı deneyebilirsiniz

bytescreator commented 3 years ago

burda birden fazla hata var, hem /null hem de php dosyası. php dosyasını sunucu olmadan çalıştıramazsınız sizin için https://cagriari.com/eba_nonceproxy_sebit.php adresine koydum dosyayı, bu linki çağırmayı deneyebilirsiniz

/null için resp2.meeting.url 'i "https://us02web.zoom.us/j/"+resp.liveLessonInfo.studyTime.studyTimeId olarak değiştirin

Ayrıca ek olarak console.log(resp3,resp2) eklemeniz iyi olabilir görmek için, window.location=...'nın üstüne

rahmanlar commented 3 years ago

burda birden fazla hata var, hem /null hem de php dosyası. php dosyasını sunucu olmadan çalıştıramazsınız sizin için https://cagriari.com/eba_nonceproxy_sebit.php adresine koydum dosyayı, bu linki çağırmayı deneyebilirsiniz

/null için resp2.meeting.url 'i "https://us02web.zoom.us/j/"+resp.liveLessonInfo.studyTime.studyTimeId olarak değiştirin

Ayrıca ek olarak console.log(resp3,resp2) eklemeniz iyi olabilir görmek için, window.location=...'nın üstüne

Dediginiz gibi yaptigim hâlde hâlâ ayni yere atiyor.

Duzenleme ─ Daha dogrusu artik php kodu cikmiyor, ancak /null sonra token sonra pwd seklinde cikiyor.

window.location satiri ─ window.location = "https://us02web.zoom.us/j/"+resp.liveLessonInfo.studyTime.studyTimeId + "?tk=" + resp3.substring(1).split('|')[0];

Ayrica sebit in kendi zoom subdomaini var sebit.zoom.us seklinde, bu uygulamayi gormeden meeting id ve sifreyi arkadaslarimdan alip sebit.zoom.us ustune koyup deniyordum, ancak meeting registration sayfasina atiyordu.

bytescreator commented 3 years ago

Duzenleme ─ Daha dogrusu artik php kodu cikmiyor, ancak /null sonra token sonra pwd seklinde cikiyor.

Null çıkması garip, muhtemelen tokeni alabiliyorsunuz pwd varsa; resp2.meeting.url, resp.liveLessonInfo.studyTime.studyTimeId ve resp3 yi örnek olarak gösterebilirmisiniz?

rahmanlar commented 3 years ago

Bir seyi eksik yapmisim, duzelttim ancak simdi de Uncaught TypeError: resp.liveLessonInfo is undefined hatasi ile karsilasiyorum. Degiskenin adi farkli galiba.

bytescreator commented 3 years ago

Muhtemelen Farklı

https://sebitvcloud.com/getlivelessoninfo 'dan gelen JSON'a bakın. Orada studyTimeId nerede diye bakmak lazım. Ayrıca daha önceden böyle bir sıkıntı yoktu şimdi neden hata veriyor?

https://sebitvcloud.com/getlivelessoninfo ve diğer adreslerden gelen yanıtları paylaşabilirseniz daha rahat çözülebilir.

bytescreator commented 3 years ago

@rahmanlar bir çözüm bulabildiniz mi?

rahmanlar commented 3 years ago

@rahmanlar bir çözüm bulabildiniz mi?

Son günlerde çok bakamıyorum, bir gün bakınca deneyeceğim.

rahmanlar commented 3 years ago

Gelen JSON şu şekilde: {"operationMessage":"success","operationCode":200,"success":true,"liveLessonInfo":{"frontEndUrl":"https://uygulama.sebitvcloud.com/VCloudFrontEndService","siteUrl":"https://www.sebitvcloud.com","redirectUrl":"https://www.sebitvcloud.com","name":"öğrenci ismi","surname":"öğrenci soyadı","serverTime":1609242428643,"studyTime":{"id":"3fe6650cf67c32f9ee0fcd3d700f6ce3bafc6bb4555ede9d1e8e001353cc11b2","studyTimeId":"3fe6650cf67c32f9ee0fcd3d700f6ce3","studyTimeTitle":"ders ismi","studyTimeCurrNodeId":"63f2d6301e2fdc8bc2a1432ea6c63d82","ownerId":"öğretmen id'si","ownerName":"öğretmen ismi","deleted":false,"term":"2020-2021","schoolId":"okul id'si","classroom":kaçıncı sınıf,"startDate":1609241400000,"endDate":1609243800000,"createDate":1609088082000,"typeId":2,"courseName":null,"meetingId":"giriş id'si","meetingPassword":"giriş şifresi","meetingDuration":40,"meetingStartUrl":"başlatma linki","meetingJoinUrl":"giriş linki","registrantId":null,"registrantJoinUrl":null,"modifiedDate":null,"courseCode":"tur","currNodeName":"hangi sınıf"},"schoolName":"okul ismi","corporation":{"id":"kurum id'si","name":"kurum ismi","createDate":1525878888817,"deleted":false}}}

bytescreator commented 3 years ago

Aynen bunun düzgün çalışması lazım bir sıkıntı gözükmüyor. Çalıştırmayı denediğinizde sıkıntı oldu mu bu sefer?

rahmanlar commented 3 years ago

Hata 122. satırda, null'un çözümü için orayı değiştirmiştim. Şimdi fark ettim, birden çok window.location satırı var. Yanlış şeyi değiştirmiş olabilirim.

bytescreator commented 3 years ago

image Sizde buna benzer bir sayfa çıkıyor mu?(muhtemelen çıkıyor, getlivelessoninfo adresi bu sayfa için) Çıkıyorsa adresi nedir, betik adresten bakıyor çünkü. Yanlış sayfa için çalışıyor olabilir. Bu durumda Uncaught TypeError: resp.liveLessonInfo is undefined bu hatayı vermesinin sebebi bu olabilir.

rahmanlar commented 3 years ago

image Sizde buna benzer bir sayfa çıkıyor mu?(muhtemelen çıkıyor, getlivelessoninfo adresi bu sayfa için) Çıkıyorsa adresi nedir, betik adresten bakıyor çünkü. Yanlış sayfa için çalışıyor olabilir. Bu durumda Uncaught TypeError: resp.liveLessonInfo is undefined bu hatayı vermesinin sebebi bu olabilir.

Evet, çıkıyor. 3 dakika sonra ders başlayacak. O zaman bakabilirim.

Böyle yapınca da https://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/instudytime/join adresinden 403 hatası aldım.

bytescreator commented 3 years ago

Böyle yapınca da https://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/instudytime/join adresinden 403 hatası aldım.

Başka bir adres daha var o zaman dediğim gibi (ya da VCloudFrontEndService//livelesson olması lazım), normal ve bu sayfadaki adresler farklı. Derse girerken F12 den bakabilirsiniz.

Ders için nonce tokeni alınan adres (Bulunmuş ancak hangi sayfada kullanılıyor bu da lazım, ebadaki bildirim adresleri farklı) https://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/instudytime/join https://uygulama-ebaders.eba.gov.tr/ders/FrontEndService//livelesson/inpage/instudytime/start (ebadaki)

rahmanlar commented 3 years ago

https://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/inpage/instudytime/start Network kısmından baktığımda bunu buldum.

bytescreator commented 3 years ago

https://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/inpage/instudytime/start

Aynen, adres farklı. Bu sayfada bunu kullanın.

rahmanlar commented 3 years ago

Tamam, şimdi bence daha büyük bir sıkıntı var, şu adrese attı: https://us02web.zoom.us/j/?tk=XN7nNLqVWXFu26njD2FQXIUohLMVB1w8NbRN11kj25o.DQIAAAATwZ9E2xZwQXBrODJfOVM4LUtKdHVvVnI1NzlnAAAAAAAAAAAAAAAAAAAAAAAAAAAA&pwd=WjFQQ0V3TTZKYVdVcG1aSGx4SUljUT09

bytescreator commented 3 years ago

burda birden fazla hata var, hem /null hem de php dosyası. php dosyasını sunucu olmadan çalıştıramazsınız sizin için https://cagriari.com/eba_nonceproxy_sebit.php adresine koydum dosyayı, bu linki çağırmayı deneyebilirsiniz

/null için resp2.meeting.url 'i "https://us02web.zoom.us/j/"+resp.liveLessonInfo.studyTime.studyTimeId olarak değiştirin

Ayrıca ek olarak console.log(resp3,resp2) eklemeniz iyi olabilir görmek için, window.location=...'nın üstüne

Bundan ötürü oldu muhtemelen window.location satırını atabilirmisiniz? meeting id yok sadece onun dışında herşey iyi gözüküyor

rahmanlar commented 3 years ago

Bundan ötürü oldu muhtemelen window.location satırını atabilirmisiniz? meeting id yok sadece onun dışında herşey iyi gözüküyor

window.location = "https://us02web.zoom.us/j/"+resp.liveLessonInfo.studyTime.studyTimeId + "?tk=" + resp3.substring(1).split('|')[0];

Sanırsam dersin son 10 dakikasında bahsettiğiniz giriş ekranı çıkmıyor, denemek için bir dahaki derse kadar beklemem lazım.

bytescreator commented 3 years ago

Sanırsam dersin son 10 dakikasında bahsettiğiniz giriş ekranı çıkmıyor, denemek için bir dahaki derse kadar beklemem lazım.

Sıkıntı değil.

https://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/inpage/instudytime/start Bu adresten gelen JSON'u da atabilirmisiniz gelince, orada giriş adresi olması lazım. Normalde onunla birleştiriyoruz EBA'da ama Sebit'te farklımıdır bilmiyorum. Ona bakmak lazım. Varsa direk birleştirip girebilirsiniz.

Yoksa da resp.liveLessonInfo.studyTime.studyTimeId 'olan kısmı meeting id yi bulup eklemek lazım.

rahmanlar commented 3 years ago

Invalid Meeting ID (-1) hatası aldım, https://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/inpage/instudytime/start adresi bad request veriyor ancak meeting id'nin gelmesi gereken yerde fb921fe34ce46f06ba5d705146a66429 yazıyor

bytescreator commented 3 years ago

Invalid Meeting ID (-1) hatası aldım, https://uygulama.sebitvcloud.com/VCloudFrontEndService/livelesson/inpage/instudytime/start adresi bad request veriyor ancak meeting id'nin gelmesi gereken yerde fb921fe34ce46f06ba5d705146a66429 yazıyor

resp.liveLessonInfo.studyTime.studyTimeId bu yanlış, sebit tarafındaki id bu. start'dan dönenin içinde ekstradan zoom için meeting id ve join url gelmesi lazım

Bad Request in sebebi POST body'si olabilir, ama önceki isteklerde çalıştı. F12 den yakaladıklarınızda start adresine yapılan POST'ta ne vardı. Bazen sapıtıp hata verebiliyor onları bakmayın :smile:

meeting id'nin gelmesi gereken yerde fb921fe34ce46f06ba5d705146a66429 yazıyor

Bu normal, EBA'da zoom için de meeting id geliyor ve join url de birleştirilmiş olarak bulunuyor. Ancak herhangi bir zoom id si bulamadıysanız nonce tokenini sorguladığımız adresten geliyor olabilir.

Bir de reponuzu güncelleyebilir misiniz mümkünse? Ne kullandığınızı görelim. Hem ekleme çıkarma yapmak daha kolay olur PRlar ile.

rahmanlar commented 3 years ago

PR açtığınızı fark etmemiştim, şimdi merge ettim. Ders olduğu zaman deneyeceğim.

rahmanlar commented 3 years ago

PR'ı merge ettiğimde null hatası geri döndü. O kalmış sanırsam. Düzelttim.

Invalid Meeting ID (-1) hatası aldım.

Bu devam ediyor bu arada.

bytescreator commented 3 years ago

PR'ı merge ettiğimde null hatası geri döndü. O kalmış sanırsam. Düzelttim.

Tam olarak düzeltilmedi aslında :smile:, onu tam olarak düzeltmek için start adresinden gelen JSON lazım, Gereken ID ve adresler buradamı diye bakmak lazım. Bunu çözünce Invalid Meeting ID hatasıda gidecek, düzelttiğiniz halde meeting id olmadan gönderiyor olması lazım. O yüzden hata veriyor.

yönlendirildiğiniz adresi atabilirmisiniz bir de, belki id ile beraber herşey vardır ancak encoding ile ilgili bir problem olabilir.

rahmanlar commented 3 years ago

PR'ı merge ettiğimde null hatası geri döndü. O kalmış sanırsam. Düzelttim.

Tam olarak düzeltilmedi aslında , onu tam olarak düzeltmek için start adresinden gelen JSON lazım, Gereken ID ve adresler buradamı diye bakmak lazım. Bunu çözünce Invalid Meeting ID hatasıda gidecek, düzelttiğiniz halde meeting id olmadan gönderiyor olması lazım. O yüzden hata veriyor.

yönlendirildiğiniz adresi atabilirmisiniz bir de, belki id ile beraber herşey vardır ancak encoding ile ilgili bir problem olabilir.

GitHub'a çok bakmıyorum, yazınızı görmemiştim. Umarım hafta içi dev tool'un bağlantı kısmından bakacağım.

rahmanlar commented 3 years ago

Start'ın JSON'unu almak için başka bir yöntem gerekiyor, Bad Request alıyorum, Bad Request sayfasında mesaj olarak da "Required String parameter 'studytimeid' is not present" yazıyor.

Ayrıca uygulamanın açılması için sbtzoom:o=join&m=84439488675&t=5dc542226d766d8b6ff5b728e5559f60 şeklinde bir veri geliyor. Bu linki tek başına açmayı denediğimde uygulama çöküyor, sadece Sebit'in sitesinden açılınca çalışıyor. Büyük ihtimal "start" ile ilgili ama ona da şuan erişemiyorum dediğim gibi.

sh4dowb commented 3 years ago

sebit hesabı olan birisi ders olduğu bir zaman https://t.me/cagri üzerinden benimle hesap bilgilerinizi paylaşabilirse inceleyip gerekli düzenlemeleri yapıp yeni bir repo açabilirim

bytescreator commented 3 years ago

Start'ın JSON'unu almak için başka bir yöntem gerekiyor, Bad Request alıyorum, Bad Request sayfasında mesaj olarak da "Required String parameter 'studytimeid' is not present" yazıyor.

Bad Request'in sebebi resp.liveLessonInfo.studyTime.studyTimeId 'nin tanımsız olması muhtemelen.

Ayrıca uygulamanın açılması için sbtzoom:o=join&m=84439488675&t=5dc542226d766d8b6ff5b728e5559f60 şeklinde bir veri geliyor. Bu linki tek başına açmayı denediğimde uygulama çöküyor, sadece Sebit'in sitesinden açılınca çalışıyor. Büyük ihtimal "start" ile ilgili ama ona da şuan erişemiyorum dediğim gibi.

Adres doğru ancak garipmiş, start ile ilgisi yok ama normalde tarayıcıya direk yazıldığında açması lazım. Ancak daha önce bununla uygulama açıldıysa çökmesi normal 5dc542226d766d8b6ff5b728e5559f60 tokeni tek kullanımlık çünkü ikinciye kullanıldığında bir şey dönmüyor.

@sh4dowb 'nin dediği gibi bir erişim çok yardımcı olabilir. Mümkün değilse normal bir derse girerken F12 den kaydedip HAR dosyası olarak özelden atmanızda iyi olabilir.