Logged-In As
ACCOUNT
Not Logged In
Create a small markdown wiki CGI The NetBSD Project
Status: Closed Time to complete: 168 hrs Mentors: Julian Coleman, Julian Fagir Tags: C, sh

NetBSD has a shipped web server name bozohttpd (http://netbsd.gw.com/cgi-bin/man-cgi?httpd++NetBSD-current).

Your task this time is to write a cgi in C which uses libsoldout (http://fossil.instinctive.eu/libsoldout/index) to create a wiki that runs locally on your webserver. Then, this cgi just parses the markdown to html and resolves the links right, such that you can browse a local wiki (e.g. the NetBSD one) without having to parse everything to HTML and leave it as such in the file system.

So mainly you have to write a CGI which uses the mkd2html parser from libsoldout, but does the links right. You also have to consider the links written as [[Linkname]] which are often used internally in wikis.

mkd2html: http://fossil.instinctive.eu/libsoldout/artifact/fd100c723c722189d62fd9bf261d67db69240043


As the parsing itself is rather small, you should provide a small tutorial, or rather a complete setup which already runs this cgi with bozohttpd. You can use the test virtual machines from ftp://ftp.netbsd.org/pub/NetBSD/misc/GCi to provide such a setup.

Optimally, you would make everything as easy as possible, also delivering a bozohttpd configuration to run the cgi directly. The user should not have to set up much to get this running, but rather only start one script and then point his web browser to localhost to make it run.

Uploaded Work
File name/URL File size Date submitted
wiki.zip 157.7 KB December 16 2012 13:16 UTC
Comments
wmzhere on December 10 2012 13:38 UTC Task Claimed

I would like to work on this task.

Julian Fagir on December 10 2012 13:42 UTC Task Assigned

This task has been assigned to wmzhere. You have 168 hours to complete this task, good luck!

wmzhere on December 16 2012 13:17 UTC Ready for review

The work on this task is ready to be reviewed.

Julian Fagir on December 16 2012 19:38 UTC Very good

There are some things about the cgi I would do in a different way like the directory structure, or which are not fully usable yet (like the show source option).


But you solved the task, and in an excellent way. Thank you very much!


I know you showed interest in other tasks as well. If you want, you could still do the documentation browser, but I still think its outside the scope of GCi, and we have to think more about its design than just starting with it. But if you want to write such a thing, just tell us, and we can create an appropriate task.


Anyway, the cgi is a great help! 

Julian Fagir on December 16 2012 19:38 UTC Task Closed

Congratulations, this task has been completed successfully.

wmzhere on December 17 2012 02:06 UTC Leave for a while

Hi Jullian, 


Thank you for your acceptance. I could have done it better if I had more time. I will take a crucial exam this week, and I need time to review my lessons. :(


I planned to add user system, page management, remote management API, media manager, and i18n support. But I dont have enough time to implement it. I even thought of writting a customized httpd to hold cache in memory for performance.


I thought quite a lot before starting. Originally I preferred to use a database to store data. But using the database engine requires adding a management interface, and the safety needs more attention. So I turned to directory structure, which is safe and extremely easy to extend: just  place whatever you want in the same directory.


As for the "View Source",  this page will be an editor for the management page later, simply for time, too. I developed a flexible navigation bar system but I didn't make full use of it. Did you see the nav bar of "Special:Viewsrc" has a customized "Action" group? I'm using this as an example for the nav bar system.


I still have a strong interest in the browser project. And I will follow your suggestions, focus on GCi first.


BTW, I have to pause participating GCi for a week because of the exam. I'll be back and contact you the next week.


Finally, thank you again for your time and guidance. :)