Sorry for the late reply, Thunderbird is doing a crappy job of notifying me of new posts on the forum again.

Enanium disables the Search, User and Tools sidebar blocks because it provides its own replacements, in the form of the tabs/search box in the upper right-hand corner.


(2 replies, posted in Enano support)

Hrm... you shouldn't be having issues with UTF8 text within pages. Some time ago I worked with Neal to make UTF8 characters work everywhere - usernames, passwords, page content, comments, etc.. I checked the schema as well, and it is indeed creating tables with "CHARACTER SET `utf8`". How exactly is the text becoming corrupted? Are you using MySQL or PostgreSQL? You're right, it is probably a character encoding issue. If you wish, you may change the encoding of the table with a SQL query like:


(You may need to prepend your table_prefix to "page_text")

As for URL generation, Enano does that to avoid escaping issues in links. Links have to be escaped one way, javascript another, PHP another... it's too complicated, so I came up with this as a way to universally handle it without much fuss. Are you having trouble with the generated URLs, or simply trying to make them contain actual Russian characters?

There is no translation of Enano into Russian at this time. If you want to translate it, make a copy of the "english" directory and name it "russian" and then edit meta.json with the appropriate information about the language. At that point you should be able to install it. Then, get started on editing everything else in the language directory: five main JSON files (admin, core, install, tools, user), the summary of the license agreement (install/license-deed.html), and the default site content (install/default-blank/*.txt and install/default-tutorial/*.txt). Don't expect to translate the whole thing in one sitting; there are roughly 2,000 strings in the Enano core plus additional strings for any plugins you may want to translate. You can test your translation efforts by re-importing the language in the admin CP, which pulls the language strings from your JSON. Thanks!

That means Tigra Tree Menu failed to load. File a bug about it (or submit a patch) and we'll target it for the next stable release. Good to know it's not broken in the caoineag branch.

I only know of a small number who have actually worked on putting together a real site (with customizations, etc). These are:

* Vadim Peretokin's vadi-mapper
* Mobile Central by Binary Outcast (Neal is affiliated, but this is by far the most customized site I've seen in the wild)
* Datto Backup's Open Source portal (I'm affiliated)
* KJRZ Radio - not many customizations though
* LargeGeek Wiki

We're pushing for a 1.2.0 RC, at which point we will try to locate a few medium- to large-size open source projects for which we will overhaul their website in exchange for giving us some publicity.


Hm, I wouldn't be surprised if this is the temporary name of the .exe that is compiled for your language page. If so, you should know that code was written during the XP era before UAC existed. Try running makensis as an administrator.

The language page is a terrible hack because you have to set the installer's language during .onInit, which is before the GUI is constructed. That means to display a page we have to compile a whole 'nother EXE. Yeah...

Are you using NoScript?

If not, what does the Javascript console say?

Cool, thanks!

I'll look over it real quick and push it into Mercurial.


Try defining XPUI_UNINSTALLER near the top of your script.

I'd just use a singular background image.

Working example: … bundle.nsi


!define XPUI_BGIMAGE_BMP "gfx\enano-bg.bmp"


(4 replies, posted in Enano support)

Adriano is correct, you use the little power button in 1.0.x.

(Thanks for answering Adriano, Thunderbird is doing a really awful job of pulling in new posts on this forum again >_>)


(7 replies, posted in Enano support)

So, a little background on what's going on here...
It is supposed to go back to stage=database to do the stage 1 database install (basically creating the config table). However it should only show the screen briefly and then redirect you to stage=website.

It would be helpful to know your Windows version as well.

If you just want to get it going, try installing BitNami WAMPStack and then use the BitNami module installer. That should take care of all the gory details for you.

You can just put your own label in there, the only thing is that clicking the label won't notify the radiobutton.


I realize this is a late reply. Sorry. PunBB's RSS feed isn't doing a very good job at replies to existing topics.

Neal has reported bugs with Google's AdSense code before similar to what you have. I tried over and over to reproduce it and never succeeded. Looks like your site is out of commission right now. If you get it running again, drop me an e-mail at and I will work on it with you.


Answered via e-mail.
I'm not sure if this has been fixed since 1.1.7 or not, but try the latest version from Mercurial. If that doesn't work, contact me.


Disable themes (switch to Windows Classic) and tell me if it still looks that way.

Basically, XP and probably newer versions of Windows override the colors of GroupBox labels even if the background is unsuitable.


Make that XPUI_CONTROL_SKIN{,_PAGE}. Can't remember my own API. :-]

The short version:

GetDlgItem $0 $hwnd control_id(int)
!insertmacro XPUI_CONTROL_SKIN_PAGE $0

XPUI_CONTROL_SKIN is only used internally; use XPUI_CONTROL_SKIN_PAGE, as it determines which macro to call based on your settings (namely XPUI_BGIMAGE).


There's also XPUI_CONTROL_SKIN_LIGHT (for an alternate color) and XPUI_CONTROL_SKIN_TRANS (to force transparency).

I suspect that you're using SetCtlColors incorrectly. Did you try using the XPUI_SKIN_CONTROL macros? I'll try to build an installer using the above code later today to see if it works.

Sorry, I don't speak any Russian. Want to teach me? ^_^

The forum software is now looking up IPs in the DNSBL upon registration. If you are running an open proxy or your IP is marked as a past source of abuse, registration will be blocked.

If you feel that your registration was blocked in error, please e-mail

Hi John!

The DiffieHellman code is pretty nicely segregated into its own files. You'll want to look in the following:

  • includes/math.php: Abstraction layer that picks out which backend (GMP, big_int or BCMath) to use. I recommend GMP!

  • includes/diffiehellman.php: The actual Diffie-Hellman algorithm, server side

  • includes/rijndael.php: Native PHP implementation of AES

  • includes/clientside/static/crypto.js: Big-ass Javascript blob with arbitrary precision math, DiffieHellman and AES all rolled into one file

  • includes/clientside/static/login.js: Good place to look for an example on how to use DH client-side

  • plugins/SpecialUserFuncs.php: Good place to look for an example on how to use DH server-side

  • includes/functions.php: If you get calls to undefined functions, this is a good place to look for them.

  • includes/sessions.php: The generate_aes_form() and aes_javascript() methods will help you get working forms together.

  • includes/hmac.php: Store your passwords using HMAC - it's MUCH more secure if your database ever gets hacked.

That should cover just about everything. Crypto login is a HUGE thing to implement, because the capability has to be sprinkled everywhere, from registration to login to re-auth to the password change form to the "forgot password" feature. Even the installer just recently added support for it. It's mostly all based on the same code now, but for a while maintaining all those different locations became a huge mess. I'd recommend writing functions that take care of generating keys and echo out hidden form fields containing the public key and similar information.

Finally I think it would be responsible of me to reiterate the warning from the Features page:

Remember: true security is only possible with SSL. The encrypted logon feature is designed only to protect your information when it is infeasible for a man-in-the-middle to modify Diffie-Hellman parameters, for example at a WiFi hotspot where ARP spoofing is difficult or impossible because of wireless latency. A determined and skilled attacker with control over an intermediate router between you and your Enano website can still obtain your password by modifying the Diffie-Hellman parameters. If you need strong security, use SSL.

Good luck, and let me know if you need any more advice on working with the code. Keep me posted, I'd be interested in seeing the results!


Cloud Nine: Azure isn't available for download at this time, but I will consider releasing it (with bits removed) if there is sufficient demand. What specifically would you like to learn from it?

Sounds like it could be an Apache bug. Mind posting the last couple lines of your error log?
Edit: I just realized, if you're running Apache 2.2 on Windows, then this is the error you'll get. Yes, this is a known Apache bug that affects a lot of other CMSes (MediaWiki comes to mind). Basically, Apache blocks any requests that have a colon ":" in the URI before the query string. A lot of people, myself included, think that should be moved over to mod_security.

Download Enano with the Windows patch and reinstall, and it should work.

More information:

Sorry, my RSS reader got borked and I haven't been getting alerts about new posts on the forum. Thanks for e-mailing, I'm glad the bug was resolved.

For anyone else that encounters this issue, I fixed the bug. The patch is available from the following URL: … I/XPUI.nsh

Is the issue fixed in Enano 1.0.6pl1? If not, I'll try to figure out the problem and include a bugfix in 1.0.7.

Sounds right. I should probably manually update all profiles here so they use the new layout.


Do you mean when you log into the forums?