Ugoserver is a replacement server for Flipnote Studio's online functionality, Flipnote Hatena
Issues and pull requests are welcome
As part of development, I've written a library to convert to/from the image formats that Flipnote Studio uses. Namely npf, nbf, ntft and ppm. This is nx package
doc.md in this repository will be an all inclusive guide to how flipnote hatena works.... eventually
A few things need to be done prior to starting the server, namely
- ensure your system's SSL library supports RC4-MD5 or RC4-SHA ciphers. They're weak, but they're all the DSi supports. You can enable these in openssl at compile time with enable-ssl3, enable-ssl3-method, enable-weak-ssl-ciphers options, after that enable the legacy provider in the system configuration (it's insecure... but it's required to enable those ancient ciphersuites)
- generate bogus nintendo CA signed certs for flipnote.hatena.com, nas.nintendowifi.net (and ugomemo.hatena.ne.jp if you want to use japanese region flipnote studio with this). The commands to do this can be found in the nds-constraint github repository
- install PostgreSQL and the crypto module. A script to create all necessary tables/functions is available, use that, and insert any required data, like channels manually
- install dependencies using
go getand compile the server, there is a makefile provided to make this easy - change the configuration as necessary. At a minimum, you need to set the options related to the database, so that it can connect, and the options for the directories with static content. an example is available (config.example.json)
- configure a reverse proxy to redirect queries to this server @ port 9000. an example nginx config is available (nginx.example.conf)
- configure a dns to redirect flipnote's queries to this server. example dnsmasq and bind9 named config are available
- start the server. It will attempt to read the configuration file as the first argument passed (others ignored), and will default to config.json in the current working directory if unspecified
you should be able to set the dns and connect after doing all of this.
Templates will be read from $dir/assets/special/html/*.html, predefined menus from $dir/assets/special/menu/*.json, text content from $dir/assets/text (dir is set in the config file)
2xxxx, 33xxx codes mean something is up, possibly with dns/nas
304xxx means something is up with the html/menu bits of online mode
304001 usually appears when the console received a 200 OK, but no data
304605 can mean a variety of things and isn't easy to diagnose. HTTP status codes are also displayed as 304xxx
I have quite a few things planned for this server, so maybe there will be more commits pushed here
a sorta todo list is available in the code
at some point I wish to make a wiki for this, but that's after all of the core functionality is done
This is all a big hobby project. It's MIT licensed. If you want to run your paid server or whatever, feel free to do so. I do not care
but if you'd like to see more of this, you can support me by donating via paypal
i survive off monsters, so $3 is plenty
Original hatena-server, some code was helpful in understanding how Flipnote works - pbsds
flipnote hatena assets (thanks a bunch) - pbsds
nds-constrain't - Project Kaeru
Very good format documentation here and here
Sudofont - nds unicode character map
and likely others...