WiiLink24 / room-server

A backend for Wii no Ma.
MIT License
28 stars 13 forks source link

Add web control panel with gui for easy content deployment #1

Closed Dogmander closed 3 years ago

zurgeg commented 3 years ago

@Dogmander On it :)

ghost commented 3 years ago

Afterwards, I have plans to port it either to C or Go. :) Also, Forecast will fix itself in a hour.

zurgeg commented 3 years ago

@6100m pog, almost done with it, will PR soon.

ghost commented 3 years ago

Also, set my username and password both to SHA256 hashes, you know how I like SHA256 encryption :) But yeah, turns out Forecast has to go per hour, otherwise you get FORE000005 and the whole thing expires. Luckily, Spotlight already put the changes so it will fix itself soon :) Heck, this will be fun to port to C, and I am going to try to get it to use MPD with Wii No Ma OST, and I'll get all that done at some point, probably soon. It's going to be rather fun :)

ghost commented 3 years ago

It's a very intriguing error the Forecast Channel gives out, I presume it's DRM, but even still it isn't really logical DRM. But yeah, I could probably base it off of mympd, after of course, porting that as well to C or Go. Luckily, I can prototype with Python and a pybind11 combo during the initial testing and porting, which is nice :)

ghost commented 3 years ago

@Dogmander Now that we mention Wii No Ma, I've almost picked out my show category I want, I'm either going to choose Pokemon or maybe a all-around one, that I post random videos on. I've included my mii in the other Wii No Ma repo, the one with the static data, and I included the format changer script I made so you can edit it easily. :) I like to create my own software for things, as ya know.

zurgeg commented 3 years ago

@6100m So, I tried pokemon cooking, but that didn't work a standard move, neither does a .mo with the .mov file extension... @spotlightishere Maybe we could take a look at the Nintendo Channel and see if we can find the decoder and Reverse Engineer it?

ghost commented 3 years ago

I have Wondershare which should work fine with video conversions, in case there is a codec problem :) I will give you the link privately in DM's this evening.

zurgeg commented 3 years ago

@6100m No, it appears that that is a newer MobiClip (the same thing used in NC), so maybe we can RE NC (RENC? idk) to find the decoder, and reverse engineer it.

ghost commented 3 years ago

And if you need to verify with CRC32 for any reason, which you might have to do a few times, I put a CRC32 utility in my debug tools branch, gloom-utils. But yeah, that format changer for my mii, that was actually coded so well, and I am so confident that I honestly don't need to test. I mean, it's practically perfect and I've tested my concepts before, so it should work great.

As for that mobiclip problem, you got the one from mariocube's sdk repo right? If not, I can give it to you, as that version might be a bit later.

zurgeg commented 3 years ago

@6100m Yep, I also tried Cafe and CTR and neither worked...

ghost commented 3 years ago

Odd, it should have I think. Yeah, decompiling it is probably our best option really, as we can track down it's algorithm and compare it with the version we have.

zurgeg commented 3 years ago

@6100m OK, I'll create a repo where we can store the research we have :)

ghost commented 3 years ago

That way, we can then modify the version we have to match, and that might be a good thing to shoot for.

zurgeg commented 3 years ago

Wow, GitHub is low latency :)

ghost commented 3 years ago

Yeah, I would make that repo private just in case we get copyrights :) That or spotlight's git server probably :)

ghost commented 3 years ago

Also, I promoted you to a owner in the organization account, for your brilliant work lately. Luckily, mariocube has this huge mobiclip file collection so we can test with those if we need :)

zurgeg commented 3 years ago

@6100m Cool! @spotlightishere Maybe you could take a look at the research repo I created?

ghost commented 3 years ago

Also, about that error.htm, that was done for sake of completedness, that and in case we ever import this to a web server, we have index protection. :) I just don't rerember where I put the darn custom 403 page haha. But yeah, Nintendo channel is our best bet to reverse it, as if Nintendo week worked, I can almost guarantee it's a good version to reverse-engineer.

ghost commented 3 years ago

@spotlightishere I partially rewrote the static repo to Perl over in the Galvatron repo, thinking of deploying it us three, you, me, and zurgeg perhaps?

spotlightishere commented 3 years ago

Ah, hm.. This is already implemented in room-server: https://github.com/WiiLink24/room-server/blob/9d5d5f48e8cb023eab7d6fd64e7c2ae97df46010/url2/reginfo.py#L5-L12

This issue mostly focuses on a web UI to control the database room-server reads from, to which I haven't fully documented due to it being in development.

ghost commented 3 years ago

No worries then :) I also made my own custom access counter for this too, which I wrote in PHP. That way, we don't need NGINX access logs :) It will be fun to use it too, I'm going to crawl as many Wii No Ma and Nintendo week vids as I can :)

ghost commented 3 years ago

It was my very first attempt ever at doing PHP/CGI, and I don't think I did too shabby :)

ghost commented 3 years ago

@spotlightishere Apologizes for ping Spotlight, just wanted to let you know I'm going to be not only adding a login/html access counter, but I am going to verify the non-static files with my crc32.cgi script. This should honestly make doing things a little less painful? What happens with the logger is when the WIi does it's connection test, it does a /GET request to conntest.nintendowifi.net/index.html, but with .htaccess and the conf, we redirect that to connlog.php, which executes the log.php script to increment a access counter in a dedicated SQL table. This could be more efficient, but works well atm. Not to mention, I can even integrate with a PHP-Enabled site to show stats (havent got that part yet) and I plan to have session data (same data from Gigatron) get routed through crc32.cgi and then routed back to the script to show the hash.

ghost commented 3 years ago

And I will be adding this to the panel as well :)

ghost commented 3 years ago

@spotlightishere Bit of a feature request: can we have EVC Poll adding in the panel too? I am struggling figuring out exactly how questions are supplied, and I think having it done through a panel would be best, so I always don't have to rerember how.

spotlightishere commented 3 years ago

@6100m Alrighty.. I think those features would be best integrated within another web service, this is only for room-server.

ghost commented 3 years ago

Yeah, I think we might integrate that in another panel probably :) But yeah, I will try to reach out to Gericom to get help with the mobiclip too, I work for him. :)

ghost commented 3 years ago

@spotlightishere @zurgeg That should do it for the access logger. I used both of my CDN's in a AB pattern too, just so both CDN's are getting equal use :)

ghost commented 3 years ago

@spotlightishere Apologizes for ping, but one thing to note is when you get the full Galavtron repo imported into miico, you can get rid of cfh and mcontp as Galavtron supersedes them. :D

ghost commented 3 years ago

Something to note however is that paths are absolute, so for instance, /var/www/* doesn't get directly placed, it kinda just merges with everything in the root of Cacti. I did, however, completely forget to patch the htaccess and conf, so I will do that real quick :)

ghost commented 3 years ago

And I think I might change mcnst to miico as well. So basically, mcnst > miico mcontp > miicos

ghost commented 3 years ago

Yeah, we will change it to those, sorry for the mess Spotlight, I didnt organize CMOC that well tbh, so yeah, apologizes for that.

ghost commented 3 years ago

And galvatron is kind of a mess too, but yeah its in github.com/WiiLink24/Galvatron, I am defintely going to simplify and fix it later on.

ghost commented 3 years ago

Like, after we release, I am going to start perfecting it more and more over time, so we can have a much simpler system.

ghost commented 3 years ago

@spotlightishere You know Spotlight, I'm curious. What if, for the web panel, we had it run a dolphin emulation of Wii No Ma inside? It's a bizarre idea I had. Also Spotlight, I might not be around much for the next few days, but sorry for the cron job mess yesterday, I thought I coded my scripts right, but it went and errored like that haha. Anyway though, one cool feature of the schema I have been making is a very intriguing one. It can read back INSANE amounts of data about pokemon, and even has the following schemas built in. 😄 Mail schema (the one made by you, actually) PKMN-Classic schema OSC Schema Over 120 web counters. OpenSpy schema CoWFC schema WUS Schema CMOC Schema EVC Schema Mail-PHP schema And even a schema for... (this is really cool) it actually allows you to store images within SQL for Wii No Ma. (Which get interpolated to LZ4 and then interpolated again to Base64, similar to how Larsen organized his CMOC schema. It also can store the following: CREATE TABLE defs ( id int(4096) NOT NULL AUTO_INCREMENT, id0_current int(4096) DEFAULT NULL, id1_current int(4096) DEFAULT NULL, id2_current int(4096) DEFAULT NULL, id3_current int(4096) DEFAULT NULL, resize_data_base64 int(4096) DEFAULT NULL, row_next int(4096) DEFAULT NULL, row_revoke_count int(4096) DEFAULT NULL, id int(24) NOT NULL AUTO_INCREMENT, crc0 int(2048) DEFAULT NULL, crc1 int(2048) DEFAULT NULL, crc2 int(2048) DEFAULT NULL, crc3 int(2048) DEFAULT NULL, crc4 int(2048) DEFAULT NULL, crc5 int(2048) DEFAULT NULL, crc6 int(2048) DEFAULT NULL, crc7 int(2048) DEFAULT NULL, crc8 int(2048) DEFAULT NULL, crc9 int(2048) DEFAULT NULL, offsets int(4096) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; CREATE TABLE data ( id int(4096) NOT NULL AUTO_INCREMENT, id0 int(4096) DEFAULT NULL, lz4pkdbase64img int(2048) DEFAULT NULL, id1 int(4096) DEFAULT NULL, id2 int(4096) DEFAULT NULL, id3 int(4096) DEFAULT NULL, text int(4096) DEFAULT NULL, ver int(4096) DEFAULT NULL, limited int(256) DEFAULT NULL, code int(2048) DEFAULT NULL, channelid int(4096) DEFAULT NULL, lz4pass int(4096) DEFAULT NULL, challengever int(4096) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

You might be wondering what this CRC hashes and ID stuff is. Basically Spotlight, once I get this implemented, it verifies the defs via CRC32 to make sure they are correct to the ones you specify. On top of that, the ID's are specified to pick out which def entry you want. This is something I really enjoied making Spotlight, and I hope to share with you more development for it as time goes on. One thing I did want to ask though Spotlight, is there any HTML work that needs to be done? I'd be happy to take a job to do for my web design class today 😄

ghost commented 3 years ago

Also yes, I will decrease the int size, that was a accident on my part haha.

ghost commented 3 years ago

Also yes, reginfo, once I implement this, will be able to read back vers and codes from SQL, so you can dynamically choose how you want it, and thankfully, I will implement this whole thing into the web panel. :)

ghost commented 3 years ago

@spotlightishere Hey spotlight, for deploying the video content, could we maybe use Zamzar's API or maybe Cloudinary's API? I could implement it maybe. :) Also, as a bit of a side project, I decided to start a iOS security research firm as a side thing. But yeah, we would have to modify both to support mobiclip.

ghost commented 3 years ago

Lol, that was a accident, I meant to say it fixed the first bug I found, ah well!

spotlightishere commented 3 years ago

Done, all is well!