Initial commit default tip
authorBrent Angeline <info@interos.org>
Sat May 01 16:19:36 2010 -0400 (4 months ago)
changeset 026ed165bdfba
Initial commit
c/access_interos.com_ssl.c
c/bottom_interos.com_ssl.c
c/browse_interos.com_ssl.c
c/content_interos.com_ssl.c
c/interos.c
c/interos.h
c/interos.org.h
c/interos.org_interos.org_ssl.h
c/interos_interos.com_ssl.c
c/interos_interos.com_ssl.h
c/login_interos.com_ssl.c
c/logout_interos.com_ssl.c
c/main_interos.com_ssl.c
c/menu_interos.com_ssl.c
c/new_interos.com_ssl.c
c/new_user_interos.com_ssl.c
c/next_interos.com_ssl.c
c/open_interos.com_ssl.c
c/settings_interos.com_ssl.c
c/template.c
c/top_interos.com_ssl.c
c/upload_interos.com_ssl.c
c/user_interos.com_ssl.c
c/welcome_back_interos.com_ssl.c
c/welcome_interos.com_ssl.c
c/xml/append_interos.com_ssl.c
c/xml/copy_interos.com_ssl.c
c/xml/delete_interos.com_ssl.c
c/xml/files_interos.com_ssl.c
c/xml/interos.h
c/xml/move_interos.com_ssl.c
c/xml/new_folder_interos.com_ssl.c
c/xml/persist_interos.com_ssl.c
c/xml/save_interos.com_ssl.c
c/xml/template_interos.com_ssl.c
c/xml/user_interos.com_ssl.c
conf/httpd.conf
dtd/xhtml1-borderless-frameset.dtd
images/buttons/new.gif
images/buttons/new_down.gif
images/buttons/new_faded.gif
images/buttons/new_up.gif
images/buttons/next.gif
images/buttons/next_faded.gif
images/buttons/next_up.gif
images/buttons/open.gif
images/buttons/open_down.gif
images/buttons/open_faded.gif
images/buttons/open_up.gif
images/buttons/settings.gif
images/buttons/settings_down.gif
images/buttons/settings_faded.gif
images/buttons/settings_up.gif
images/docs/flash/text_editor/spec/1.gif
images/docs/flash/text_editor/spec/2a-i.gif
images/docs/flash/text_editor/spec/2a-ii.gif
images/docs/flash/text_editor/spec/2a-iii.gif
images/docs/flash/text_editor/spec/2a-iv.gif
images/docs/flash/text_editor/spec/2b-i.gif
images/docs/flash/text_editor/spec/2b-ii.gif
images/favicon.gif-moved
images/favicon.ico
images/favicon.ico-moved
images/icons/browse/go.png
images/icons/browse/home.png
images/icons/browse/reload.png
images/icons/browse/stop.png
images/icons/new/alarm.png
images/icons/new/application.png
images/icons/new/bookmark.png
images/icons/new/chat.png
images/icons/new/copy.png
images/icons/new/document.png
images/icons/new/download.png
images/icons/new/e-mail.png
images/icons/new/folder.png
images/icons/new/image.png
images/icons/new/music.png
images/icons/new/phone_call.png
images/icons/new/search.png
images/icons/new/share.png
images/icons/new/text_file.png
images/icons/new/upload.png
images/icons/new/video.png
images/icons/new/web_page.png
images/icons/next/bookmark.png
images/icons/next/close.png
images/icons/next/logout.png
images/icons/next/save.png
images/icons/next/save_as.png
images/icons/open/alarm.png
images/icons/open/bookmark.png
images/icons/open/document.png
images/icons/open/e-mail.png
images/icons/open/image.png
images/icons/open/incoming.png
images/icons/open/music.png
images/icons/open/shared.png
images/icons/open/text_file.png
images/icons/open/video.png
images/icons/settings/audio.png
images/icons/settings/buttons.png
images/icons/settings/chat.png
images/icons/settings/clock.png
images/icons/settings/downloads.png
images/icons/settings/e-mail.png
images/icons/settings/images.png
images/icons/settings/phone.png
images/icons/settings/search.png
images/icons/settings/video.png
images/interos.org_logo.gif
images/interos.org_logo.png
images/login/arrow.gif
images/login/arrow_down.gif
images/login/i.gif
images/login/new.gif
images/login/new_faded.gif
images/login/next.gif
images/login/next_faded.gif
images/login/nteros.gif
images/login/open.gif
images/login/open_faded.gif
images/login/settings.gif
images/login/settings_faded.gif
images/menu/new_bottom.gif
images/menu/new_top.gif
images/menu/next_bottom.gif
images/menu/next_top.gif
images/menu/open_bottom.gif
images/menu/open_top.gif
images/menu/settings_bottom.gif
images/menu/settings_top.gif
images/panel/bottom.gif
images/panel/bottom_left.gif
images/panel/bottom_right.gif
images/panel/left.gif
images/panel/login.gif
images/panel/login/top.gif
images/panel/login/top_left.gif
images/panel/login/top_right.gif
images/panel/main/top.gif
images/panel/main/top_left.gif
images/panel/main/top_right.gif
images/panel/right.gif
images/panel/title/top.gif
images/panel/title/top_left.gif
images/panel/title/top_right.gif
images/panel/welcome/bottom.gif
images/panel/welcome/bottom_left.gif
images/panel/welcome/bottom_right.gif
images/panel/welcome/left.gif
images/panel/welcome/right.gif
images/panel/welcome/top.gif
images/panel/welcome/top_left.gif
images/panel/welcome/top_right.gif
images/toolbar.gif
js/bottom_interos.com_ssl.js
js/content_interos.com_ssl.js
js/default_interos.com.js
js/default_interos.com_ssl.js
js/default_interos.org.js
js/default_interos.org_ssl.js
js/home_interos.com.js
js/home_interos.com_ssl.js
js/login_interos.com_ssl.js
js/main_interos.com_ssl.js
js/menu_interos.com_ssl.js
js/new_interos.com_ssl.js
js/next_interos.com_ssl.js
js/open_interos.com_ssl.js
js/settings_interos.com_ssl.js
js/top_interos.com_ssl.js
js/welcome_interos.com_ssl.js
style/content_interos.com_ssl.css
style/default_interos.com.css
style/default_interos.com_ssl.css
style/default_interos.org.css
style/default_interos.org_ssl.css
style/images/box/head.gif
style/images/box/highlight.gif
style/images/buttons/new.gif
style/images/buttons/new_down.gif
style/images/buttons/new_faded.gif
style/images/buttons/new_up.gif
style/images/buttons/new_up_faded.gif
style/images/buttons/next.gif
style/images/buttons/next_down.gif
style/images/buttons/next_faded.gif
style/images/buttons/next_up.gif
style/images/buttons/next_up_faded.gif
style/images/buttons/open.gif
style/images/buttons/open_down.gif
style/images/buttons/open_faded.gif
style/images/buttons/open_up.gif
style/images/buttons/open_up_faded.gif
style/images/buttons/settings.gif
style/images/buttons/settings_down.gif
style/images/buttons/settings_faded.gif
style/images/buttons/settings_up.gif
style/images/buttons/settings_up_faded.gif
style/images/menu/active.gif
style/images/menu/new_hover.gif
style/images/menu/new_top.gif
style/images/menu/next_hover.gif
style/images/menu/next_top.gif
style/images/menu/open_hover.gif
style/images/menu/open_top.gif
style/images/menu/settings_hover.gif
style/images/menu/settings_top.gif
style/images/panel/main.gif
style/images/panel/title.gif
style/images/panel/welcome.gif
style/images/toolbar.gif
style/images/toolbar_shaded.gif
style/login_interos.com_ssl.css
style/main_interos.com_ssl.css
style/menu_interos.com_ssl.css
xhtml/cgi/bottom_interos.com_ssl.xhtml
xhtml/cgi/bottom_js_interos.com_ssl.xhtml
xhtml/cgi/bottom_new_interos.com_ssl.xhtml
xhtml/cgi/bottom_settings_interos.com_ssl.xhtml
xhtml/cgi/browse_interos.com_ssl.xhtml
xhtml/cgi/content_interos.com_ssl.xhtml
xhtml/cgi/login_interos.com_ssl.xhtml
xhtml/cgi/main_interos.com_ssl.xhtml
xhtml/cgi/main_js_interos.com_ssl.xhtml
xhtml/cgi/main_new_interos.com_ssl.xhtml
xhtml/cgi/main_next_interos.com_ssl.xhtml
xhtml/cgi/main_open_interos.com_ssl.xhtml
xhtml/cgi/main_settings_interos.com_ssl.xhtml
xhtml/cgi/menu_new_interos.com_ssl.xhtml
xhtml/cgi/menu_next_interos.com_ssl.xhtml
xhtml/cgi/menu_open_interos.com_ssl.xhtml
xhtml/cgi/menu_settings_interos.com_ssl.xhtml
xhtml/cgi/new_interos.com_ssl.xhtml
xhtml/cgi/new_js_interos.com_ssl.xhtml
xhtml/cgi/new_user_interos.com_ssl.xhtml
xhtml/cgi/next_interos.com_ssl.xhtml
xhtml/cgi/next_js_interos.com_ssl.xhtml
xhtml/cgi/open_interos.com_ssl.xhtml
xhtml/cgi/open_js_interos.com_ssl.xhtml
xhtml/cgi/settings_interos.com_ssl.xhtml
xhtml/cgi/settings_js_interos.com_ssl.xhtml
xhtml/cgi/top_interos.com_ssl.xhtml
xhtml/cgi/top_js_interos.com_ssl.xhtml
xhtml/cgi/top_next_interos.com_ssl.xhtml
xhtml/cgi/top_open_interos.com_ssl.xhtml
xhtml/cgi/welcome_back_interos.com_ssl.xhtml
xhtml/cgi/welcome_interos.com_ssl.xhtml
xhtml/cgi/welcome_js_interos.com_ssl.xhtml
xhtml/docs/flash/text_editor/spec_interos.org.xhtml
xhtml/page/about_interos.com.xhtml
xhtml/page/about_interos.com_ssl.xhtml
xhtml/page/about_interos.org.xhtml
xhtml/page/about_interos.org_ssl.xhtml
xhtml/page/blog_interos.com.xhtml
xhtml/page/blog_interos.com_ssl.xhtml
xhtml/page/blog_interos.org.xhtml
xhtml/page/blog_interos.org_ssl.xhtml
xhtml/page/code_interos.com.xhtml
xhtml/page/code_interos.com_ssl.xhtml
xhtml/page/code_interos.org.xhtml
xhtml/page/code_interos.org_ssl.xhtml
xhtml/page/default.xhtml
xhtml/page/default_ssl.xhtml
xhtml/page/demo_interos.com.xhtml
xhtml/page/demo_interos.com_ssl.xhtml
xhtml/page/e-mail_interos.com.xhtml
xhtml/page/e-mail_interos.com_ssl.xhtml
xhtml/page/e-mail_interos.org.xhtml
xhtml/page/e-mail_interos.org_ssl.xhtml
xhtml/page/faq_interos.com.xhtml
xhtml/page/faq_interos.com_ssl.xhtml
xhtml/page/faq_interos.org.xhtml
xhtml/page/faq_interos.org_ssl.xhtml
xhtml/page/gear_interos.com.xhtml
xhtml/page/gear_interos.com_ssl.xhtml
xhtml/page/gear_interos.org.xhtml
xhtml/page/gear_interos.org_ssl.xhtml
xhtml/page/help_interos.com.xhtml
xhtml/page/help_interos.com_ssl.xhtml
xhtml/page/help_interos.org.xhtml
xhtml/page/help_interos.org_ssl.xhtml
xhtml/page/home_interos.com.xhtml
xhtml/page/home_interos.com_ssl.xhtml
xhtml/page/home_interos.org.xhtml
xhtml/page/home_interos.org_old.xhtml
xhtml/page/home_interos.org_ssl.xhtml
xhtml/page/home_interos.org_ssl_old.xhtml
xhtml/template.xhtml
xml/c/access_interos.com_ssl.c
xml/c/bottom_interos.com_ssl.c
xml/c/browse_interos.com_ssl.c
xml/c/content_interos.com_ssl.c
xml/c/interos.c
xml/c/interos.h
xml/c/interos.org.h
xml/c/interos.org_interos.org_ssl.h
xml/c/interos_interos.com_ssl.c
xml/c/interos_interos.com_ssl.h
xml/c/login_interos.com_ssl.c
xml/c/logout_interos.com_ssl.c
xml/c/main_interos.com_ssl.c
xml/c/menu_interos.com_ssl.c
xml/c/new_interos.com_ssl.c
xml/c/new_user_interos.com_ssl.c
xml/c/next_interos.com_ssl.c
xml/c/open_interos.com_ssl.c
xml/c/settings_interos.com_ssl.c
xml/c/template.c
xml/c/top_interos.com_ssl.c
xml/c/upload_interos.com_ssl.c
xml/c/user_interos.com_ssl.c
xml/c/welcome_back_interos.com_ssl.c
xml/c/welcome_interos.com_ssl.c
xml/c/xml/append_interos.com_ssl.c
xml/c/xml/copy_interos.com_ssl.c
xml/c/xml/delete_interos.com_ssl.c
xml/c/xml/files_interos.com_ssl.c
xml/c/xml/interos.h
xml/c/xml/move_interos.com_ssl.c
xml/c/xml/new_folder_interos.com_ssl.c
xml/c/xml/persist_interos.com_ssl.c
xml/c/xml/save_interos.com_ssl.c
xml/c/xml/template_interos.com_ssl.c
xml/c/xml/user_interos.com_ssl.c
xml/conf/httpd.conf
xml/confirmation_interos.com_ssl.xml
xml/dtd/xhtml1-borderless-frameset.dtd
xml/error_interos.com_ssl.xml
xml/files_interos.com_ssl.xml
xml/images/buttons/new.gif
xml/images/buttons/new_down.gif
xml/images/buttons/new_faded.gif
xml/images/buttons/new_up.gif
xml/images/buttons/next.gif
xml/images/buttons/next_faded.gif
xml/images/buttons/next_up.gif
xml/images/buttons/open.gif
xml/images/buttons/open_down.gif
xml/images/buttons/open_faded.gif
xml/images/buttons/open_up.gif
xml/images/buttons/settings.gif
xml/images/buttons/settings_down.gif
xml/images/buttons/settings_faded.gif
xml/images/buttons/settings_up.gif
xml/images/docs/flash/text_editor/spec/1.gif
xml/images/docs/flash/text_editor/spec/2a-i.gif
xml/images/docs/flash/text_editor/spec/2a-ii.gif
xml/images/docs/flash/text_editor/spec/2a-iii.gif
xml/images/docs/flash/text_editor/spec/2a-iv.gif
xml/images/docs/flash/text_editor/spec/2b-i.gif
xml/images/docs/flash/text_editor/spec/2b-ii.gif
xml/images/favicon.gif-moved
xml/images/favicon.ico
xml/images/favicon.ico-moved
xml/images/icons/browse/go.png
xml/images/icons/browse/home.png
xml/images/icons/browse/reload.png
xml/images/icons/browse/stop.png
xml/images/icons/new/alarm.png
xml/images/icons/new/application.png
xml/images/icons/new/bookmark.png
xml/images/icons/new/chat.png
xml/images/icons/new/copy.png
xml/images/icons/new/document.png
xml/images/icons/new/download.png
xml/images/icons/new/e-mail.png
xml/images/icons/new/folder.png
xml/images/icons/new/image.png
xml/images/icons/new/music.png
xml/images/icons/new/phone_call.png
xml/images/icons/new/search.png
xml/images/icons/new/share.png
xml/images/icons/new/text_file.png
xml/images/icons/new/upload.png
xml/images/icons/new/video.png
xml/images/icons/new/web_page.png
xml/images/icons/next/bookmark.png
xml/images/icons/next/close.png
xml/images/icons/next/logout.png
xml/images/icons/next/save.png
xml/images/icons/next/save_as.png
xml/images/icons/open/alarm.png
xml/images/icons/open/bookmark.png
xml/images/icons/open/document.png
xml/images/icons/open/e-mail.png
xml/images/icons/open/image.png
xml/images/icons/open/incoming.png
xml/images/icons/open/music.png
xml/images/icons/open/shared.png
xml/images/icons/open/text_file.png
xml/images/icons/open/video.png
xml/images/icons/settings/audio.png
xml/images/icons/settings/buttons.png
xml/images/icons/settings/chat.png
xml/images/icons/settings/clock.png
xml/images/icons/settings/downloads.png
xml/images/icons/settings/e-mail.png
xml/images/icons/settings/images.png
xml/images/icons/settings/phone.png
xml/images/icons/settings/search.png
xml/images/icons/settings/video.png
xml/images/interos.org_logo.gif
xml/images/interos.org_logo.png
xml/images/login/arrow.gif
xml/images/login/arrow_down.gif
xml/images/login/i.gif
xml/images/login/new.gif
xml/images/login/new_faded.gif
xml/images/login/next.gif
xml/images/login/next_faded.gif
xml/images/login/nteros.gif
xml/images/login/open.gif
xml/images/login/open_faded.gif
xml/images/login/settings.gif
xml/images/login/settings_faded.gif
xml/images/menu/new_bottom.gif
xml/images/menu/new_top.gif
xml/images/menu/next_bottom.gif
xml/images/menu/next_top.gif
xml/images/menu/open_bottom.gif
xml/images/menu/open_top.gif
xml/images/menu/settings_bottom.gif
xml/images/menu/settings_top.gif
xml/images/panel/bottom.gif
xml/images/panel/bottom_left.gif
xml/images/panel/bottom_right.gif
xml/images/panel/left.gif
xml/images/panel/login.gif
xml/images/panel/login/top.gif
xml/images/panel/login/top_left.gif
xml/images/panel/login/top_right.gif
xml/images/panel/main/top.gif
xml/images/panel/main/top_left.gif
xml/images/panel/main/top_right.gif
xml/images/panel/right.gif
xml/images/panel/title/top.gif
xml/images/panel/title/top_left.gif
xml/images/panel/title/top_right.gif
xml/images/panel/welcome/bottom.gif
xml/images/panel/welcome/bottom_left.gif
xml/images/panel/welcome/bottom_right.gif
xml/images/panel/welcome/left.gif
xml/images/panel/welcome/right.gif
xml/images/panel/welcome/top.gif
xml/images/panel/welcome/top_left.gif
xml/images/panel/welcome/top_right.gif
xml/images/toolbar.gif
xml/js/bottom_interos.com_ssl.js
xml/js/content_interos.com_ssl.js
xml/js/default_interos.com.js
xml/js/default_interos.com_ssl.js
xml/js/default_interos.org.js
xml/js/default_interos.org_ssl.js
xml/js/home_interos.com.js
xml/js/home_interos.com_ssl.js
xml/js/login_interos.com_ssl.js
xml/js/main_interos.com_ssl.js
xml/js/menu_interos.com_ssl.js
xml/js/new_interos.com_ssl.js
xml/js/next_interos.com_ssl.js
xml/js/open_interos.com_ssl.js
xml/js/settings_interos.com_ssl.js
xml/js/top_interos.com_ssl.js
xml/js/welcome_interos.com_ssl.js
xml/state_interos.com_ssl.xml
xml/style/content_interos.com_ssl.css
xml/style/default_interos.com.css
xml/style/default_interos.com_ssl.css
xml/style/default_interos.org.css
xml/style/default_interos.org_ssl.css
xml/style/images/box/head.gif
xml/style/images/box/highlight.gif
xml/style/images/buttons/new.gif
xml/style/images/buttons/new_down.gif
xml/style/images/buttons/new_faded.gif
xml/style/images/buttons/new_up.gif
xml/style/images/buttons/new_up_faded.gif
xml/style/images/buttons/next.gif
xml/style/images/buttons/next_down.gif
xml/style/images/buttons/next_faded.gif
xml/style/images/buttons/next_up.gif
xml/style/images/buttons/next_up_faded.gif
xml/style/images/buttons/open.gif
xml/style/images/buttons/open_down.gif
xml/style/images/buttons/open_faded.gif
xml/style/images/buttons/open_up.gif
xml/style/images/buttons/open_up_faded.gif
xml/style/images/buttons/settings.gif
xml/style/images/buttons/settings_down.gif
xml/style/images/buttons/settings_faded.gif
xml/style/images/buttons/settings_up.gif
xml/style/images/buttons/settings_up_faded.gif
xml/style/images/menu/active.gif
xml/style/images/menu/new_hover.gif
xml/style/images/menu/new_top.gif
xml/style/images/menu/next_hover.gif
xml/style/images/menu/next_top.gif
xml/style/images/menu/open_hover.gif
xml/style/images/menu/open_top.gif
xml/style/images/menu/settings_hover.gif
xml/style/images/menu/settings_top.gif
xml/style/images/panel/main.gif
xml/style/images/panel/title.gif
xml/style/images/panel/welcome.gif
xml/style/images/toolbar.gif
xml/style/images/toolbar_shaded.gif
xml/style/login_interos.com_ssl.css
xml/style/main_interos.com_ssl.css
xml/style/menu_interos.com_ssl.css
xml/user_interos.com_ssl.xml
xml/xhtml/cgi/bottom_interos.com_ssl.xhtml
xml/xhtml/cgi/bottom_js_interos.com_ssl.xhtml
xml/xhtml/cgi/bottom_new_interos.com_ssl.xhtml
xml/xhtml/cgi/bottom_settings_interos.com_ssl.xhtml
xml/xhtml/cgi/browse_interos.com_ssl.xhtml
xml/xhtml/cgi/content_interos.com_ssl.xhtml
xml/xhtml/cgi/login_interos.com_ssl.xhtml
xml/xhtml/cgi/main_interos.com_ssl.xhtml
xml/xhtml/cgi/main_js_interos.com_ssl.xhtml
xml/xhtml/cgi/main_new_interos.com_ssl.xhtml
xml/xhtml/cgi/main_next_interos.com_ssl.xhtml
xml/xhtml/cgi/main_open_interos.com_ssl.xhtml
xml/xhtml/cgi/main_settings_interos.com_ssl.xhtml
xml/xhtml/cgi/menu_new_interos.com_ssl.xhtml
xml/xhtml/cgi/menu_next_interos.com_ssl.xhtml
xml/xhtml/cgi/menu_open_interos.com_ssl.xhtml
xml/xhtml/cgi/menu_settings_interos.com_ssl.xhtml
xml/xhtml/cgi/new_interos.com_ssl.xhtml
xml/xhtml/cgi/new_js_interos.com_ssl.xhtml
xml/xhtml/cgi/new_user_interos.com_ssl.xhtml
xml/xhtml/cgi/next_interos.com_ssl.xhtml
xml/xhtml/cgi/next_js_interos.com_ssl.xhtml
xml/xhtml/cgi/open_interos.com_ssl.xhtml
xml/xhtml/cgi/open_js_interos.com_ssl.xhtml
xml/xhtml/cgi/settings_interos.com_ssl.xhtml
xml/xhtml/cgi/settings_js_interos.com_ssl.xhtml
xml/xhtml/cgi/top_interos.com_ssl.xhtml
xml/xhtml/cgi/top_js_interos.com_ssl.xhtml
xml/xhtml/cgi/top_next_interos.com_ssl.xhtml
xml/xhtml/cgi/top_open_interos.com_ssl.xhtml
xml/xhtml/cgi/welcome_back_interos.com_ssl.xhtml
xml/xhtml/cgi/welcome_interos.com_ssl.xhtml
xml/xhtml/cgi/welcome_js_interos.com_ssl.xhtml
xml/xhtml/docs/flash/text_editor/spec_interos.org.xhtml
xml/xhtml/page/about_interos.com.xhtml
xml/xhtml/page/about_interos.com_ssl.xhtml
xml/xhtml/page/about_interos.org.xhtml
xml/xhtml/page/about_interos.org_ssl.xhtml
xml/xhtml/page/blog_interos.com.xhtml
xml/xhtml/page/blog_interos.com_ssl.xhtml
xml/xhtml/page/blog_interos.org.xhtml
xml/xhtml/page/blog_interos.org_ssl.xhtml
xml/xhtml/page/code_interos.com.xhtml
xml/xhtml/page/code_interos.com_ssl.xhtml
xml/xhtml/page/code_interos.org.xhtml
xml/xhtml/page/code_interos.org_ssl.xhtml
xml/xhtml/page/default.xhtml
xml/xhtml/page/default_ssl.xhtml
xml/xhtml/page/demo_interos.com.xhtml
xml/xhtml/page/demo_interos.com_ssl.xhtml
xml/xhtml/page/e-mail_interos.com.xhtml
xml/xhtml/page/e-mail_interos.com_ssl.xhtml
xml/xhtml/page/e-mail_interos.org.xhtml
xml/xhtml/page/e-mail_interos.org_ssl.xhtml
xml/xhtml/page/faq_interos.com.xhtml
xml/xhtml/page/faq_interos.com_ssl.xhtml
xml/xhtml/page/faq_interos.org.xhtml
xml/xhtml/page/faq_interos.org_ssl.xhtml
xml/xhtml/page/gear_interos.com.xhtml
xml/xhtml/page/gear_interos.com_ssl.xhtml
xml/xhtml/page/gear_interos.org.xhtml
xml/xhtml/page/gear_interos.org_ssl.xhtml
xml/xhtml/page/help_interos.com.xhtml
xml/xhtml/page/help_interos.com_ssl.xhtml
xml/xhtml/page/help_interos.org.xhtml
xml/xhtml/page/help_interos.org_ssl.xhtml
xml/xhtml/page/home_interos.com.xhtml
xml/xhtml/page/home_interos.com_ssl.xhtml
xml/xhtml/page/home_interos.org.xhtml
xml/xhtml/page/home_interos.org_old.xhtml
xml/xhtml/page/home_interos.org_ssl.xhtml
xml/xhtml/page/home_interos.org_ssl_old.xhtml
xml/xhtml/template.xhtml
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/c/access_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
     1.3 @@ -0,0 +1,315 @@
     1.4 +/******************************************************/
     1.5 +/*    interos Standard Document Header - CGI in C     */
     1.6 +/******************************************************/
     1.7 +/*         File:  access                              */
     1.8 +/*       Source:  access.c                            */
     1.9 +/*  Description:  FastCGI for interos access checker  */
    1.10 +/*       Author:  Brent Angeline                      */
    1.11 +/*          CGI:  FastCGI in ISO/ANSI C               */
    1.12 +/******************************************************/
    1.13 +
    1.14 +/* PREPROCESSOR DIRECTIVES */
    1.15 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen()                                */
    1.16 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
    1.17 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
    1.18 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen(), strncmp()                        */
    1.19 +#include <unistd.h>         /*  F_OK, access()                                                           */
    1.20 +
    1.21 +/* FUNCTION PROTOTYPE DECLARATIONS */
    1.22 +static void DenyAccess(void);
    1.23 +static void GrantAccess(void);
    1.24 +
    1.25 +/* BEGIN MAIN PROGRAM */
    1.26 +int main(void) {
    1.27 +
    1.28 +  /* BEGIN FASTCGI */
    1.29 +  while (FCGI_Accept() >= 0) {
    1.30 +
    1.31 +    /* IF A URI REQUEST DOESN'T EXIST OR IS TOO LONG... */
    1.32 +    if (!getenv("REQUEST_URI") || (sizeof(strlen(getenv("REQUEST_URI"))) > sizeof(INT))) {
    1.33 +      /** ERROR | A URI REQUEST DOES NOT EXIST OR IS TOO LONG > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
    1.34 +      DenyAccess();
    1.35 +
    1.36 +    /* OTHERWISE, IF A URI REQUEST DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
    1.37 +    } else {
    1.38 +
    1.39 +      /* IF THE URI REQUEST IS FOR A PUBLIC FILE IN THE SERVER ROOT... */
    1.40 +      if (!(strcmp(getenv("REQUEST_URI"), "/") && strcmp(getenv("REQUEST_URI"), "/favicon.ico") &&
    1.41 +            strcmp(getenv("REQUEST_URI"), "/index.html") && strcmp(getenv("REQUEST_URI"), "/index.xhtml") &&
    1.42 +            strcmp(getenv("REQUEST_URI"), "/about") && strcmp(getenv("REQUEST_URI"), "/about/") &&
    1.43 +            strcmp(getenv("REQUEST_URI"), "/blog") && strcmp(getenv("REQUEST_URI"), "/blog/") &&
    1.44 +            strcmp(getenv("REQUEST_URI"), "/code") && strcmp(getenv("REQUEST_URI"), "/code/") &&
    1.45 +            strcmp(getenv("REQUEST_URI"), "/demo") && strcmp(getenv("REQUEST_URI"), "/demo/") &&
    1.46 +            strcmp(getenv("REQUEST_URI"), "/e-mail") && strcmp(getenv("REQUEST_URI"), "/e-mail/") &&
    1.47 +            strcmp(getenv("REQUEST_URI"), "/email") && strcmp(getenv("REQUEST_URI"), "/email/") &&
    1.48 +            strcmp(getenv("REQUEST_URI"), "/f.a.q.") && strcmp(getenv("REQUEST_URI"), "/f.a.q./") &&
    1.49 +            strcmp(getenv("REQUEST_URI"), "/faq") && strcmp(getenv("REQUEST_URI"), "/faq/") &&
    1.50 +            strcmp(getenv("REQUEST_URI"), "/gear") && strcmp(getenv("REQUEST_URI"), "/gear/") &&
    1.51 +            strcmp(getenv("REQUEST_URI"), "/help") && strcmp(getenv("REQUEST_URI"), "/help/") &&
    1.52 +            strcmp(getenv("REQUEST_URI"), "/home") && strcmp(getenv("REQUEST_URI"), "/home/") &&
    1.53 +            strcmp(getenv("REQUEST_URI"), "/bottom") && strcmp(getenv("REQUEST_URI"), "/bottom/") &&
    1.54 +            strcmp(getenv("REQUEST_URI"), "/browse") && strcmp(getenv("REQUEST_URI"), "/browse/") &&
    1.55 +            strcmp(getenv("REQUEST_URI"), "/content") && strcmp(getenv("REQUEST_URI"), "/content/") &&
    1.56 +            strcmp(getenv("REQUEST_URI"), "/login") && strcmp(getenv("REQUEST_URI"), "/login/") &&
    1.57 +            strcmp(getenv("REQUEST_URI"), "/logout") && strcmp(getenv("REQUEST_URI"), "/logout/") &&
    1.58 +            strcmp(getenv("REQUEST_URI"), "/main") && strcmp(getenv("REQUEST_URI"), "/main/") &&
    1.59 +            strcmp(getenv("REQUEST_URI"), "/interos") && strcmp(getenv("REQUEST_URI"), "/interos/") &&
    1.60 +            strcmp(getenv("REQUEST_URI"), "/menu") && strcmp(getenv("REQUEST_URI"), "/menu/") &&
    1.61 +            strcmp(getenv("REQUEST_URI"), "/new") && strcmp(getenv("REQUEST_URI"), "/new/") &&
    1.62 +            strcmp(getenv("REQUEST_URI"), "/new_user") && strcmp(getenv("REQUEST_URI"), "/new_user/") &&
    1.63 +            strcmp(getenv("REQUEST_URI"), "/newuser") && strcmp(getenv("REQUEST_URI"), "/newuser/") &&
    1.64 +            strcmp(getenv("REQUEST_URI"), "/next") && strcmp(getenv("REQUEST_URI"), "/next/") &&
    1.65 +            strcmp(getenv("REQUEST_URI"), "/open") && strcmp(getenv("REQUEST_URI"), "/open/") &&
    1.66 +            strcmp(getenv("REQUEST_URI"), "/settings") && strcmp(getenv("REQUEST_URI"), "/settings/") &&
    1.67 +            strcmp(getenv("REQUEST_URI"), "/top") && strcmp(getenv("REQUEST_URI"), "/top/") &&
    1.68 +            strcmp(getenv("REQUEST_URI"), "/upload") && strcmp(getenv("REQUEST_URI"), "/upload/") &&
    1.69 +            strcmp(getenv("REQUEST_URI"), "/user") && strcmp(getenv("REQUEST_URI"), "/user/") &&
    1.70 +            strcmp(getenv("REQUEST_URI"), "/welcome") && strcmp(getenv("REQUEST_URI"), "/welcome/") &&
    1.71 +            strcmp(getenv("REQUEST_URI"), "/welcome_back") && strcmp(getenv("REQUEST_URI"), "/welcome_back/") &&
    1.72 +            strcmp(getenv("REQUEST_URI"), "/welcomeback") && strcmp(getenv("REQUEST_URI"), "/welcomeback/"))) {
    1.73 +        /** STATUS | PUBLIC FILE > GRANT ACCESS **/
    1.74 +        GrantAccess();
    1.75 +
    1.76 +      /* OTHERWISE, IF THE URI REQUEST IS FOR A PUBLIC SYSTEM FILE... */
    1.77 +      } else if (!(strncmp(getenv("REQUEST_URI"), "/dtd/", 5) &&
    1.78 +                   strncmp(getenv("REQUEST_URI"), "/flash/", 7) &&
    1.79 +                   strncmp(getenv("REQUEST_URI"), "/flex/", 6) &&
    1.80 +                   strncmp(getenv("REQUEST_URI"), "/html/", 6) &&
    1.81 +                   strncmp(getenv("REQUEST_URI"), "/icons/", 7) &&
    1.82 +                   strncmp(getenv("REQUEST_URI"), "/images/", 8) &&
    1.83 +                   strncmp(getenv("REQUEST_URI"), "/java/", 6) &&
    1.84 +                   strncmp(getenv("REQUEST_URI"), "/javafx/", 8) &&
    1.85 +                   strncmp(getenv("REQUEST_URI"), "/js/", 4) &&
    1.86 +                   strncmp(getenv("REQUEST_URI"), "/markup/", 8) &&
    1.87 +                   strncmp(getenv("REQUEST_URI"), "/style/", 7) &&
    1.88 +                   strncmp(getenv("REQUEST_URI"), "/sys/", 5) &&
    1.89 +                   strncmp(getenv("REQUEST_URI"), "/xhtml/", 7) &&
    1.90 +                   strncmp(getenv("REQUEST_URI"), "/xml/", 5))) {
    1.91 +        /** STATUS | PUBLIC SYSTEM FILE > GRANT ACCESS **/
    1.92 +        GrantAccess();
    1.93 +
    1.94 +      /* OTHERWISE, THE PROPER COOKIES ARE REQUIRED FOR ACCESS... */
    1.95 +      } else {
    1.96 +
    1.97 +        /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
    1.98 +        if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
    1.99 +          /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
   1.100 +          DenyAccess();
   1.101 +
   1.102 +        /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   1.103 +        } else {
   1.104 +
   1.105 +          /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
   1.106 +          char *cookie;
   1.107 +          INT cookieLength = strlen(getenv("HTTP_COOKIE"));
   1.108 +          if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
   1.109 +            /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.110 +            DenyAccess();
   1.111 +          } else {
   1.112 +            char *variableName;
   1.113 +            if (!(variableName = malloc(cookieLength + 1))) {
   1.114 +              /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.115 +              DenyAccess();
   1.116 +            } else {
   1.117 +              char *variableValue;
   1.118 +              if (!(variableValue = malloc(cookieLength + 1))) {
   1.119 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.120 +                DenyAccess();
   1.121 +
   1.122 +              /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
   1.123 +              } else {
   1.124 +
   1.125 +                /* PROCESS COOKIE DATA */
   1.126 +                char *login, *password;
   1.127 +                INT c, i;
   1.128 +                login = password = NULL;
   1.129 +                c = 0;
   1.130 +                strcpy(cookie, getenv("HTTP_COOKIE"));
   1.131 +                while ((c < cookieLength) && (cookie[c] != '\0')) {
   1.132 +                  i = 0;
   1.133 +                  while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
   1.134 +                    variableName[i] = cookie[c];
   1.135 +                    ++c;
   1.136 +                    ++i;
   1.137 +                  }
   1.138 +                  variableName[i] = '\0';
   1.139 +                  ++c;
   1.140 +                  i = 0;
   1.141 +                  while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
   1.142 +                    variableValue[i] = cookie[c];
   1.143 +                    ++c;
   1.144 +                    ++i;
   1.145 +                  }
   1.146 +                  variableValue[i] = '\0';
   1.147 +                  ++c;
   1.148 +                  while ((c < cookieLength) && (cookie[c] == ' ')) {
   1.149 +                    ++c;
   1.150 +                  }
   1.151 +                  if (!login && !strcmp(variableName, "login")) {
   1.152 +                    if ((login = malloc(strlen(variableValue) + 1)) != 0) {
   1.153 +                      strcpy(login, variableValue);
   1.154 +                    }
   1.155 +                  } else if (!password && !strcmp(variableName, "password")) {
   1.156 +                    if ((password = malloc(strlen(variableValue) + 1)) != 0) {
   1.157 +                      strcpy(password, variableValue);
   1.158 +                    }
   1.159 +                  }
   1.160 +                }
   1.161 +
   1.162 +                /* IF LOGIN VALUE IS MISSING... */
   1.163 +                if (!login) {
   1.164 +                  /** ERROR | LOGIN VALUE IS MISSING > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.165 +                  DenyAccess();
   1.166 +
   1.167 +                /* OTHERWISE, IF LOGIN VALUE EXISTS... */
   1.168 +                } else {
   1.169 +
   1.170 +                  /* VERIFY LOGIN AND PASSWORD */
   1.171 +                  char *directory;
   1.172 +                  if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
   1.173 +                    /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.174 +                    DenyAccess();
   1.175 +                  } else {
   1.176 +                    char *systemDirectory;
   1.177 +                    if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
   1.178 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.179 +                      DenyAccess();
   1.180 +                    } else {
   1.181 +                      strcpy(directory, DIRECTORY);
   1.182 +                      strcat(directory, login);
   1.183 +                      strcpy(systemDirectory, SYSTEM_DIRECTORY);
   1.184 +                      strcat(systemDirectory, login);
   1.185 +
   1.186 +                      /* IF DIRECTORY CAN'T BE ACCESSED... */
   1.187 +                      if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
   1.188 +                        /** ERROR | CANNOT ACCESS DIRECTORY > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.189 +                        DenyAccess();
   1.190 +
   1.191 +                      /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
   1.192 +                      } else {
   1.193 +
   1.194 +                        /* ATTEMPT TO ACCESS PASSWORD FILE */
   1.195 +                        char *passwordFileName;
   1.196 +                        if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
   1.197 +                          /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.198 +                          DenyAccess();
   1.199 +                        } else {
   1.200 +                          strcpy(passwordFileName, systemDirectory);
   1.201 +                          strcat(passwordFileName, PASSWORD_FILE_NAME);
   1.202 +
   1.203 +                          /* IF PASSWORD FILE CAN'T BE ACCESSED... */
   1.204 +                          if (access(passwordFileName, F_OK)) {
   1.205 +                            /** ERROR | CANNOT ACCESS FILE > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.206 +                            DenyAccess();
   1.207 +
   1.208 +                          /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
   1.209 +                          } else {
   1.210 +
   1.211 +                            /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
   1.212 +                            FILE *passwordFile;
   1.213 +
   1.214 +                            /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
   1.215 +                            if (!(passwordFile = fopen(passwordFileName, "r"))) {
   1.216 +                              /** ERROR | CANNOT READ FILE > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.217 +                              DenyAccess();
   1.218 +
   1.219 +                            /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
   1.220 +                            } else {
   1.221 +                              char *filePassword;
   1.222 +                              if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
   1.223 +                                /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE **/
   1.224 +                                /**       > DENY ACCESS AND REDIRECT TO LOGIN PANEL       **/
   1.225 +                                DenyAccess();
   1.226 +                              } else {
   1.227 +                                char c;
   1.228 +                                i = 0;
   1.229 +
   1.230 +                                /* READ PASSWORD FROM PASSWORD FILE */
   1.231 +                                while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
   1.232 +                                  filePassword[i] = c;
   1.233 +                                  ++i;
   1.234 +                                }
   1.235 +                                filePassword[i] = '\0';
   1.236 +                                fclose(passwordFile);
   1.237 +
   1.238 +                                /* IF PASSWORD FAILS COMPARISON... */
   1.239 +                                if (strcmp(filePassword, password)) {
   1.240 +                                  /** ERROR | PASSWORD FAILED > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.241 +                                  DenyAccess();
   1.242 +
   1.243 +                                /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
   1.244 +                                } else {
   1.245 +                                  char *loginDirectory;
   1.246 +                                  if (!(loginDirectory = malloc(strlen(login) + 3))) {
   1.247 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR LOGIN DIRECTORY NAME **/
   1.248 +                                    /**       > DENY ACCESS AND REDIRECT TO LOGIN PANEL         **/
   1.249 +                                    DenyAccess();
   1.250 +                                  } else {
   1.251 +                                    strcpy(loginDirectory, "/");
   1.252 +                                    strcat(loginDirectory, login);
   1.253 +                                    strcat(loginDirectory, "/");
   1.254 +                                    if (strncmp(loginDirectory, getenv("REQUEST_URI"), (strlen(login) + 2))) {
   1.255 +                                      /** STATUS | FILE DOES NOT BELONG TO USER > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
   1.256 +                                      DenyAccess();
   1.257 +                                    } else {
   1.258 +                                      /** STATUS | FILE DOES BELONG TO USER > GRANT ACCESS **/
   1.259 +                                      GrantAccess();
   1.260 +                                    }
   1.261 +                                    free(loginDirectory);
   1.262 +                                  }
   1.263 +                                }
   1.264 +                                free(filePassword);
   1.265 +                              }
   1.266 +                            }
   1.267 +                          }
   1.268 +                          free(passwordFileName);
   1.269 +                        }
   1.270 +                      }
   1.271 +                      free(systemDirectory);
   1.272 +                    }
   1.273 +                    free(directory);
   1.274 +                  }
   1.275 +                  free(login);
   1.276 +                }
   1.277 +                free(password);
   1.278 +                free(variableValue);
   1.279 +              }
   1.280 +              free(variableName);
   1.281 +            }
   1.282 +            free(cookie);
   1.283 +          }
   1.284 +        }
   1.285 +      }
   1.286 +    }
   1.287 +  }
   1.288 +  return 0;
   1.289 +}
   1.290 +
   1.291 +/* FUNCTION | DENY ACCESS */
   1.292 +static void DenyAccess(void) {
   1.293 +  printf("Status: 403\r\n\r\n");
   1.294 +}
   1.295 +
   1.296 +/* FUNCTION | GRANT ACCESS */
   1.297 +static void GrantAccess(void) {
   1.298 +  printf("Status: 200\r\n\r\n");
   1.299 +}
   1.300 +
   1.301 +/***********************************************************************/
   1.302 +/*                  Copyright and Trademark Statement                  */
   1.303 +/***********************************************************************/
   1.304 +/*                                                                     */
   1.305 +/*          All original textual and graphical site content:           */
   1.306 +/*                                                                     */
   1.307 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   1.308 +/*  reserved.  Reproduction in whole or in part without written        */
   1.309 +/*  permission is prohibited.  interos and the interos logos are       */
   1.310 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   1.311 +/*  product, and service names mentioned herein may be the properties  */
   1.312 +/*  of their respective owners.  Comments in the interos.org forums    */
   1.313 +/*  are the properties of their respective authors.  All software      */
   1.314 +/*  developed in the forums is open source and belongs to everyone.    */
   1.315 +/*                                                                     */
   1.316 +/***********************************************************************/
   1.317 +/*                      e-mail: info@interos.com                       */
   1.318 +/***********************************************************************/
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/c/bottom_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
     2.3 @@ -0,0 +1,514 @@
     2.4 +/******************************************************/
     2.5 +/*    interos Standard Document Header - CGI in C     */
     2.6 +/******************************************************/
     2.7 +/*         URIs:  https://interos.com/bottom          */
     2.8 +/*                https://www.interos.com/bottom      */
     2.9 +/*       Source:  bottom.c                            */
    2.10 +/*  Description:  FastCGI for interos bottom toolbar  */
    2.11 +/*       Author:  Brent Angeline                      */
    2.12 +/*          CGI:  FastCGI in ISO/ANSI C               */
    2.13 +/******************************************************/
    2.14 +
    2.15 +/* PREPROCESSOR DIRECTIVES */
    2.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                      */
    2.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
    2.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
    2.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
    2.20 +#include <unistd.h>         /*  F_OK, access()                                                           */
    2.21 +
    2.22 +/* FUNCTION PROTOTYPE DECLARATIONS */
    2.23 +static void RedirectToLoginPanel(void);
    2.24 +static void OutputBottom(char *status);
    2.25 +static void OutputNewMenuButton(void);
    2.26 +static void OutputSettingsMenuButton(void);
    2.27 +static void BeginXHTMLOutput(void);
    2.28 +static void BeginBottomOutput(void);
    2.29 +static void FinishXHTMLOutput(void);
    2.30 +
    2.31 +/* BEGIN MAIN PROGRAM */
    2.32 +int main(void) {
    2.33 +
    2.34 +  /* BEGIN FASTCGI */
    2.35 +  while (FCGI_Accept() >= 0) {
    2.36 +
    2.37 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
    2.38 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
    2.39 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
    2.40 +      RedirectToLoginPanel();
    2.41 +
    2.42 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
    2.43 +    } else {
    2.44 +
    2.45 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
    2.46 +      char *cookie;
    2.47 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
    2.48 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
    2.49 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
    2.50 +        RedirectToLoginPanel();
    2.51 +      } else {
    2.52 +        char *variableName;
    2.53 +        if (!(variableName = malloc(cookieLength + 1))) {
    2.54 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
    2.55 +          RedirectToLoginPanel();
    2.56 +        } else {
    2.57 +          char *variableValue;
    2.58 +          if (!(variableValue = malloc(cookieLength + 1))) {
    2.59 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
    2.60 +            RedirectToLoginPanel();
    2.61 +
    2.62 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
    2.63 +          } else {
    2.64 +
    2.65 +            /* PROCESS COOKIE DATA */
    2.66 +            char *login, *password;
    2.67 +            INT c, i;
    2.68 +            login = password = NULL;
    2.69 +            c = 0;
    2.70 +            strcpy(cookie, getenv("HTTP_COOKIE"));
    2.71 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
    2.72 +              i = 0;
    2.73 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
    2.74 +                variableName[i] = cookie[c];
    2.75 +                ++c;
    2.76 +                ++i;
    2.77 +              }
    2.78 +              variableName[i] = '\0';
    2.79 +              ++c;
    2.80 +              i = 0;
    2.81 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
    2.82 +                variableValue[i] = cookie[c];
    2.83 +                ++c;
    2.84 +                ++i;
    2.85 +              }
    2.86 +              variableValue[i] = '\0';
    2.87 +              ++c;
    2.88 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
    2.89 +                ++c;
    2.90 +              }
    2.91 +              if (!login && !strcmp(variableName, "login")) {
    2.92 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
    2.93 +                  strcpy(login, variableValue);
    2.94 +                }
    2.95 +              } else if (!password && !strcmp(variableName, "password")) {
    2.96 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
    2.97 +                  strcpy(password, variableValue);
    2.98 +                }
    2.99 +              }
   2.100 +            }
   2.101 +
   2.102 +            /* IF LOGIN VALUE IS MISSING... */
   2.103 +            if (!login) {
   2.104 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
   2.105 +              RedirectToLoginPanel();
   2.106 +
   2.107 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
   2.108 +            } else {
   2.109 +
   2.110 +              /* VERIFY LOGIN AND PASSWORD */
   2.111 +              char *directory;
   2.112 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
   2.113 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
   2.114 +                RedirectToLoginPanel();
   2.115 +              } else {
   2.116 +                char *systemDirectory;
   2.117 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
   2.118 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
   2.119 +                  RedirectToLoginPanel();
   2.120 +                } else {
   2.121 +                  strcpy(directory, DIRECTORY);
   2.122 +                  strcat(directory, login);
   2.123 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
   2.124 +                  strcat(systemDirectory, login);
   2.125 +
   2.126 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
   2.127 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
   2.128 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
   2.129 +                    RedirectToLoginPanel();
   2.130 +
   2.131 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
   2.132 +                  } else {
   2.133 +
   2.134 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
   2.135 +                    char *passwordFileName;
   2.136 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
   2.137 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
   2.138 +                      RedirectToLoginPanel();
   2.139 +                    } else {
   2.140 +                      strcpy(passwordFileName, systemDirectory);
   2.141 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
   2.142 +
   2.143 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
   2.144 +                      if (access(passwordFileName, F_OK)) {
   2.145 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
   2.146 +                        RedirectToLoginPanel();
   2.147 +
   2.148 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
   2.149 +                      } else {
   2.150 +
   2.151 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
   2.152 +                        FILE *passwordFile;
   2.153 +
   2.154 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
   2.155 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
   2.156 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
   2.157 +                          RedirectToLoginPanel();
   2.158 +
   2.159 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
   2.160 +                        } else {
   2.161 +                          char *filePassword;
   2.162 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
   2.163 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
   2.164 +                            RedirectToLoginPanel();
   2.165 +                          } else {
   2.166 +                            char c;
   2.167 +                            i = 0;
   2.168 +
   2.169 +                            /* READ PASSWORD FROM PASSWORD FILE */
   2.170 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
   2.171 +                              filePassword[i] = c;
   2.172 +                              ++i;
   2.173 +                            }
   2.174 +                            filePassword[i] = '\0';
   2.175 +                            fclose(passwordFile);
   2.176 +
   2.177 +                            /* IF PASSWORD FAILS COMPARISON... */
   2.178 +                            if (strcmp(filePassword, password)) {
   2.179 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
   2.180 +                              RedirectToLoginPanel();
   2.181 +
   2.182 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
   2.183 +                            } else {
   2.184 +
   2.185 +                              /* LOAD SETTINGS VALUES FROM FILES */
   2.186 +
   2.187 +                              /* LOAD interos BOTTOM COMPONENTS FROM FILES */
   2.188 +
   2.189 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
   2.190 +                              char *status, *button;
   2.191 +                              status = button = NULL;
   2.192 +
   2.193 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
   2.194 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
   2.195 +                                char *query;
   2.196 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
   2.197 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
   2.198 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
   2.199 +                                } else {
   2.200 +                                  strcpy(query, getenv("QUERY_STRING"));
   2.201 +                                  free(variableName);
   2.202 +                                  if (!(variableName = malloc(queryLength + 1))) {
   2.203 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
   2.204 +                                  } else {
   2.205 +                                    free(variableValue);
   2.206 +                                    if (!(variableValue = malloc(queryLength + 1))) {
   2.207 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
   2.208 +
   2.209 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
   2.210 +                                    } else {
   2.211 +
   2.212 +                                      /* PROCESS QUERY DATA */
   2.213 +                                      INT q = 0;
   2.214 +                                      i = 0;
   2.215 +                                      while ((q < queryLength) && (query[q] != '\0')) {
   2.216 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
   2.217 +                                          variableName[i] = query[q];
   2.218 +                                          ++q;
   2.219 +                                          ++i;
   2.220 +                                        }
   2.221 +                                        variableName[i] = '\0';
   2.222 +                                        ++q;
   2.223 +                                        i = 0;
   2.224 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
   2.225 +                                          variableValue[i] = query[q];
   2.226 +                                          ++q;
   2.227 +                                          ++i;
   2.228 +                                        }
   2.229 +                                        variableValue[i] = '\0';
   2.230 +                                        if (query[q] != '\0') {
   2.231 +                                          ++q;
   2.232 +                                        }
   2.233 +                                        if (!status && !strcmp(variableName, "status")) {
   2.234 +                                          if ((status = malloc(strlen(variableValue) + 1)) != 0) {
   2.235 +                                            strcpy(status, variableValue);
   2.236 +                                          }
   2.237 +                                        } else if (!button && !strcmp(variableName, "button")) {
   2.238 +                                          if ((button = malloc(strlen(variableValue) + 1)) != 0) {
   2.239 +                                            strcpy(button, variableValue);
   2.240 +                                          }
   2.241 +                                        }
   2.242 +                                      }
   2.243 +                                    }
   2.244 +                                  }
   2.245 +                                  free(query);
   2.246 +                                }
   2.247 +                              }
   2.248 +
   2.249 +                              /* OUTPUT GUI COMPONENT(S) BASED ON VARIABLES */
   2.250 +                              if (button) {
   2.251 +                                if (!strcmp(button, "new")) {
   2.252 +                                  OutputNewMenuButton();
   2.253 +                                } else if (!strcmp(button, "settings")) {
   2.254 +                                  OutputSettingsMenuButton();
   2.255 +                                } else {
   2.256 +
   2.257 +                                  /* OUTPUT XHTML FOR interos BOTTOM BAR */
   2.258 +                                  OutputBottom(status);
   2.259 +                                }
   2.260 +                              } else {
   2.261 +
   2.262 +                                /* OUTPUT XHTML FOR interos BOTTOM BAR */
   2.263 +                                OutputBottom(status);
   2.264 +                              }
   2.265 +                              free(button);
   2.266 +                              free(status);
   2.267 +                            }
   2.268 +                            free(filePassword);
   2.269 +                          }
   2.270 +                        }
   2.271 +                      }
   2.272 +                      free(passwordFileName);
   2.273 +                    }
   2.274 +                  }
   2.275 +                  free(systemDirectory);
   2.276 +                }
   2.277 +                free(directory);
   2.278 +              }
   2.279 +              free(login);
   2.280 +            }
   2.281 +            free(password);
   2.282 +            free(variableValue);
   2.283 +          }
   2.284 +          free(variableName);
   2.285 +        }
   2.286 +        free(cookie);
   2.287 +      }
   2.288 +    }
   2.289 +  }
   2.290 +  return 0;
   2.291 +}
   2.292 +
   2.293 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
   2.294 +static void RedirectToLoginPanel(void) {
   2.295 +  BeginXHTMLOutput();
   2.296 +  BeginBottomOutput();
   2.297 +  printf("      <a href=\"/login\" \n");
   2.298 +  printf("         target=\"_top\">click here to login for interos bottom toolbar</a>\n");
   2.299 +  FinishXHTMLOutput();
   2.300 +}
   2.301 +
   2.302 +/* FUNCTION | OUTPUT XHTML FOR interos BOTTOM TOOLBAR */
   2.303 +static void OutputBottom(char *status) {
   2.304 +  BeginXHTMLOutput();
   2.305 +  BeginBottomOutput();
   2.306 +  printf("      <table id=\"bottomToolbar\" width=\"100%%\" \n");
   2.307 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
   2.308 +  printf("        <tr>\n");
   2.309 +  printf("          <td width=\"72\" \n");
   2.310 +  printf("              height=\"72\"><center>\n");
   2.311 +  printf("                            <a id=\"newButton\" \n");
   2.312 +  printf("                               href=\"/interos?menu=new\" \n");
   2.313 +  printf("                               style=\"padding: 26px 0 27px\" \n");
   2.314 +  printf("                               target=\"_top\"><strong>new</strong></a>\n");
   2.315 +  printf("                          </center></td>\n");
   2.316 +  printf("          <td><center>\n");
   2.317 +  printf("                &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
   2.318 +  printf("              </center></td>\n");
   2.319 +  printf("          <td width=\"72\" \n");
   2.320 +  printf("              height=\"72\"><center>\n");
   2.321 +  printf("                            <a id=\"settingsButton\" \n");
   2.322 +  printf("                               href=\"/interos?menu=settings\" \n");
   2.323 +  printf("                               style=\"padding: 26px 0 27px\" \n");
   2.324 +  printf("                               target=\"_top\"><strong>settings</strong></a>\n");
   2.325 +  printf("                          </center></td>\n");
   2.326 +  printf("        </tr>\n");
   2.327 +  printf("      </table>\n");
   2.328 +  FinishXHTMLOutput();
   2.329 +}
   2.330 +
   2.331 +/* FUNCTION | OUTPUT XHTML FOR NEW MENU BUTTON */
   2.332 +static void OutputNewMenuButton(void) {
   2.333 +  BeginXHTMLOutput();
   2.334 +  printf("  <!--======================================================-->\n");
   2.335 +  printf("  <!--      interos Standard Document Header - Markup       -->\n");
   2.336 +  printf("  <!--======================================================-->\n");
   2.337 +  printf("  <!--    URIs:  https://interos.com/bottom?button=new      -->\n");
   2.338 +  printf("  <!--           https://www.interos.com/bottom?button=new  -->\n");
   2.339 +  printf("  <!--   Title:  interos new menu button                    -->\n");
   2.340 +  printf("  <!--  Author:  Brent Angeline                             -->\n");
   2.341 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional       -->\n");
   2.342 +  printf("  <!--======================================================-->\n");
   2.343 +  printf("  <head>\n");
   2.344 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
   2.345 +  printf("    <meta name=\"title\" content=\"interos new menu button\" />\n");
   2.346 +  printf("    <meta name=\"description\" content=\"button for interos new menu\" />\n");
   2.347 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
   2.348 +  printf("    <meta name=\"copyright\" \n");
   2.349 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
   2.350 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
   2.351 +  printf("    <title>interos new menu button</title>\n");
   2.352 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
   2.353 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
   2.354 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
   2.355 +  printf("          media=\"screen, projection\" />\n");
   2.356 +  printf("    <script type=\"text/javascript\" src=\"/js/bottom.js\"></script>\n");
   2.357 +  printf("  </head>\n");
   2.358 +  printf("  <body id=\"body\">\n");
   2.359 +  printf("    <center>\n");
   2.360 +  printf("      <table id=\"bottomToolbarFaded\" width=\"100%%\" \n");
   2.361 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
   2.362 +  printf("        <tr>\n");
   2.363 +  printf("          <td width=\"72\" \n");
   2.364 +  printf("              height=\"72\"><center>\n");
   2.365 +  printf("                            <a id=\"newMenuButton\" \n");
   2.366 +  printf("                               href=\"/main\" \n");
   2.367 +  printf("                               style=\"padding: 26px 0 27px\" \n");
   2.368 +  printf("                               target=\"_top\"><strong>&laquo; back</strong></a>\n");
   2.369 +  printf("                          </center></td>\n");
   2.370 +  printf("          <td><center>\n");
   2.371 +  printf("                &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
   2.372 +  printf("              </center></td>\n");
   2.373 +  printf("          <td id=\"bottomToolbarCornerFaded\" \n");
   2.374 +  printf("              width=\"72\" \n");
   2.375 +  printf("              height=\"72\"><p>\n");
   2.376 +  printf("                            <br />\n");
   2.377 +  printf("                          </p></td>\n");
   2.378 +  printf("        </tr>\n");
   2.379 +  printf("      </table>\n");
   2.380 +  FinishXHTMLOutput();
   2.381 +}
   2.382 +
   2.383 +/* FUNCTION | OUTPUT XHTML FOR SETTINGS MENU BUTTON */
   2.384 +static void OutputSettingsMenuButton(void) {
   2.385 +  BeginXHTMLOutput();
   2.386 +  printf("  <!--===========================================================-->\n");
   2.387 +  printf("  <!--         interos Standard Document Header - Markup         -->\n");
   2.388 +  printf("  <!--===========================================================-->\n");
   2.389 +  printf("  <!--    URIs:  https://interos.com/bottom?button=settings      -->\n");
   2.390 +  printf("  <!--           https://www.interos.com/bottom?button=settings  -->\n");
   2.391 +  printf("  <!--   Title:  interos settings menu button                    -->\n");
   2.392 +  printf("  <!--  Author:  Brent Angeline                                  -->\n");
   2.393 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional            -->\n");
   2.394 +  printf("  <!--===========================================================-->\n");
   2.395 +  printf("  <head>\n");
   2.396 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
   2.397 +  printf("    <meta name=\"title\" content=\"interos settings menu button\" />\n");
   2.398 +  printf("    <meta name=\"description\" content=\"button for interos settings menu\" />\n");
   2.399 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
   2.400 +  printf("    <meta name=\"copyright\" \n");
   2.401 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
   2.402 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
   2.403 +  printf("    <title>interos settings menu button</title>\n");
   2.404 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
   2.405 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
   2.406 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
   2.407 +  printf("          media=\"screen, projection\" />\n");
   2.408 +  printf("    <script type=\"text/javascript\" src=\"/js/bottom.js\"></script>\n");
   2.409 +  printf("  </head>\n");
   2.410 +  printf("  <body id=\"body\">\n");
   2.411 +  printf("    <center>\n");
   2.412 +  printf("      <table id=\"bottomToolbarFaded\" width=\"100%%\" \n");
   2.413 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
   2.414 +  printf("        <tr>\n");
   2.415 +  printf("          <td id=\"bottomToolbarCornerFaded\" \n");
   2.416 +  printf("              width=\"72\" \n");
   2.417 +  printf("              height=\"72\"><p>\n");
   2.418 +  printf("                            <br />\n");
   2.419 +  printf("                          </p></td>\n");
   2.420 +  printf("          <td><center>\n");
   2.421 +  printf("               &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
   2.422 +  printf("              </center></td>\n");
   2.423 +  printf("          <td width=\"72\" \n");
   2.424 +  printf("              height=\"72\"><center>\n");
   2.425 +  printf("                            <a id=\"settingsMenuButton\" \n");
   2.426 +  printf("                               href=\"/main\" \n");
   2.427 +  printf("                               style=\"padding: 26px 0 27px\" \n");
   2.428 +  printf("                               target=\"_top\"><strong>&laquo; back</strong></a>\n");
   2.429 +  printf("                          </center></td>\n");
   2.430 +  printf("        </tr>\n");
   2.431 +  printf("      </table>\n");
   2.432 +  FinishXHTMLOutput();
   2.433 +}
   2.434 +
   2.435 +/* FUNCTION | BEGIN XHTML OUTPUT */
   2.436 +static void BeginXHTMLOutput(void) {
   2.437 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
   2.438 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
   2.439 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
   2.440 +  printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n");
   2.441 +  printf("                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
   2.442 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
   2.443 +}
   2.444 +
   2.445 +/* FUNCTION | BEGIN interos BOTTOM TOOLBAR OUTPUT */
   2.446 +static void BeginBottomOutput(void) {
   2.447 +  printf("  <!--=================================================-->\n");
   2.448 +  printf("  <!--    interos Standard Document Header - Markup    -->\n");
   2.449 +  printf("  <!--=================================================-->\n");
   2.450 +  printf("  <!--    URIs:  https://interos.com/bottom            -->\n");
   2.451 +  printf("  <!--           https://www.interos.com/bottom        -->\n");
   2.452 +  printf("  <!--   Title:  interos bottom toolbar                 -->\n");
   2.453 +  printf("  <!--  Author:  Brent Angeline                        -->\n");
   2.454 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->\n");
   2.455 +  printf("  <!--=================================================-->\n");
   2.456 +  printf("  <head>\n");
   2.457 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
   2.458 +  printf("    <meta name=\"title\" content=\"interos bottom toolbar\" />\n");
   2.459 +  printf("    <meta name=\"description\" content=\"bottom toolbar for interos\" />\n");
   2.460 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
   2.461 +  printf("    <meta name=\"copyright\" \n");
   2.462 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
   2.463 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
   2.464 +  printf("    <title>interos bottom</title>\n");
   2.465 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
   2.466 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
   2.467 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
   2.468 +  printf("          media=\"screen, projection\" />\n");
   2.469 +  printf("    <script type=\"text/javascript\" src=\"/js/bottom.js\"></script>\n");
   2.470 +  printf("  </head>\n");
   2.471 +  printf("  <body id=\"body\">\n");
   2.472 +  printf("    <center>\n");
   2.473 +}
   2.474 +
   2.475 +/* FUNCTION | FINISH XHTML OUTPUT */
   2.476 +static void FinishXHTMLOutput(void) {
   2.477 +  printf("    </center>\n");
   2.478 +  printf("  </body>\n");
   2.479 +  printf("  <!--=====================================================================-->\n");
   2.480 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
   2.481 +  printf("  <!--=====================================================================-->\n");
   2.482 +  printf("  <!--                                                                     -->\n");
   2.483 +  printf("  <!--          All original textual and graphical site content:           -->\n");
   2.484 +  printf("  <!--                                                                     -->\n");
   2.485 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
   2.486 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
   2.487 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
   2.488 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
   2.489 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
   2.490 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
   2.491 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
   2.492 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
   2.493 +  printf("  <!--                                                                     -->\n");
   2.494 +  printf("  <!--=====================================================================-->\n");
   2.495 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
   2.496 +  printf("  <!--=====================================================================-->\n");
   2.497 +  printf("</html>");
   2.498 +}
   2.499 +
   2.500 +/***********************************************************************/
   2.501 +/*                  Copyright and Trademark Statement                  */
   2.502 +/***********************************************************************/
   2.503 +/*                                                                     */
   2.504 +/*          All original textual and graphical site content:           */
   2.505 +/*                                                                     */
   2.506 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   2.507 +/*  reserved.  Reproduction in whole or in part without written        */
   2.508 +/*  permission is prohibited.  interos and the interos logos are       */
   2.509 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   2.510 +/*  product, and service names mentioned herein may be the properties  */
   2.511 +/*  of their respective owners.  Comments in the interos.org forums    */
   2.512 +/*  are the properties of their respective authors.  All software      */
   2.513 +/*  developed in the forums is open source and belongs to everyone.    */
   2.514 +/*                                                                     */
   2.515 +/***********************************************************************/
   2.516 +/*                      e-mail: info@interos.com                       */
   2.517 +/***********************************************************************/
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/c/browse_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
     3.3 @@ -0,0 +1,374 @@
     3.4 +/**************************************************/
     3.5 +/*  interos Standard Document Header - CGI in C   */
     3.6 +/**************************************************/
     3.7 +/*         URIs:  https://interos.com/browse      */
     3.8 +/*                https://www.interos.com/browse  */
     3.9 +/*       Source:  browse.c                        */
    3.10 +/*  Description:  FastCGI for interos browse      */
    3.11 +/*       Author:  Brent Angeline                  */
    3.12 +/*          CGI:  FastCGI in ISO/ANSI C           */
    3.13 +/**************************************************/
    3.14 +
    3.15 +/* PREPROCESSOR DIRECTIVES */
    3.16 +#include "fcgi_stdio.h"     /*  EOF, FCGI_Accept(), fclose(), fgetc(), fopen(), fread(), printf()        */
    3.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
    3.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
    3.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
    3.20 +#include <unistd.h>         /*  F_OK, access()                                                           */
    3.21 +
    3.22 +/* FUNCTION PROTOTYPE DECLARATIONS */
    3.23 +static void RedirectToLoginPanel(void);
    3.24 +static void BeginXHTMLOutput(void);
    3.25 +static void FinishXHTMLOutput(void);
    3.26 +
    3.27 +/* BEGIN MAIN PROGRAM */
    3.28 +int main(void) {
    3.29 +
    3.30 +  /* BEGIN FASTCGI */
    3.31 +  while (FCGI_Accept() >= 0) {
    3.32 +
    3.33 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
    3.34 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
    3.35 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
    3.36 +      RedirectToLoginPanel();
    3.37 +
    3.38 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
    3.39 +    } else {
    3.40 +
    3.41 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
    3.42 +      char *cookie;
    3.43 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
    3.44 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
    3.45 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
    3.46 +        RedirectToLoginPanel();
    3.47 +      } else {
    3.48 +        char *variableName;
    3.49 +        if (!(variableName = malloc(cookieLength + 1))) {
    3.50 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
    3.51 +          RedirectToLoginPanel();
    3.52 +        } else {
    3.53 +          char *variableValue;
    3.54 +          if (!(variableValue = malloc(cookieLength + 1))) {
    3.55 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
    3.56 +            RedirectToLoginPanel();
    3.57 +
    3.58 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
    3.59 +          } else {
    3.60 +
    3.61 +            /* PROCESS COOKIE DATA */
    3.62 +            char *login, *password;
    3.63 +            INT c, i;
    3.64 +            login = password = NULL;
    3.65 +            c = 0;
    3.66 +            strcpy(cookie, getenv("HTTP_COOKIE"));
    3.67 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
    3.68 +              i = 0;
    3.69 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
    3.70 +                variableName[i] = cookie[c];
    3.71 +                ++c;
    3.72 +                ++i;
    3.73 +              }
    3.74 +              variableName[i] = '\0';
    3.75 +              ++c;
    3.76 +              i = 0;
    3.77 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
    3.78 +                variableValue[i] = cookie[c];
    3.79 +                ++c;
    3.80 +                ++i;
    3.81 +              }
    3.82 +              variableValue[i] = '\0';
    3.83 +              ++c;
    3.84 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
    3.85 +                ++c;
    3.86 +              }
    3.87 +              if (!login && !strcmp(variableName, "login")) {
    3.88 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
    3.89 +                  strcpy(login, variableValue);
    3.90 +                }
    3.91 +              } else if (!password && !strcmp(variableName, "password")) {
    3.92 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
    3.93 +                  strcpy(password, variableValue);
    3.94 +                }
    3.95 +              }
    3.96 +            }
    3.97 +
    3.98 +            /* IF LOGIN VALUE IS MISSING... */
    3.99 +            if (!login) {
   3.100 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
   3.101 +              RedirectToLoginPanel();
   3.102 +
   3.103 +              /* OTHERWISE, IF LOGIN VALUE EXISTS... */
   3.104 +              } else {
   3.105 +
   3.106 +              /* VERIFY LOGIN AND PASSWORD */
   3.107 +              char *directory;
   3.108 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
   3.109 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
   3.110 +                RedirectToLoginPanel();
   3.111 +              } else {
   3.112 +                char *systemDirectory;
   3.113 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
   3.114 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
   3.115 +                  RedirectToLoginPanel();
   3.116 +                } else {
   3.117 +                  strcpy(directory, DIRECTORY);
   3.118 +                  strcat(directory, login);
   3.119 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
   3.120 +                  strcat(systemDirectory, login);
   3.121 +
   3.122 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
   3.123 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
   3.124 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
   3.125 +                    RedirectToLoginPanel();
   3.126 +
   3.127 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
   3.128 +                  } else {
   3.129 +
   3.130 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
   3.131 +                    char *passwordFileName;
   3.132 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
   3.133 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
   3.134 +                      RedirectToLoginPanel();
   3.135 +                    } else {
   3.136 +                      strcpy(passwordFileName, systemDirectory);
   3.137 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
   3.138 +
   3.139 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
   3.140 +                      if (access(passwordFileName, F_OK)) {
   3.141 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
   3.142 +                        RedirectToLoginPanel();
   3.143 +
   3.144 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
   3.145 +                      } else {
   3.146 +
   3.147 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
   3.148 +                        FILE *passwordFile;
   3.149 +
   3.150 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
   3.151 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
   3.152 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
   3.153 +                          RedirectToLoginPanel();
   3.154 +
   3.155 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
   3.156 +                        } else {
   3.157 +                          char *filePassword;
   3.158 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
   3.159 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
   3.160 +                            RedirectToLoginPanel();
   3.161 +                          } else {
   3.162 +                            char c;
   3.163 +                            i = 0;
   3.164 +
   3.165 +                            /* READ PASSWORD FROM PASSWORD FILE */
   3.166 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
   3.167 +                              filePassword[i] = c;
   3.168 +                              ++i;
   3.169 +                            }
   3.170 +                            filePassword[i] = '\0';
   3.171 +                            fclose(passwordFile);
   3.172 +
   3.173 +                            /* IF PASSWORD FAILS COMPARISON... */
   3.174 +                            if (strcmp(filePassword, password)) {
   3.175 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
   3.176 +                              RedirectToLoginPanel();
   3.177 +
   3.178 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
   3.179 +                            } else {
   3.180 +
   3.181 +                              /* LOAD SETTINGS VALUES FROM FILE(S) */
   3.182 +
   3.183 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
   3.184 +                              char *address, *search;
   3.185 +                              address = search = NULL;
   3.186 +
   3.187 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
   3.188 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
   3.189 +                                char *query;
   3.190 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
   3.191 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
   3.192 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
   3.193 +                                } else {
   3.194 +                                  strcpy(query, getenv("QUERY_STRING"));
   3.195 +                                  free(variableName);
   3.196 +                                  if (!(variableName = malloc(queryLength + 1))) {
   3.197 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
   3.198 +                                  } else {
   3.199 +                                    free(variableValue);
   3.200 +                                    if (!(variableValue = malloc(queryLength + 1))) {
   3.201 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
   3.202 +
   3.203 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
   3.204 +                                    } else {
   3.205 +
   3.206 +                                      /* PROCESS QUERY DATA */
   3.207 +                                      INT q = 0;
   3.208 +                                      i = 0;
   3.209 +                                      while ((q < queryLength) && (query[q] != '\0')) {
   3.210 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
   3.211 +                                          variableName[i] = query[q];
   3.212 +                                          ++q;
   3.213 +                                          ++i;
   3.214 +                                        }
   3.215 +                                        variableName[i] = '\0';
   3.216 +                                        ++q;
   3.217 +                                        i = 0;
   3.218 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
   3.219 +                                          variableValue[i] = query[q];
   3.220 +                                          ++q;
   3.221 +                                          ++i;
   3.222 +                                        }
   3.223 +                                        variableValue[i] = '\0';
   3.224 +                                        if (query[q] != '\0') {
   3.225 +                                          ++q;
   3.226 +                                        }
   3.227 +                                        if (!address && !strcmp(variableName, "address")) {
   3.228 +                                          if ((address = malloc(strlen(variableValue) + 1)) != 0) {
   3.229 +                                            strcpy(address, variableValue);
   3.230 +                                          }
   3.231 +                                        } else if (!search && !strcmp(variableName, "search")) {
   3.232 +                                          if ((search = malloc(strlen(variableValue) + 1)) != 0) {
   3.233 +                                            strcpy(search, variableValue);
   3.234 +                                            for (c = 0; c < strlen(search); ++c) {
   3.235 +                                              if (search[c] == ' ') {
   3.236 +                                                search[c] = '+';
   3.237 +                                              }
   3.238 +                                            }
   3.239 +                                          }
   3.240 +                                        }
   3.241 +                                      }
   3.242 +                                      free(variableValue);
   3.243 +                                      variableValue = NULL;
   3.244 +                                    }
   3.245 +                                    free(variableName);
   3.246 +                                    variableName = NULL;
   3.247 +                                  }
   3.248 +                                  free(query);
   3.249 +                                }
   3.250 +                              }
   3.251 +
   3.252 +                              /* IF THIS IS A CONTINUED SESSION... */
   3.253 +
   3.254 +                                /* LOAD SESSION FROM FILE */
   3.255 +
   3.256 +                              /* OUTPUT GUI COMPONENTS BASED ON VARIABLES */
   3.257 +                              printf("Content-type: text/html\n\n");
   3.258 +                              printf("<!--=======================================================-->\n");
   3.259 +                              printf("<!--  interos.com Standard Document Model Header - Markup  -->\n");
   3.260 +                              printf("<!--=======================================================-->\n");
   3.261 +                              printf("<!--      URIs:   https://www.interos.com/sys/browser      -->\n");
   3.262 +                              printf("<!--              interos.com/sys/browser                  -->\n");
   3.263 +                              printf("<!--      Title:  interos browser                          -->\n");
   3.264 +                              printf("<!--     Author:  Brent Angeline                           -->\n");
   3.265 +                              printf("<!--     Markup:  Dynamic XHTML                            -->\n");
   3.266 +                              printf("<!--=======================================================-->\n");
   3.267 +                              printf("<html>");
   3.268 +                                printf("<head>");
   3.269 +                                  printf("<title>interos > %s > browser</title>", login);
   3.270 +                                printf("</head>");
   3.271 +                                printf("<frameset rows=\"72,*,72\" border=\"0\">");
   3.272 +                                  printf("<frame name=\"top\" src=\"top\" scrolling=\"no\" noresize=\"noresize\">");
   3.273 +                                  if (address != NULL) {
   3.274 +                                    printf("<frame name=\"content\" src=\"http://%s\" scrolling=\"yes\" noresize=\"noresize\">", address);
   3.275 +                                  } else {
   3.276 +                                    printf("<frame name=\"content\" src=\"http://www.google.com/search?hl=en&q=%s&btnG=Google+Search\" scrolling=\"yes\" noresize=\"noresize\">", search);
   3.277 +                                  }
   3.278 +                                  printf("<frame name=\"bottom\" src=\"bottom\" scrolling=\"no\" noresize=\"noresize\">");
   3.279 +                                printf("</frameset>");
   3.280 +                                printf("<noframes>");
   3.281 +                                printf("</noframes>");
   3.282 +                              printf("</html>\n");
   3.283 +                              printf("<!--===========================================================================-->\n");
   3.284 +                              printf("<!--                   Copyright and Trademark Legal Notice                    -->\n");
   3.285 +                              printf("<!--===========================================================================-->\n");
   3.286 +                              printf("<!--                                                                           -->\n");
   3.287 +                              printf("<!--                  All textual and graphical site content:                  -->\n");
   3.288 +                              printf("<!--                                                                           -->\n");
   3.289 +                              printf("<!--  Copyright (C) 2001 - 2010 Brent Angeline / interos.com / interos.        -->\n");
   3.290 +                              printf("<!--  Reproduction in whole or part without written permission is prohibited.  -->\n");
   3.291 +                              printf("<!--  All rights reserved.  interos.com and the interos logos are              -->\n");
   3.292 +                              printf("<!--  trademarks of Brent Angeline / interos.com / interos.                    -->\n");
   3.293 +                              printf("<!--  All other company names, product names and services mentioned herein     -->\n");
   3.294 +                              printf("<!--  may be the property of their respective owners.                          -->\n");
   3.295 +                              printf("<!--                                                                           -->\n");
   3.296 +                              printf("<!--===========================================================================-->\n");
   3.297 +                              printf("<!--                         e-mail: info@interos.com                          -->\n");
   3.298 +                              printf("<!--===========================================================================-->");
   3.299 +
   3.300 +                              free(address);
   3.301 +                              free(search);
   3.302 +                            }
   3.303 +                            free(filePassword);
   3.304 +                          }
   3.305 +                        }
   3.306 +                      }
   3.307 +                      free(passwordFileName);
   3.308 +                    }
   3.309 +                  }
   3.310 +                  free(systemDirectory);
   3.311 +                }
   3.312 +                free(directory);
   3.313 +              }
   3.314 +              free(login);
   3.315 +            }
   3.316 +            free(password);
   3.317 +            free(variableValue);
   3.318 +          }
   3.319 +          free(variableName);
   3.320 +        }
   3.321 +        free(cookie);
   3.322 +      }
   3.323 +    }
   3.324 +  }
   3.325 +  return 0;
   3.326 +}
   3.327 +
   3.328 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
   3.329 +static void RedirectToLoginPanel(void) {
   3.330 +  printf("Location: login\r\n\r\n");
   3.331 +}
   3.332 +
   3.333 +static void BeginXHTMLOutput(void) {
   3.334 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
   3.335 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
   3.336 +}
   3.337 +
   3.338 +static void FinishXHTMLOutput(void) {
   3.339 +  printf("  <!--=====================================================================-->\n");
   3.340 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
   3.341 +  printf("  <!--=====================================================================-->\n");
   3.342 +  printf("  <!--                                                                     -->\n");
   3.343 +  printf("  <!--          All original textual and graphical site content:           -->\n");
   3.344 +  printf("  <!--                                                                     -->\n");
   3.345 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
   3.346 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
   3.347 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
   3.348 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
   3.349 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
   3.350 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
   3.351 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
   3.352 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
   3.353 +  printf("  <!--                                                                     -->\n");
   3.354 +  printf("  <!--=====================================================================-->\n");
   3.355 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
   3.356 +  printf("  <!--=====================================================================-->\n");
   3.357 +  printf("</html>");
   3.358 +}
   3.359 +
   3.360 +/***********************************************************************/
   3.361 +/*                  Copyright and Trademark Statement                  */
   3.362 +/***********************************************************************/
   3.363 +/*                                                                     */
   3.364 +/*          All original textual and graphical site content:           */
   3.365 +/*                                                                     */
   3.366 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   3.367 +/*  reserved.  Reproduction in whole or in part without written        */
   3.368 +/*  permission is prohibited.  interos and the interos logos are       */
   3.369 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   3.370 +/*  product, and service names mentioned herein may be the properties  */
   3.371 +/*  of their respective owners.  Comments in the interos.org forums    */
   3.372 +/*  are the properties of their respective authors.  All software      */
   3.373 +/*  developed in the forums is open source and belongs to everyone.    */
   3.374 +/*                                                                     */
   3.375 +/***********************************************************************/
   3.376 +/*                      e-mail: info@interos.com                       */
   3.377 +/***********************************************************************/
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/c/content_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
     4.3 @@ -0,0 +1,390 @@
     4.4 +/***************************************************/
     4.5 +/*   interos Standard Document Header - CGI in C   */
     4.6 +/***************************************************/
     4.7 +/*         URIs:  https://interos.com/content      */
     4.8 +/*                https://www.interos.com/content  */
     4.9 +/*       Source:  content.c                        */
    4.10 +/*  Description:  FastCGI for interos content      */
    4.11 +/*       Author:  Brent Angeline                   */
    4.12 +/*          CGI:  FastCGI in ISO/ANSI C            */
    4.13 +/***************************************************/
    4.14 +
    4.15 +/* PREPROCESSOR DIRECTIVES */
    4.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                      */
    4.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
    4.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
    4.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
    4.20 +#include <unistd.h>         /*  F_OK, access()                                                           */
    4.21 +
    4.22 +/* FUNCTION PROTOTYPE DECLARATIONS */
    4.23 +static void RedirectToLoginPanel(void);
    4.24 +static void OutputContent(const char *variableName, char *variableValue);
    4.25 +
    4.26 +/* BEGIN MAIN PROGRAM */
    4.27 +int main(void) {
    4.28 +
    4.29 +  /* BEGIN FASTCGI */
    4.30 +  while (FCGI_Accept() >= 0) {
    4.31 +
    4.32 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
    4.33 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
    4.34 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
    4.35 +      RedirectToLoginPanel();
    4.36 +
    4.37 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
    4.38 +    } else {
    4.39 +
    4.40 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
    4.41 +      char *cookie;
    4.42 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
    4.43 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
    4.44 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
    4.45 +        RedirectToLoginPanel();
    4.46 +      } else {
    4.47 +        char *variableName;
    4.48 +        if (!(variableName = malloc(cookieLength + 1))) {
    4.49 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
    4.50 +          RedirectToLoginPanel();
    4.51 +        } else {
    4.52 +          char *variableValue;
    4.53 +          if (!(variableValue = malloc(cookieLength + 1))) {
    4.54 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
    4.55 +            RedirectToLoginPanel();
    4.56 +
    4.57 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
    4.58 +          } else {
    4.59 +
    4.60 +            /* PROCESS COOKIE DATA */
    4.61 +            char *login, *password;
    4.62 +            INT c, i;
    4.63 +            login = password = NULL;
    4.64 +            c = 0;
    4.65 +            strcpy(cookie, getenv("HTTP_COOKIE"));
    4.66 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
    4.67 +              i = 0;
    4.68 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
    4.69 +                variableName[i] = cookie[c];
    4.70 +                ++c;
    4.71 +                ++i;
    4.72 +              }
    4.73 +              variableName[i] = '\0';
    4.74 +              ++c;
    4.75 +              i = 0;
    4.76 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
    4.77 +                variableValue[i] = cookie[c];
    4.78 +                ++c;
    4.79 +                ++i;
    4.80 +              }
    4.81 +              variableValue[i] = '\0';
    4.82 +              ++c;
    4.83 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
    4.84 +                ++c;
    4.85 +              }
    4.86 +              if (!login && !strcmp(variableName, "login")) {
    4.87 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
    4.88 +                  strcpy(login, variableValue);
    4.89 +                }
    4.90 +              } else if (!password && !strcmp(variableName, "password")) {
    4.91 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
    4.92 +                  strcpy(password, variableValue);
    4.93 +                }
    4.94 +              }
    4.95 +            }
    4.96 +
    4.97 +            /* IF LOGIN VALUE IS MISSING... */
    4.98 +            if (!login) {
    4.99 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
   4.100 +              RedirectToLoginPanel();
   4.101 +
   4.102 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
   4.103 +            } else {
   4.104 +
   4.105 +              /* VERIFY LOGIN AND PASSWORD */
   4.106 +              char *directory;
   4.107 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
   4.108 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
   4.109 +                RedirectToLoginPanel();
   4.110 +              } else {
   4.111 +                char *systemDirectory;
   4.112 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
   4.113 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
   4.114 +                  RedirectToLoginPanel();
   4.115 +                } else {
   4.116 +                  strcpy(directory, DIRECTORY);
   4.117 +                  strcat(directory, login);
   4.118 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
   4.119 +                  strcat(systemDirectory, login);
   4.120 +
   4.121 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
   4.122 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
   4.123 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
   4.124 +                    RedirectToLoginPanel();
   4.125 +
   4.126 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
   4.127 +                  } else {
   4.128 +
   4.129 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
   4.130 +                    char *passwordFileName;
   4.131 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
   4.132 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
   4.133 +                      RedirectToLoginPanel();
   4.134 +                    } else {
   4.135 +                      strcpy(passwordFileName, systemDirectory);
   4.136 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
   4.137 +
   4.138 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
   4.139 +                      if (access(passwordFileName, F_OK)) {
   4.140 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
   4.141 +                        RedirectToLoginPanel();
   4.142 +
   4.143 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
   4.144 +                      } else {
   4.145 +
   4.146 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
   4.147 +                        FILE *passwordFile;
   4.148 +
   4.149 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
   4.150 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
   4.151 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
   4.152 +                          RedirectToLoginPanel();
   4.153 +
   4.154 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
   4.155 +                        } else {
   4.156 +                          char *filePassword;
   4.157 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
   4.158 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
   4.159 +                            RedirectToLoginPanel();
   4.160 +                          } else {
   4.161 +                            char c;
   4.162 +                            i = 0;
   4.163 +
   4.164 +                            /* READ PASSWORD FROM PASSWORD FILE */
   4.165 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
   4.166 +                              filePassword[i] = c;
   4.167 +                              ++i;
   4.168 +                            }
   4.169 +                            filePassword[i] = '\0';
   4.170 +                            fclose(passwordFile);
   4.171 +
   4.172 +                            /* IF PASSWORD FAILS COMPARISON... */
   4.173 +                            if (strcmp(filePassword, password)) {
   4.174 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
   4.175 +                              RedirectToLoginPanel();
   4.176 +
   4.177 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
   4.178 +                            } else {
   4.179 +
   4.180 +                              /* LOAD SETTINGS VALUES FROM FILES */
   4.181 +
   4.182 +                              /* LOAD interos CONTENT COMPONENTS FROM FILES */
   4.183 +
   4.184 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
   4.185 +                              char *new, *open, *text_file, *status;
   4.186 +                              new = open = text_file = status = NULL;
   4.187 +
   4.188 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
   4.189 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
   4.190 +                                char *query;
   4.191 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
   4.192 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
   4.193 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
   4.194 +                                } else {
   4.195 +                                  free(variableName);
   4.196 +                                  strcpy(query, getenv("QUERY_STRING"));
   4.197 +                                  if (!(variableName = malloc(queryLength + 1))) {
   4.198 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
   4.199 +                                  } else {
   4.200 +                                    free(variableValue);
   4.201 +                                    if (!(variableValue = malloc(queryLength + 1))) {
   4.202 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
   4.203 +
   4.204 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
   4.205 +                                    } else {
   4.206 +
   4.207 +                                      /* PROCESS QUERY DATA */
   4.208 +                                      INT q = 0;
   4.209 +                                      i = 0;
   4.210 +                                      while ((q < queryLength) && (query[q] != '\0')) {
   4.211 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
   4.212 +                                          variableName[i] = query[q];
   4.213 +                                          ++q;
   4.214 +                                          ++i;
   4.215 +                                        }
   4.216 +                                        variableName[i] = '\0';
   4.217 +                                        ++q;
   4.218 +                                        i = 0;
   4.219 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
   4.220 +                                          variableValue[i] = query[q];
   4.221 +                                          ++q;
   4.222 +                                          ++i;
   4.223 +                                        }
   4.224 +                                        variableValue[i] = '\0';
   4.225 +                                        if (query[q] != '\0') {
   4.226 +                                          ++q;
   4.227 +                                        }
   4.228 +                                        if (!new && !strcmp(variableName, "new")) {
   4.229 +                                          if ((new = malloc(strlen(variableValue) + 1)) != 0) {
   4.230 +                                            strcpy(new, variableValue);
   4.231 +                                          }
   4.232 +                                        } else if (!open && !strcmp(variableName, "open")) {
   4.233 +                                          if ((open = malloc(strlen(variableValue) + 1)) != 0) {
   4.234 +                                            strcpy(open, variableValue);
   4.235 +                                          }
   4.236 +                                        } else if (!text_file && !strcmp(variableName, "text_file")) {
   4.237 +                                          if ((text_file = malloc(strlen(variableValue) + 1)) != 0) {
   4.238 +                                            strcpy(text_file, variableValue);
   4.239 +                                          }
   4.240 +                                        } else if (!status && !strcmp(variableName, "status")) {
   4.241 +                                          if ((status = malloc(strlen(variableValue) + 1)) != 0) {
   4.242 +                                            strcpy(status, variableValue);
   4.243 +                                          }
   4.244 +                                        }
   4.245 +                                      }
   4.246 +                                      free(variableValue);
   4.247 +                                      variableValue = NULL;
   4.248 +                                    }
   4.249 +                                    free(variableName);
   4.250 +                                    variableName = NULL;
   4.251 +                                  }
   4.252 +                                  free(query);
   4.253 +                                }
   4.254 +                              }
   4.255 +
   4.256 +                              /* OUTPUT XHTML FOR interos CONTENT */
   4.257 +                              if (new) {
   4.258 +                                OutputContent("new", new);
   4.259 +                              } else if (open) {
   4.260 +                                OutputContent("open", open);
   4.261 +                              } else if (text_file) {
   4.262 +                                OutputContent("text_file", text_file);
   4.263 +                              } else if (status) {
   4.264 +                                OutputContent("status", status);
   4.265 +                              } else {
   4.266 +                                OutputContent(NULL, NULL);
   4.267 +                              }
   4.268 +                              free(status);
   4.269 +                              free(text_file);
   4.270 +                              free(open);
   4.271 +                              free(new);
   4.272 +                            }
   4.273 +                            free(filePassword);
   4.274 +                          }
   4.275 +                        }
   4.276 +                      }
   4.277 +                      free(passwordFileName);
   4.278 +                    }
   4.279 +                  }
   4.280 +                  free(systemDirectory);
   4.281 +                }
   4.282 +                free(directory);
   4.283 +              }
   4.284 +              free(login);
   4.285 +            }
   4.286 +            free(password);
   4.287 +            free(variableValue);
   4.288 +          }
   4.289 +          free(variableName);
   4.290 +        }
   4.291 +        free(cookie);
   4.292 +      }
   4.293 +    }
   4.294 +  }
   4.295 +  return 0;
   4.296 +}
   4.297 +
   4.298 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
   4.299 +static void RedirectToLoginPanel(void) {
   4.300 +  printf("Location: login\r\n\r\n");
   4.301 +}
   4.302 +
   4.303 +/* FUNCTION | OUTPUT XHTML FOR interos CONTENT */
   4.304 +static void OutputContent(const char *variableName, char *variableValue) {
   4.305 +  printf("Content-Type: text/html\r\n\r\n");
   4.306 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
   4.307 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/content.css\"?>\n");
   4.308 +  printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n");
   4.309 +  printf("                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
   4.310 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
   4.311 +  printf("  <!--=================================================-->\n");
   4.312 +  printf("  <!--    interos Standard Document Header - Markup    -->\n");
   4.313 +  printf("  <!--=================================================-->\n");
   4.314 +  printf("  <!--    URIs:  https://interos.com/content           -->\n");
   4.315 +  printf("  <!--           https://www.interos.com/content       -->\n");
   4.316 +  printf("  <!--   Title:  interos content                       -->\n");
   4.317 +  printf("  <!--  Author:  Brent Angeline                        -->\n");
   4.318 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->\n");
   4.319 +  printf("  <!--=================================================-->\n");
   4.320 +  printf("  <head>\n");
   4.321 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
   4.322 +  printf("    <meta name=\"title\" content=\"interos content\" />\n");
   4.323 +  printf("    <meta name=\"description\" content=\"middle frame for interos content\" />\n");
   4.324 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
   4.325 +  printf("    <meta name=\"copyright\" \n");
   4.326 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
   4.327 +  printf("    <meta name=\"robots\" content=\"noindex,nofollow,noarchive\" />\n");
   4.328 +  printf("    <title>interos content</title>\n");
   4.329 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
   4.330 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
   4.331 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/content.css\" />\n");
   4.332 +  printf("    <script type=\"text/javascript\" src=\"/js/content.js\"></script>\n");
   4.333 +  printf("  </head>\n");
   4.334 +  printf("  <body>\n");
   4.335 +  printf("    <div id=\"content\">\n");
   4.336 +  if (variableName && variableValue) {
   4.337 +    if (!strcmp(variableName, "new")) {
   4.338 +      if (!strcmp(variableValue, "text_file")) {
   4.339 +        printf("      <applet code=\"text_editor\" \n");
   4.340 +        printf("              archive=\"/java/text_editor.jar,/java/interos_connect.jar\" \n");
   4.341 +        printf("              width=\"100%%\" \n");
   4.342 +        printf("              height=\"100%%\"></applet>\n");
   4.343 +      }
   4.344 +    } else if (!strcmp(variableName, "text_file")) {
   4.345 +        printf("      <applet code=\"text_editor\" \n");
   4.346 +        printf("              archive=\"/java/text_editor.jar,/java/interos_connect.jar\" \n");
   4.347 +        printf("              width=\"100%%\" \n");
   4.348 +        printf("              height=\"100%%\">\n");
   4.349 +        printf("        <param name=\"text_file\" value=\"%s\" />\n", variableValue);
   4.350 +        printf("      </applet>\n");
   4.351 +    }
   4.352 +  }
   4.353 +  printf("    </div>\n");
   4.354 +  printf("  </body>\n");
   4.355 +  printf("  <!--=====================================================================-->\n");
   4.356 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
   4.357 +  printf("  <!--=====================================================================-->\n");
   4.358 +  printf("  <!--                                                                     -->\n");
   4.359 +  printf("  <!--          All original textual and graphical site content:           -->\n");
   4.360 +  printf("  <!--                                                                     -->\n");
   4.361 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
   4.362 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
   4.363 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
   4.364 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
   4.365 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
   4.366 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
   4.367 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
   4.368 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
   4.369 +  printf("  <!--                                                                     -->\n");
   4.370 +  printf("  <!--=====================================================================-->\n");
   4.371 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
   4.372 +  printf("  <!--=====================================================================-->\n");
   4.373 +  printf("</html>");
   4.374 +}
   4.375 +
   4.376 +/***********************************************************************/
   4.377 +/*                  Copyright and Trademark Statement                  */
   4.378 +/***********************************************************************/
   4.379 +/*                                                                     */
   4.380 +/*          All original textual and graphical site content:           */
   4.381 +/*                                                                     */
   4.382 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   4.383 +/*  reserved.  Reproduction in whole or in part without written        */
   4.384 +/*  permission is prohibited.  interos and the interos logos are       */
   4.385 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   4.386 +/*  product, and service names mentioned herein may be the properties  */
   4.387 +/*  of their respective owners.  Comments in the interos.org forums    */
   4.388 +/*  are the properties of their respective authors.  All software      */
   4.389 +/*  developed in the forums is open source and belongs to everyone.    */
   4.390 +/*                                                                     */
   4.391 +/***********************************************************************/
   4.392 +/*                      e-mail: info@interos.com                       */
   4.393 +/***********************************************************************/
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/c/interos.c	Sat May 01 16:19:36 2010 -0400
     5.3 @@ -0,0 +1,1 @@
     5.4 +interos_interos.com_ssl.c
     5.5 \ No newline at end of file
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/c/interos.h	Sat May 01 16:19:36 2010 -0400
     6.3 @@ -0,0 +1,1 @@
     6.4 +interos_interos.com_ssl.h
     6.5 \ No newline at end of file
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/c/interos.org.h	Sat May 01 16:19:36 2010 -0400
     7.3 @@ -0,0 +1,1 @@
     7.4 +interos.org_interos.org_ssl.h
     7.5 \ No newline at end of file
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/c/interos_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
     8.3 @@ -0,0 +1,229 @@
     8.4 +#include "fcgi_stdio.h"
     8.5 +#include "interos.h"
     8.6 +#include <stdlib.h>
     8.7 +#include <string.h>
     8.8 +#include <dirent.h>
     8.9 +#include <langinfo.h>
    8.10 +#include <sys/stat.h>
    8.11 +#include <unistd.h>
    8.12 +
    8.13 +/*  */
    8.14 +void outputErrorXML(const char *errorMessage) {
    8.15 +  printf("Content-Type: text/xml\r\n\r\n");
    8.16 +  printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
    8.17 +  printf("<directory>\n");
    8.18 +  printf("  <errorCode error=\"true\">\n");
    8.19 +  printf("    <description>%s</description>\n", errorMessage);
    8.20 +  printf("  </errorCode>\n");
    8.21 +  printf("</directory>");
    8.22 +}
    8.23 +
    8.24 +POSTDATA *getPostData(){
    8.25 +    POSTDATA* postdata = (POSTDATA*)(malloc(sizeof(POSTDATA)));
    8.26 +	postdata->postData = NULL;
    8.27 +	postdata->length = 0;
    8.28 +	/* IF POST DATA DOESN'T EXIST OR IS TOO LONG... */
    8.29 +	if (!getenv("CONTENT_LENGTH") || (sizeof(STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10)) > sizeof(INT))) {
    8.30 +	/** ERROR | POST DATA DOES NOT EXIST OR IS TOO LONG > OUTPUT ERROR XML **/
    8.31 +	outputErrorXML("No post data was received by the web server.");
    8.32 +	free(postdata);
    8.33 +	postdata = NULL;
    8.34 +
    8.35 +	/* OTHERWISE, IF POST DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
    8.36 +	} else {
    8.37 +
    8.38 +		/* ATTEMPT TO ALLOCATE MEMORY FOR POST VARIABLES */
    8.39 +		void* post;
    8.40 +		INT postLength = STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10);
    8.41 +		if ((postLength < 1) || !(post = malloc(postLength + 1))) {
    8.42 +		  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR POST DATA! > OUTPUT ERROR XML **/
    8.43 +		  outputErrorXML("The length of the post data string received by the web server was indicated to be less than 1 byte.");
    8.44 +		  free(postdata);
    8.45 +		  postdata = NULL;
    8.46 +		} else {
    8.47 +			/* PROCESS POST DATA */
    8.48 +			fread(post, postLength, 1, stdin);
    8.49 +			postdata->postData = post;
    8.50 +			postdata->length = postLength;
    8.51 +		}
    8.52 +	}
    8.53 +	return postdata;
    8.54 +}
    8.55 +
    8.56 +char* validateCookie() {
    8.57 +	char *username = NULL;
    8.58 +
    8.59 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
    8.60 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
    8.61 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > OUTPUT ERROR XML **/
    8.62 +      outputErrorXML("No cookie data was received by the web server.");
    8.63 +
    8.64 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
    8.65 +    } else {
    8.66 +
    8.67 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
    8.68 +      char *cookie;
    8.69 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
    8.70 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
    8.71 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > OUTPUT ERROR XML **/
    8.72 +        outputErrorXML("The length of the cookie data string received by the web server was indicated to be less than 1 byte.");
    8.73 +      } else {
    8.74 +        char *variableName;
    8.75 +        if (!(variableName = malloc(cookieLength + 1))) {
    8.76 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > OUTPUT ERROR XML **/
    8.77 +          outputErrorXML("Sufficient memory could not be allocated on the server for cookie variable names.");
    8.78 +        } else {
    8.79 +          char *variableValue;
    8.80 +          if (!(variableValue = malloc(cookieLength + 1))) {
    8.81 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > OUTPUT ERROR XML **/
    8.82 +            outputErrorXML("Sufficient memory could not be allocated on the server for cookie variable values.");
    8.83 +
    8.84 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
    8.85 +          } else {
    8.86 +
    8.87 +            /* PROCESS COOKIE DATA */
    8.88 +            char *login, *password;
    8.89 +            INT i, c;
    8.90 +            login = password = NULL;
    8.91 +            c = 0;
    8.92 +            strcpy(cookie, getenv("HTTP_COOKIE"));
    8.93 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
    8.94 +              i = 0;
    8.95 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
    8.96 +                variableName[i] = cookie[c];
    8.97 +                ++c;
    8.98 +                ++i;
    8.99 +              }
   8.100 +              variableName[i] = '\0';
   8.101 +              ++c;
   8.102 +              i = 0;
   8.103 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
   8.104 +                variableValue[i] = cookie[c];
   8.105 +                ++c;
   8.106 +                ++i;
   8.107 +              }
   8.108 +              variableValue[i] = '\0';
   8.109 +              ++c;
   8.110 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
   8.111 +                ++c;
   8.112 +              }
   8.113 +              if (!login && !strcmp(variableName, "login")) {
   8.114 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
   8.115 +                  strcpy(login, variableValue);
   8.116 +                }
   8.117 +              } else if (!password && !strcmp(variableName, "password")) {
   8.118 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
   8.119 +                  strcpy(password, variableValue);
   8.120 +                }
   8.121 +              }
   8.122 +            }
   8.123 +
   8.124 +            /* IF LOGIN VALUE IS MISSING... */
   8.125 +            if (!login) {
   8.126 +              /** ERROR | LOGIN VALUE IS MISSING > OUTPUT ERROR XML */
   8.127 +              outputErrorXML("No login value was received.");
   8.128 +
   8.129 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
   8.130 +            } else {
   8.131 +
   8.132 +              /* VERIFY LOGIN AND PASSWORD */
   8.133 +              char *directory;
   8.134 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
   8.135 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > OUTPUT ERROR XML **/
   8.136 +                outputErrorXML("Sufficient memory could not be allocated on the server for the user's home directory name.");
   8.137 +              } else {
   8.138 +                char *systemDirectory;
   8.139 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
   8.140 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > OUTPUT ERROR XML **/
   8.141 +                  outputErrorXML("Sufficient memory could not be allocated on the server for the user's system directory name.");
   8.142 +                } else {
   8.143 +                  strcpy(directory, DIRECTORY);
   8.144 +                  strcat(directory, login);
   8.145 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
   8.146 +                  strcat(systemDirectory, login);
   8.147 +
   8.148 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
   8.149 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
   8.150 +                    /** ERROR | CANNOT ACCESS DIRECTORY > OUTPUT ERROR XML **/
   8.151 +                    outputErrorXML("The user's home directory on the server could not be accessed.");
   8.152 +
   8.153 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
   8.154 +                  } else {
   8.155 +
   8.156 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
   8.157 +                    char *passwordFileName;
   8.158 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
   8.159 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > OUTPUT ERROR XML **/
   8.160 +                      outputErrorXML("Sufficient memory could not be allocated on the server for the name of the user's password file.");
   8.161 +                    } else {
   8.162 +                      strcpy(passwordFileName, systemDirectory);
   8.163 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
   8.164 +
   8.165 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
   8.166 +                      if (access(passwordFileName, F_OK)) {
   8.167 +                        /** ERROR | CANNOT ACCESS FILE > OUTPUT ERROR XML **/
   8.168 +                        outputErrorXML("The user's password file on the server cannot be accessed.");
   8.169 +
   8.170 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
   8.171 +                      } else {
   8.172 +
   8.173 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
   8.174 +                        FILE *passwordFile;
   8.175 +
   8.176 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
   8.177 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
   8.178 +                          /** ERROR | CANNOT READ FILE > OUTPUT ERROR XML **/
   8.179 +                          outputErrorXML("The user's password file on the server cannot be opened for reading.");
   8.180 +
   8.181 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
   8.182 +                        } else {
   8.183 +                          char *filePassword;
   8.184 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
   8.185 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > OUTPUT ERROR XML **/
   8.186 +                            outputErrorXML("Sufficient memory could not be allocated on the server for reading the user's password.");
   8.187 +                          } else {
   8.188 +                            char c;
   8.189 +                            i = 0;
   8.190 +
   8.191 +                            /* READ PASSWORD FROM PASSWORD FILE */
   8.192 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
   8.193 +                              filePassword[i] = c;
   8.194 +                              ++i;
   8.195 +                            }
   8.196 +                            filePassword[i] = '\0';
   8.197 +                            fclose(passwordFile);
   8.198 +
   8.199 +                            /* IF PASSWORD FAILS COMPARISON... */
   8.200 +                            if (strcmp(filePassword, password)) {
   8.201 +                              /** ERROR | PASSWORD FAILED > OUTPUT ERROR XML **/
   8.202 +                              outputErrorXML("The password provided failed comparison with the password stored on the server.");
   8.203 +
   8.204 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
   8.205 +                            } else {
   8.206 +								username = login;
   8.207 +                            }
   8.208 +                            free(filePassword);
   8.209 +                          }
   8.210 +                        }
   8.211 +                      }
   8.212 +                      free(passwordFileName);
   8.213 +                    }
   8.214 +                  }
   8.215 +                  free(systemDirectory);
   8.216 +                }
   8.217 +                free(directory);
   8.218 +              }
   8.219 +			  if(!username && login)
   8.220 +				free(login);
   8.221 +
   8.222 +            }
   8.223 +            free(password);
   8.224 +            free(variableValue);
   8.225 +          }
   8.226 +          free(variableName);
   8.227 +        }
   8.228 +        free(cookie);
   8.229 +      }
   8.230 +    }
   8.231 +  return username;
   8.232 +}
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/c/interos_interos.com_ssl.h	Sat May 01 16:19:36 2010 -0400
     9.3 @@ -0,0 +1,117 @@
     9.4 +/*************************************************************/
     9.5 +/*  interos Standard Document Header - CGI in C Header File  */
     9.6 +/*************************************************************/
     9.7 +/*              Source:  interos.h                           */
     9.8 +/*         Description:  FastCGI Header for interos          */
     9.9 +/*              Author:  Brent Angeline                      */
    9.10 +/*                 CGI:  FastCGI in ISO/ANSI C               */
    9.11 +/*************************************************************/
    9.12 +
    9.13 +/* PREPROCESSOR DIRECTIVES */
    9.14 +# ifndef INTEROS_H
    9.15 +
    9.16 +#   define INTEROS_H
    9.17 +
    9.18 +  /* HEADER FILES INCLUDED BY C SOURCE */
    9.19 +#   ifndef INTEROS_H
    9.20 +
    9.21 +#     include "fcgi_stdio.h"            /*  FCGI_Accept(), fclose(), fgetc(), fopen(), fread(), printf()  */
    9.22 +#     include <ctype.h>                 /*  tolower()                                                     */
    9.23 +#     include <stdlib.h>                /*  free(), getenv(), malloc(), strtoul()                         */
    9.24 +#     include <string.h>                /*  strcat(), strcmp(), strcpy(), strlen()                        */
    9.25 +#     include <unistd.h>                /*  F_OK, access()                                                */
    9.26 +
    9.27 +#   endif
    9.28 +
    9.29 +  /* DEFINITION DIRECTIVES */
    9.30 +#   define INT                          unsigned long
    9.31 +#   define STRING_TO_INT                strtoul
    9.32 +#   define DIRECTORY                    "/srv/https/interos.com/"
    9.33 +#   define SYSTEM_DIRECTORY             "/srv/data/interos/"
    9.34 +#   define PASSWORD_FILE_NAME           "/.htpasswd"
    9.35 +#   define MAX_PASSWORD_SIZE            16
    9.36 +
    9.37 +  /* NEW USER DEFINITION DIRECTIVES */
    9.38 +#   define SYSTEM_DIRECTORY_COMMAND     "cp -pRP /srv/data/interos/sys/data /srv/data/interos/"
    9.39 +#   define DIRECTORY_COMMAND            "cp -pRP /srv/data/interos/sys/user /srv/https/interos.com/"
    9.40 +#   define ECHO_COMMAND                 "echo "
    9.41 +#   define PASSWORD_OUT                 " > /srv/data/interos/"
    9.42 +
    9.43 +  /* TYPE DEFINITION */
    9.44 +  typedef struct {
    9.45 +    char *name;
    9.46 +    char *link;
    9.47 +    char *icon;
    9.48 +    struct MENU_ITEM *next;
    9.49 +  } MENU_ITEM;
    9.50 +
    9.51 +  /**
    9.52 +    Used by getPOSTData for storage of the POST data.
    9.53 +
    9.54 +
    9.55 +    length: The number of bytes allocated for postData.
    9.56 +
    9.57 +    postData: Allocated chunk of memory containing the POST data. The interpretation of that data
    9.58 +              depends on what the CGI program getting the data is expecting.
    9.59 +  */
    9.60 +  typedef struct{
    9.61 +      void *postData;
    9.62 +      INT length;
    9.63 +  }POSTDATA;
    9.64 +
    9.65 +  /**
    9.66 +    Obtains the POST data that was sent by the client connecting to the HTTP(S) server and stores it
    9.67 +    in POSTDATA struct. The POSTDATA->postData is a chunk of memory copied from the client. If the data
    9.68 +    is to be interpreted as a string, one should not expect it to be null terminated, which is why length
    9.69 +    is part of the POSTDATA struct.
    9.70 +
    9.71 +    One more byte of memory is allocated for POSTDATA->postData for conveniance. In the event that the
    9.72 +    POST data is interpreted as a string, one may set POSTDATA->postData[POSTDATA->length] = '\0' without
    9.73 +    having to use realloc.
    9.74 +
    9.75 +    @return An allocated struct POSTDATA with allocated postData of size length+1. If there is no POST data,
    9.76 +            it will return an allocated struct POSTDATA with length 0 and postData NULL. If there was an error
    9.77 +            getting the post data, it will call outputErrorXML() with the apropriate error and return NULL.
    9.78 +  */
    9.79 +  POSTDATA *getPOSTData();
    9.80 +
    9.81 +  /**
    9.82 +    Obtains cookie data from the HTTP header and validates it with the appropriate login.
    9.83 +    If the cookie data has the correct username and password, the function will return
    9.84 +    the username. If validation fails, it will automatically call outputErrorXML with
    9.85 +    the appropriate error information and return NULL.
    9.86 +
    9.87 +    @return An allocated string containing the username from the cookie data, or NULL
    9.88 +            if validation failed.
    9.89 +
    9.90 +  */
    9.91 +  char *validateCookie();
    9.92 +
    9.93 +  /**
    9.94 +    Prints an error XML.
    9.95 +
    9.96 +    @param errorMessage A string that contains the description of the error.
    9.97 +  */
    9.98 +  void outputErrorXML(const char *errorMessage);
    9.99 +
   9.100 +
   9.101 +# endif
   9.102 +
   9.103 +/***********************************************************************/
   9.104 +/*                  Copyright and Trademark Statement                  */
   9.105 +/***********************************************************************/
   9.106 +/*                                                                     */
   9.107 +/*          All original textual and graphical site content:           */
   9.108 +/*                                                                     */
   9.109 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   9.110 +/*  reserved.  Reproduction in whole or in part without written        */
   9.111 +/*  permission is prohibited.  interos and the interos logos are       */
   9.112 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   9.113 +/*  product, and service names mentioned herein may be the properties  */
   9.114 +/*  of their respective owners.  Comments in the interos.org forums    */
   9.115 +/*  are the properties of their respective authors.  All software      */
   9.116 +/*  developed in the forums is open source and belongs to everyone.    */
   9.117 +/*                                                                     */
   9.118 +/***********************************************************************/
   9.119 +/*                      e-mail: info@interos.com                       */
   9.120 +/***********************************************************************/
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/c/login_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    10.3 @@ -0,0 +1,359 @@
    10.4 +/*************************************************/
    10.5 +/*  interos Standard Document Header - CGI in C  */
    10.6 +/*************************************************/
    10.7 +/*         URIs:  https://interos.com/login      */
    10.8 +/*                https://www.interos.com/login  */
    10.9 +/*       Source:  login.c                        */
   10.10 +/*  Description:  FastCGI for interos login      */
   10.11 +/*       Author:  Brent Angeline                 */
   10.12 +/*          CGI:  FastCGI in ISO/ANSI C          */
   10.13 +/*************************************************/
   10.14 +
   10.15 +/* PREPROCESSOR DIRECTIVES */
   10.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), fread(), printf()                            */
   10.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, STRING_TO_INT, SYSTEM_DIRECTORY  */
   10.18 +#include <ctype.h>          /*  tolower()                                                                               */
   10.19 +#include <stdlib.h>         /*  free(), getenv(), malloc(), strtoul()                                                   */
   10.20 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                                  */
   10.21 +#include <unistd.h>         /*  F_OK, access()                                                                          */
   10.22 +
   10.23 +/* FUNCTION PROTOTYPE DECLARATION */
   10.24 +static void OutputLoginPanel(void);
   10.25 +
   10.26 +/* BEGIN MAIN PROGRAM */
   10.27 +int main(void) {
   10.28 +
   10.29 +  /* BEGIN FASTCGI */
   10.30 +  while (FCGI_Accept() >= 0) {
   10.31 +
   10.32 +    /* IF POST DATA DOESN'T EXIST OR IS TOO LONG... */
   10.33 +    if (!getenv("CONTENT_LENGTH") || (sizeof(STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10)) > sizeof(INT))) {
   10.34 +
   10.35 +      /* OUTPUT XHTML FOR LOGIN PANEL */
   10.36 +      OutputLoginPanel();
   10.37 +
   10.38 +    /* OTHERWISE, IF POST DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   10.39 +    } else {
   10.40 +
   10.41 +      /* ATTEMPT TO ALLOCATE MEMORY FOR POST VARIABLES */
   10.42 +      char *post;
   10.43 +      INT postLength = STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10);
   10.44 +      if ((postLength < 1) || !(post = malloc(postLength + 1))) {
   10.45 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR POST DATA! > OUTPUT XHTML FOR LOGIN PANEL **/
   10.46 +        OutputLoginPanel();
   10.47 +      } else {
   10.48 +        char *variableName;
   10.49 +        if (!(variableName = malloc(postLength + 1))) {
   10.50 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR POST VARIABLE NAME > OUTPUT XHTML FOR LOGIN PANEL **/
   10.51 +          OutputLoginPanel();
   10.52 +        } else {
   10.53 +          char *variableValue;
   10.54 +          if (!(variableValue = malloc(postLength + 1))) {
   10.55 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR POST VARIABLE VALUE > OUTPUT XHTML FOR LOGIN PANEL **/
   10.56 +            OutputLoginPanel();
   10.57 +
   10.58 +          /* IF SUFFICIENT MEMORY FOR POST VARIABLES... */
   10.59 +          } else {
   10.60 +
   10.61 +            /* PROCESS POST DATA */
   10.62 +            char *login, *password;
   10.63 +            INT p, i;
   10.64 +            login = password = NULL;
   10.65 +            p = 0;
   10.66 +            fread(post, postLength, 1, stdin);
   10.67 +            post[postLength] = '\0';
   10.68 +            while ((p < postLength) && (post[p] != '\0')) {
   10.69 +              i = 0;
   10.70 +              while ((p < postLength) && (post[p] != '=') && (post[p] != '\0')) {
   10.71 +                variableName[i] = post[p];
   10.72 +                ++p;
   10.73 +                ++i;
   10.74 +              }
   10.75 +              variableName[i] = '\0';
   10.76 +              ++p;
   10.77 +              i = 0;
   10.78 +              while ((p < postLength) && (post[p] != '&') && (post[p] != '\0')) {
   10.79 +                variableValue[i] = post[p];
   10.80 +                ++p;
   10.81 +                ++i;
   10.82 +              }
   10.83 +              variableValue[i] = '\0';
   10.84 +              if (post[p] != '\0') {
   10.85 +                ++p;
   10.86 +              }
   10.87 +              if (!login && !strcmp(variableName, "login")) {
   10.88 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
   10.89 +                  strcpy(login, variableValue);
   10.90 +                  for (i = 0; i < strlen(login); ++i) {
   10.91 +                    login[i] = tolower(login[i]);
   10.92 +                  }
   10.93 +                }
   10.94 +              } else if (!password && !strcmp(variableName, "password")) {
   10.95 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
   10.96 +                  strcpy(password, variableValue);
   10.97 +                }
   10.98 +              }
   10.99 +            }
  10.100 +
  10.101 +            /* IF LOGIN VALUE IS MISSING... */
  10.102 +            if (!login) {
  10.103 +              /** ERROR | LOGIN VALUE IS MISSING > OUTPUT XHTML FOR LOGIN PANEL **/
  10.104 +              OutputLoginPanel();
  10.105 +
  10.106 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
  10.107 +            } else {
  10.108 +
  10.109 +              /* VERIFY LOGIN AND PASSWORD */
  10.110 +              char *directory;
  10.111 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
  10.112 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > OUTPUT XHTML FOR LOGIN PANEL **/
  10.113 +                OutputLoginPanel();
  10.114 +              } else {
  10.115 +                char *systemDirectory;
  10.116 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
  10.117 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > OUTPUT XHTML FOR LOGIN PANEL **/
  10.118 +                  OutputLoginPanel();
  10.119 +                } else {
  10.120 +                  strcpy(directory, DIRECTORY);
  10.121 +                  strcat(directory, login);
  10.122 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
  10.123 +                  strcat(systemDirectory, login);
  10.124 +
  10.125 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
  10.126 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
  10.127 +                    /** ERROR | CANNOT ACCESS DIRECTORY > OUTPUT XHTML FOR LOGIN PANEL **/
  10.128 +                    OutputLoginPanel();
  10.129 +
  10.130 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
  10.131 +                  } else {
  10.132 +
  10.133 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
  10.134 +                    char *passwordFileName;
  10.135 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
  10.136 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > OUTPUT XHTML FOR LOGIN PANEL **/
  10.137 +                      OutputLoginPanel();
  10.138 +                    } else {
  10.139 +                      strcpy(passwordFileName, systemDirectory);
  10.140 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
  10.141 +
  10.142 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
  10.143 +                      if (access(passwordFileName, F_OK)) {
  10.144 +                        /** ERROR | CANNOT ACCESS FILE > OUTPUT XHTML FOR LOGIN PANEL **/
  10.145 +                        OutputLoginPanel();
  10.146 +
  10.147 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
  10.148 +                      } else {
  10.149 +
  10.150 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
  10.151 +                        FILE *passwordFile;
  10.152 +
  10.153 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
  10.154 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
  10.155 +                          /** ERROR | CANNOT READ FILE > OUTPUT XHTML FOR LOGIN PANEL **/
  10.156 +                          OutputLoginPanel();
  10.157 +
  10.158 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
  10.159 +                        } else {
  10.160 +                          char *filePassword;
  10.161 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
  10.162 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > OUTPUT XHTML FOR LOGIN PANEL **/
  10.163 +                            OutputLoginPanel();
  10.164 +                          } else {
  10.165 +                            char c;
  10.166 +                            i = 0;
  10.167 +
  10.168 +                            /* READ PASSWORD FROM PASSWORD FILE */
  10.169 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
  10.170 +                              filePassword[i] = c;
  10.171 +                              ++i;
  10.172 +                            }
  10.173 +                            filePassword[i] = '\0';
  10.174 +                            fclose(passwordFile);
  10.175 +
  10.176 +                            /* IF NO PASSWORD FROM POST VARIABLES... */
  10.177 +                            if (!password) {
  10.178 +                              password = malloc(1);
  10.179 +                              password[0] = '\0';
  10.180 +                            }
  10.181 +
  10.182 +                            /* IF PASSWORD FAILS COMPARISON... */
  10.183 +                            if (strcmp(filePassword, password)) {
  10.184 +                              /** ERROR | PASSWORD FAILED > OUTPUT XHTML FOR LOGIN PANEL **/
  10.185 +                              OutputLoginPanel();
  10.186 +
  10.187 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
  10.188 +                            } else {
  10.189 +
  10.190 +                              /* SET COOKIES */
  10.191 +                              printf("Set-Cookie: login=%s; path=/; secure\r\n", login);
  10.192 +                              printf("Set-Cookie: password=%s; path=/; secure\r\n", password);
  10.193 +
  10.194 +                              /* REDIRECT LOGGED INTO interos */
  10.195 +                              printf("Location: welcome\r\n\r\n");
  10.196 +                            }
  10.197 +                            free(filePassword);
  10.198 +                          }
  10.199 +                        }
  10.200 +                      }
  10.201 +                      free(passwordFileName);
  10.202 +                    }
  10.203 +                  }
  10.204 +                  free(systemDirectory);
  10.205 +                }
  10.206 +                free(directory);
  10.207 +              }
  10.208 +              free(login);
  10.209 +            }
  10.210 +            free(password);
  10.211 +            free(variableValue);
  10.212 +          }
  10.213 +          free(variableName);
  10.214 +        }
  10.215 +        free(post);
  10.216 +      }
  10.217 +    }
  10.218 +  }
  10.219 +  return 0;
  10.220 +}
  10.221 +
  10.222 +/* FUNCTION | OUTPUT XHTML FOR LOGIN PANEL */
  10.223 +static void OutputLoginPanel(void) {
  10.224 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
  10.225 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
  10.226 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/login.css\"?>\n");
  10.227 +  printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n");
  10.228 +  printf("                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
  10.229 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
  10.230 +  printf("  <!--=================================================-->\n");
  10.231 +  printf("  <!--    interos Standard Document Header - Markup    -->\n");
  10.232 +  printf("  <!--=================================================-->\n");
  10.233 +  printf("  <!--    URIs:  https://interos.com/login             -->\n");
  10.234 +  printf("  <!--           https://www.interos.com/login         -->\n");
  10.235 +  printf("  <!--   Title:  interos login                         -->\n");
  10.236 +  printf("  <!--  Author:  Brent Angeline                        -->\n");
  10.237 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->\n");
  10.238 +  printf("  <!--=================================================-->\n");
  10.239 +  printf("  <head>\n");
  10.240 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  10.241 +  printf("    <meta name=\"title\" content=\"interos login\" />\n");
  10.242 +  printf("    <meta name=\"description\" content=\"enter into interos\" />\n");
  10.243 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  10.244 +  printf("    <meta name=\"copyright\" \n");
  10.245 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  10.246 +  printf("    <meta name=\"robots\" content=\"index, nofollow, noarchive\" />\n");
  10.247 +  printf("    <title>interos login</title>\n");
  10.248 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  10.249 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  10.250 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/login.css\" \n");
  10.251 +  printf("          media=\"screen, projection\" />\n");
  10.252 +  printf("    <script type=\"text/javascript\" src=\"/js/login.js\"></script>\n");
  10.253 +  printf("  </head>\n");
  10.254 +  printf("  <body id=\"body\">\n");
  10.255 +  printf("    <center>\n");
  10.256 +  printf("      <p id=\"navigation\">\n");
  10.257 +  printf("        <a href=\"/about\">about</a> | \n");
  10.258 +  printf("        <a href=\"/blog\">blog</a> | \n");
  10.259 +  printf("        <a href=\"/code\">code</a> | \n");
  10.260 +  printf("        <a href=\"https://interos.org/\">develop</a> | \n");
  10.261 +  printf("        <a href=\"/e-mail\">e-mail</a> | \n");
  10.262 +  printf("        <a href=\"/f.a.q.\">f.a.q.</a> | \n");
  10.263 +  printf("        <a href=\"/gear\">gear</a> | \n");
  10.264 +  printf("        <a href=\"/help\">help</a>\n");
  10.265 +  printf("      </p>\n");
  10.266 +  printf("      <form id=\"loginForm\" name=\"loginForm\" action=\"/login\" method=\"post\">\n");
  10.267 +  printf("        <table id=\"mainPanel\">\n");
  10.268 +  printf("          <thead>\n");
  10.269 +  printf("            <tr>\n");
  10.270 +  printf("              <th colspan=\"3\"><center>\n");
  10.271 +  printf("                                <div id=\"title\">\n");
  10.272 +  printf("                                  <h1>\n");
  10.273 +  printf("                                    <a href=\"/\">interos</a>\n");
  10.274 +  printf("                                  </h1>\n");
  10.275 +  printf("                                </div>\n");
  10.276 +  printf("                                <h2>\n");
  10.277 +  printf("                                  internet operating system\n");
  10.278 +  printf("                                </h2>\n");
  10.279 +  printf("                              </center></th>\n");
  10.280 +  printf("            </tr>\n");
  10.281 +  printf("          </thead>\n");
  10.282 +  printf("          <tfoot>\n");
  10.283 +  printf("            <tr>\n");
  10.284 +  printf("              <td colspan=\"3\"><br /></td>\n");
  10.285 +  printf("            </tr>\n");
  10.286 +  printf("          </tfoot>\n");
  10.287 +  printf("          <tbody>\n");
  10.288 +  printf("            <tr>\n");
  10.289 +  printf("              <td><label for=\"login\">login:</label>&nbsp;</td>\n");
  10.290 +  printf("              <td><input id=\"login\" name=\"login\" \n");
  10.291 +/*
  10.292 +  printf("                         value=\"guest\" readonly=\"readonly\" \n");
  10.293 +*/
  10.294 +  printf("                         value=\"guest\" \n");
  10.295 +  printf("                         size=\"16\" maxlength=\"16\" \n");
  10.296 +  printf("                         type=\"text\" /></td>\n");
  10.297 +  printf("            </tr>\n");
  10.298 +  printf("            <tr>\n");
  10.299 +  printf("              <td><label for=\"password\">password:</label>&nbsp;</td>\n");
  10.300 +  printf("              <td><input id=\"password\" name=\"password\" \n");
  10.301 +  printf("                         disabled=\"disabled\" \n");
  10.302 +  printf("                         size=\"16\" maxlength=\"16\" \n");
  10.303 +  printf("                         type=\"password\" /></td>\n");
  10.304 +  printf("              <td rowspan=\"2\"><div id=\"submitButton\">\n");
  10.305 +  printf("                                &nbsp;<input type=\"submit\" \n");
  10.306 +  printf("                                             value=\"login &raquo;\" />\n");
  10.307 +  printf("                              </div></td>\n");
  10.308 +  printf("            </tr>\n");
  10.309 +  printf("          </tbody>\n");
  10.310 +  printf("        </table>\n");
  10.311 +  printf("      </form>\n");
  10.312 +  printf("      <p id=\"newUser\">\n");
  10.313 +  printf("        <a href=\"/new_user\"><strong>new users click here</strong><br />\n");
  10.314 +  printf("        to create your login</a>\n");
  10.315 +  printf("      </p>\n");
  10.316 +  printf("      <p>\n");
  10.317 +  printf("        <br />\n");
  10.318 +  printf("      </p>\n");
  10.319 +  printf("      <p id=\"copyrightDates\">\n");
  10.320 +  printf("        &copy; 2001&#8211;2010 interos\n");
  10.321 +  printf("      </p>\n");
  10.322 +  printf("    </center>\n");
  10.323 +  printf("  </body>\n");
  10.324 +  printf("  <!--=====================================================================-->\n");
  10.325 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
  10.326 +  printf("  <!--=====================================================================-->\n");
  10.327 +  printf("  <!--                                                                     -->\n");
  10.328 +  printf("  <!--          All original textual and graphical site content:           -->\n");
  10.329 +  printf("  <!--                                                                     -->\n");
  10.330 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
  10.331 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
  10.332 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
  10.333 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
  10.334 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
  10.335 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
  10.336 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
  10.337 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
  10.338 +  printf("  <!--                                                                     -->\n");
  10.339 +  printf("  <!--=====================================================================-->\n");
  10.340 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
  10.341 +  printf("  <!--=====================================================================-->\n");
  10.342 +  printf("</html>");
  10.343 +}
  10.344 +
  10.345 +/***********************************************************************/
  10.346 +/*                  Copyright and Trademark Statement                  */
  10.347 +/***********************************************************************/
  10.348 +/*                                                                     */
  10.349 +/*          All original textual and graphical site content:           */
  10.350 +/*                                                                     */
  10.351 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
  10.352 +/*  reserved.  Reproduction in whole or in part without written        */
  10.353 +/*  permission is prohibited.  interos and the interos logos are       */
  10.354 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  10.355 +/*  product, and service names mentioned herein may be the properties  */
  10.356 +/*  of their respective owners.  Comments in the interos.org forums    */
  10.357 +/*  are the properties of their respective authors.  All software      */
  10.358 +/*  developed in the forums is open source and belongs to everyone.    */
  10.359 +/*                                                                     */
  10.360 +/***********************************************************************/
  10.361 +/*                      e-mail: info@interos.com                       */
  10.362 +/***********************************************************************/
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/c/logout_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    11.3 @@ -0,0 +1,48 @@
    11.4 +/**************************************************/
    11.5 +/*  interos Standard Document Header - CGI in C   */
    11.6 +/**************************************************/
    11.7 +/*         URIs:  https://interos.com/logout      */
    11.8 +/*                https://www.interos.com/logout  */
    11.9 +/*       Source:  logout.c                        */
   11.10 +/*  Description:  FastCGI for interos logout      */
   11.11 +/*       Author:  Brent Angeline                  */
   11.12 +/*          CGI:  FastCGI in ISO/ANSI C           */
   11.13 +/**************************************************/
   11.14 +
   11.15 +/* PREPROCESSOR DIRECTIVE */
   11.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), printf()  */
   11.17 +
   11.18 +/* BEGIN MAIN PROGRAM */
   11.19 +int main(void) {
   11.20 +
   11.21 +  /* BEGIN FASTCGI */
   11.22 +  while (FCGI_Accept() >= 0) {
   11.23 +
   11.24 +    /* SET COOKIES */
   11.25 +    printf("Set-Cookie: login=; path=/; secure\r\n");
   11.26 +    printf("Set-Cookie: password=; path=/; secure\r\n");
   11.27 +
   11.28 +    /* REDIRECT TO LOGIN PANEL */
   11.29 +    printf("Location: login\r\n\r\n");
   11.30 +  }
   11.31 +  return 0;
   11.32 +}
   11.33 +
   11.34 +/***********************************************************************/
   11.35 +/*                  Copyright and Trademark Statement                  */
   11.36 +/***********************************************************************/
   11.37 +/*                                                                     */
   11.38 +/*          All original textual and graphical site content:           */
   11.39 +/*                                                                     */
   11.40 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   11.41 +/*  reserved.  Reproduction in whole or in part without written        */
   11.42 +/*  permission is prohibited.  interos and the interos logos are       */
   11.43 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   11.44 +/*  product, and service names mentioned herein may be the properties  */
   11.45 +/*  of their respective owners.  Comments in the interos.org forums    */
   11.46 +/*  are the properties of their respective authors.  All software      */
   11.47 +/*  developed in the forums is open source and belongs to everyone.    */
   11.48 +/*                                                                     */
   11.49 +/***********************************************************************/
   11.50 +/*                      e-mail: info@interos.com                       */
   11.51 +/***********************************************************************/
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/c/main_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    12.3 @@ -0,0 +1,724 @@
    12.4 +/*************************************************/
    12.5 +/*  interos Standard Document Header - CGI in C  */
    12.6 +/*************************************************/
    12.7 +/*         URIs:  https://interos.com/           */
    12.8 +/*                https://interos.com/main       */
    12.9 +/*                https://www.interos.com/       */
   12.10 +/*                https://www.interos.com/main   */
   12.11 +/*       Source:  main.c                         */
   12.12 +/*  Description:  FastCGI for interos main       */
   12.13 +/*       Author:  Brent Angeline                 */
   12.14 +/*          CGI:  FastCGI in ISO/ANSI C          */
   12.15 +/*************************************************/
   12.16 +
   12.17 +/* PREPROCESSOR DIRECTIVES */
   12.18 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                                 */
   12.19 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, MENU_ITEM, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   12.20 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                                          */
   12.21 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                              */
   12.22 +#include <unistd.h>         /*  F_OK, access()                                                                      */
   12.23 +
   12.24 +#ifndef INTEROS_H
   12.25 +
   12.26 +  /* TYPE DEFINITION */
   12.27 +  typedef struct {
   12.28 +    char *name;
   12.29 +    char *link;
   12.30 +    char *icon;
   12.31 +    struct MENU_ITEM *next;
   12.32 +  } MENU_ITEM;
   12.33 +
   12.34 +#endif
   12.35 +
   12.36 +/* FUNCTION PROTOTYPE DECLARATIONS */
   12.37 +static void RedirectToLoginPanel(void);
   12.38 +static void OutputGUI(const char *variableName, char *variableValue);
   12.39 +static void OutputNewMenu(void);
   12.40 +static void OutputOpenMenu(char *open);
   12.41 +static void OutputNextMenu(char *next);
   12.42 +static void OutputSettingsMenu(char *settings);
   12.43 +static void BeginXHTMLOutput(void);
   12.44 +static void FinishXHTMLOutput(void);
   12.45 +
   12.46 +/* BEGIN MAIN PROGRAM */
   12.47 +int main(void) {
   12.48 +
   12.49 +  /* BEGIN FASTCGI */
   12.50 +  while (FCGI_Accept() >= 0) {
   12.51 +
   12.52 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
   12.53 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
   12.54 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
   12.55 +      RedirectToLoginPanel();
   12.56 +
   12.57 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   12.58 +    } else {
   12.59 +
   12.60 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
   12.61 +      char *cookie;
   12.62 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
   12.63 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
   12.64 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
   12.65 +        RedirectToLoginPanel();
   12.66 +      } else {
   12.67 +        char *variableName;
   12.68 +        if (!(variableName = malloc(cookieLength + 1))) {
   12.69 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
   12.70 +          RedirectToLoginPanel();
   12.71 +        } else {
   12.72 +          char *variableValue;
   12.73 +          if (!(variableValue = malloc(cookieLength + 1))) {
   12.74 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
   12.75 +            RedirectToLoginPanel();
   12.76 +
   12.77 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
   12.78 +          } else {
   12.79 +
   12.80 +            /* PROCESS COOKIE DATA */
   12.81 +            char *login, *password;
   12.82 +            INT c, i;
   12.83 +            login = password = NULL;
   12.84 +            c = 0;
   12.85 +            strcpy(cookie, getenv("HTTP_COOKIE"));
   12.86 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
   12.87 +              i = 0;
   12.88 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
   12.89 +                variableName[i] = cookie[c];
   12.90 +                ++c;
   12.91 +                ++i;
   12.92 +              }
   12.93 +              variableName[i] = '\0';
   12.94 +              ++c;
   12.95 +              i = 0;
   12.96 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
   12.97 +                variableValue[i] = cookie[c];
   12.98 +                ++c;
   12.99 +                ++i;
  12.100 +              }
  12.101 +              variableValue[i] = '\0';
  12.102 +              ++c;
  12.103 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
  12.104 +                ++c;
  12.105 +              }
  12.106 +              if (!login && !strcmp(variableName, "login")) {
  12.107 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
  12.108 +                  strcpy(login, variableValue);
  12.109 +                }
  12.110 +              } else if (!password && !strcmp(variableName, "password")) {
  12.111 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
  12.112 +                  strcpy(password, variableValue);
  12.113 +                }
  12.114 +              }
  12.115 +            }
  12.116 +
  12.117 +            /* IF LOGIN VALUE IS MISSING... */
  12.118 +            if (!login) {
  12.119 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
  12.120 +              RedirectToLoginPanel();
  12.121 +
  12.122 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
  12.123 +            } else {
  12.124 +
  12.125 +              /* VERIFY LOGIN AND PASSWORD */
  12.126 +              char *directory;
  12.127 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
  12.128 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
  12.129 +                RedirectToLoginPanel();
  12.130 +              } else {
  12.131 +                char *systemDirectory;
  12.132 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
  12.133 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
  12.134 +                  RedirectToLoginPanel();
  12.135 +                } else {
  12.136 +                  strcpy(directory, DIRECTORY);
  12.137 +                  strcat(directory, login);
  12.138 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
  12.139 +                  strcat(systemDirectory, login);
  12.140 +
  12.141 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
  12.142 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
  12.143 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
  12.144 +                    RedirectToLoginPanel();
  12.145 +
  12.146 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
  12.147 +                  } else {
  12.148 +
  12.149 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
  12.150 +                    char *passwordFileName;
  12.151 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
  12.152 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
  12.153 +                      RedirectToLoginPanel();
  12.154 +                    } else {
  12.155 +                      strcpy(passwordFileName, systemDirectory);
  12.156 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
  12.157 +
  12.158 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
  12.159 +                      if (access(passwordFileName, F_OK)) {
  12.160 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
  12.161 +                        RedirectToLoginPanel();
  12.162 +
  12.163 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
  12.164 +                      } else {
  12.165 +
  12.166 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
  12.167 +                        FILE *passwordFile;
  12.168 +
  12.169 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
  12.170 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
  12.171 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
  12.172 +                          RedirectToLoginPanel();
  12.173 +
  12.174 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
  12.175 +                        } else {
  12.176 +                          char *filePassword;
  12.177 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
  12.178 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
  12.179 +                            RedirectToLoginPanel();
  12.180 +                          } else {
  12.181 +                            char c;
  12.182 +                            i = 0;
  12.183 +
  12.184 +                            /* READ PASSWORD FROM PASSWORD FILE */
  12.185 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
  12.186 +                              filePassword[i] = c;
  12.187 +                              ++i;
  12.188 +                            }
  12.189 +                            filePassword[i] = '\0';
  12.190 +                            fclose(passwordFile);
  12.191 +
  12.192 +                            /* IF PASSWORD FAILS COMPARISON... */
  12.193 +                            if (strcmp(filePassword, password)) {
  12.194 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
  12.195 +                              RedirectToLoginPanel();
  12.196 +
  12.197 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
  12.198 +                            } else {
  12.199 +
  12.200 +                              /* LOAD SETTINGS VALUES FROM FILE(S) */
  12.201 +
  12.202 +                              /* LOAD MENU ITEMS FROM FILES */
  12.203 +
  12.204 +                              /* READ NEW MENU FILE */
  12.205 +
  12.206 +                              /* READ OPEN MENU FILE */
  12.207 +
  12.208 +                              /* READ NEXT MENU FILE */
  12.209 +
  12.210 +                              /* READ SETTINGS MENU FILE */
  12.211 +
  12.212 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
  12.213 +                              char *menu, *new, *open, *next, *settings, *text_file, *status;
  12.214 +                              menu = new = open = next = settings = text_file = status = NULL;
  12.215 +
  12.216 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
  12.217 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
  12.218 +                                char *query;
  12.219 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
  12.220 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
  12.221 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
  12.222 +                                } else {
  12.223 +                                  free(variableName);
  12.224 +                                  strcpy(query, getenv("QUERY_STRING"));
  12.225 +                                  if (!(variableName = malloc(queryLength + 1))) {
  12.226 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
  12.227 +                                  } else {
  12.228 +                                    free(variableValue);
  12.229 +                                    if (!(variableValue = malloc(queryLength + 1))) {
  12.230 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
  12.231 +
  12.232 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
  12.233 +                                    } else {
  12.234 +
  12.235 +                                      /* PROCESS QUERY DATA */
  12.236 +                                      INT q = 0;
  12.237 +                                      i = 0;
  12.238 +                                      while ((q < queryLength) && (query[q] != '\0')) {
  12.239 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
  12.240 +                                          variableName[i] = query[q];
  12.241 +                                          ++q;
  12.242 +                                          ++i;
  12.243 +                                        }
  12.244 +                                        variableName[i] = '\0';
  12.245 +                                        ++q;
  12.246 +                                        i = 0;
  12.247 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
  12.248 +                                          variableValue[i] = query[q];
  12.249 +                                          ++q;
  12.250 +                                          ++i;
  12.251 +                                        }
  12.252 +                                        variableValue[i] = '\0';
  12.253 +                                        if (query[q] != '\0') {
  12.254 +                                          ++q;
  12.255 +                                        }
  12.256 +                                        if (!menu && !strcmp(variableName, "menu")) {
  12.257 +                                          if ((menu = malloc(strlen(variableValue) + 1)) != 0) {
  12.258 +                                            strcpy(menu, variableValue);
  12.259 +                                          }
  12.260 +                                        } else if (!new && !strcmp(variableName, "new")) {
  12.261 +                                          if ((new = malloc(strlen(variableValue) + 1)) != 0) {
  12.262 +                                            strcpy(new, variableValue);
  12.263 +                                          }
  12.264 +                                        } else if (!open && !strcmp(variableName, "open")) {
  12.265 +                                          if ((open = malloc(strlen(variableValue) + 1)) != 0) {
  12.266 +                                            strcpy(open, variableValue);
  12.267 +                                          }
  12.268 +                                        } else if (!next && !strcmp(variableName, "next")) {
  12.269 +                                          if ((next = malloc(strlen(variableValue) + 1)) != 0) {
  12.270 +                                            strcpy(next, variableValue);
  12.271 +                                          }
  12.272 +                                        } else if (!settings && !strcmp(variableName, "settings")) {
  12.273 +                                          if ((settings = malloc(strlen(variableValue) + 1)) != 0) {
  12.274 +                                            strcpy(settings, variableValue);
  12.275 +                                          }
  12.276 +                                        } else if (!text_file && !strcmp(variableName, "text_file")) {
  12.277 +                                          if ((text_file = malloc(strlen(variableValue) + 1)) != 0) {
  12.278 +                                            strcpy(text_file, variableValue);
  12.279 +                                          }
  12.280 +                                        } else if (!status && !strcmp(variableName, "says")) {
  12.281 +                                          if ((status = malloc(strlen(variableValue) + 1)) != 0) {
  12.282 +                                            strcpy(status, variableValue);
  12.283 +                                          }
  12.284 +                                        }
  12.285 +                                      }
  12.286 +                                      free(variableValue);
  12.287 +                                      variableValue = NULL;
  12.288 +                                    }
  12.289 +                                    free(variableName);
  12.290 +                                    variableName = NULL;
  12.291 +                                  }
  12.292 +                                  free(query);
  12.293 +                                }
  12.294 +                              }
  12.295 +
  12.296 +                              /* IF THIS IS A CONTINUED SESSION... */
  12.297 +
  12.298 +                                /* LOAD SESSION FROM FILE */
  12.299 +
  12.300 +                              /* OUTPUT GUI COMPONENT(S) BASED ON VARIABLES */
  12.301 +                              if (settings) {
  12.302 +                                OutputSettingsMenu(settings);
  12.303 +                              } else if (new) {
  12.304 +                                if (!strcmp(new, "text_file")) {
  12.305 +                                  OutputGUI("new", new);
  12.306 +                                } else {
  12.307 +                                  OutputNewMenu();
  12.308 +                                }
  12.309 +                              } else if (open) {
  12.310 +                                OutputOpenMenu(open);
  12.311 +                              } else if (next) {
  12.312 +                                if (!strcmp(next, "save_as")) {
  12.313 +
  12.314 +                                } else if (!strcmp(next, "save")) {
  12.315 +
  12.316 +                                } else if (!strcmp(next, "close")) {
  12.317 +
  12.318 +                                } else if (!strcmp(next, "bookmark")) {
  12.319 +
  12.320 +                                } else if (!strcmp(next, "logout")) {
  12.321 +
  12.322 +                                  /* SET COOKIES */
  12.323 +                                  printf("Set-Cookie: login=; path=/; secure\r\n");
  12.324 +                                  printf("Set-Cookie: password=; path=/; secure\r\n");
  12.325 +
  12.326 +                                  /* REDIRECT TO LOGIN PANEL */
  12.327 +                                  printf("Location: login\r\n\r\n");
  12.328 +                                } else if (status) {
  12.329 +                                  OutputGUI("status", status);
  12.330 +                                } else {
  12.331 +                                  OutputGUI(NULL, NULL);
  12.332 +                                }
  12.333 +                              } else if (menu) {
  12.334 +                                if (!strcmp(menu, "settings")) {
  12.335 +                                  OutputSettingsMenu(settings);
  12.336 +                                } else if (!strcmp(menu, "new")) {
  12.337 +                                  OutputNewMenu();
  12.338 +                                } else if (!strcmp(menu, "open")) {
  12.339 +                                  OutputOpenMenu(open);
  12.340 +                                } else if (!strcmp(menu, "next")) {
  12.341 +                                  OutputNextMenu(next);
  12.342 +                                } else if (status) {
  12.343 +                                  OutputGUI("status", status);
  12.344 +                                } else {
  12.345 +                                  OutputGUI(NULL, NULL);
  12.346 +                                }
  12.347 +                              } else if (text_file) {
  12.348 +                                OutputGUI("text_file", text_file);
  12.349 +                              } else {
  12.350 +                                if (status) {
  12.351 +                                  OutputGUI("status", status);
  12.352 +                                } else {
  12.353 +                                  OutputGUI(NULL, NULL);
  12.354 +                                }
  12.355 +                              }
  12.356 +                              free(status);
  12.357 +                              free(text_file);
  12.358 +                              free(settings);
  12.359 +                              free(next);
  12.360 +                              free(open);
  12.361 +                              free(new);
  12.362 +                              free(menu);
  12.363 +                            }
  12.364 +                            free(filePassword);
  12.365 +                          }
  12.366 +                        }
  12.367 +                      }
  12.368 +                      free(passwordFileName);
  12.369 +                    }
  12.370 +                  }
  12.371 +                  free(systemDirectory);
  12.372 +                }
  12.373 +                free(directory);
  12.374 +              }
  12.375 +              free(login);
  12.376 +            }
  12.377 +            free(password);
  12.378 +            free(variableValue);
  12.379 +          }
  12.380 +          free(variableName);
  12.381 +        }
  12.382 +        free(cookie);
  12.383 +      }
  12.384 +    }
  12.385 +  }
  12.386 +  return 0;
  12.387 +}
  12.388 +
  12.389 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
  12.390 +static void RedirectToLoginPanel(void) {
  12.391 +  printf("Location: login\r\n\r\n");
  12.392 +}
  12.393 +
  12.394 +/* FUNCTION | OUTPUT XHTML FOR interos GRAPHICAL USER INTERFACE */
  12.395 +static void OutputGUI(const char *variableName, char *variableValue) {
  12.396 +  BeginXHTMLOutput();
  12.397 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
  12.398 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
  12.399 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
  12.400 +  printf("  <!--========================================================-->\n");
  12.401 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
  12.402 +  printf("  <!--========================================================-->\n");
  12.403 +  printf("  <!--    URIs:  https://interos.com/                         -->\n");
  12.404 +  printf("  <!--           https://interos.com/main                     -->\n");
  12.405 +  printf("  <!--           https://www.interos.com/                     -->\n");
  12.406 +  printf("  <!--           https://www.interos.com/main                 -->\n");
  12.407 +  printf("  <!--   Title:  interos                                      -->\n");
  12.408 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
  12.409 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
  12.410 +  printf("  <!--========================================================-->\n");
  12.411 +  printf("  <head>\n");
  12.412 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  12.413 +  printf("    <meta name=\"title\" content=\"interos\" />\n");
  12.414 +  printf("    <meta name=\"description\" content=\"internet operating system\" />\n");
  12.415 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  12.416 +  printf("    <meta name=\"copyright\" \n");
  12.417 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  12.418 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  12.419 +  printf("    <title>interos</title>\n");
  12.420 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  12.421 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  12.422 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  12.423 +  printf("          media=\"screen, projection\" />\n");
  12.424 +  printf("    <script type=\"text/javascript\" src=\"/js/interos.js\"></script>\n");
  12.425 +  printf("  </head>\n");
  12.426 +  printf("  <frameset rows=\"72,*,72\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
  12.427 +  printf("    <frame name=\"top\" src=\"/top\" \n");
  12.428 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.429 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.430 +  if (variableName && variableValue) {
  12.431 +    printf("    <frame name=\"content\" src=\"/content?%s=%s\" \n", variableName, variableValue);
  12.432 +    printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.433 +    printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.434 +  } else {
  12.435 +    printf("    <frame name=\"content\" src=\"/content\" \n");
  12.436 +    printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.437 +    printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.438 +  }
  12.439 +  printf("    <frame name=\"bottom\" src=\"/bottom\" \n");
  12.440 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.441 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.442 +  printf("    <noframes>\n");
  12.443 +  printf("      <body id=\"body\">\n");
  12.444 +  printf("        <h3>\n");
  12.445 +  printf("          menu\n");
  12.446 +  printf("        </h3>\n");
  12.447 +  printf("        <p>\n");
  12.448 +  printf("          <a id=\"newLink\" href=\"/main?menu=new\">new</a>\n");
  12.449 +  printf("        </p>\n");
  12.450 +  printf("        <p>\n");
  12.451 +  printf("          <a id=\"openLink\" href=\"/main?menu=open\">open</a>\n");
  12.452 +  printf("        </p>\n");
  12.453 +  printf("        <p>\n");
  12.454 +  printf("          <a id=\"nextLink\" href=\"/main?menu=next\">next</a>\n");
  12.455 +  printf("        </p>\n");
  12.456 +  printf("        <p>\n");
  12.457 +  printf("          <a id=\"settingsLink\" href=\"/main?menu=settings\">settings</a>");
  12.458 +  printf("        </p>\n");
  12.459 +  printf("      </body>\n");
  12.460 +  printf("    </noframes>\n");
  12.461 +  printf("  </frameset>\n");
  12.462 +  FinishXHTMLOutput();
  12.463 +}
  12.464 +
  12.465 +/* FUNCTION | OUTPUT XHTML FOR NEW MENU */
  12.466 +static void OutputNewMenu(void) {
  12.467 +  BeginXHTMLOutput();
  12.468 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
  12.469 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
  12.470 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
  12.471 +  printf("  <!--========================================================-->\n");
  12.472 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
  12.473 +  printf("  <!--========================================================-->\n");
  12.474 +  printf("  <!--    URIs:  https://interos.com/main?menu=new            -->\n");
  12.475 +  printf("  <!--           https://interos.com/interos?menu=new         -->\n");
  12.476 +  printf("  <!--           https://www.interos.com/main?menu=new        -->\n");
  12.477 +  printf("  <!--           https://www.interos.com/interos?menu=new     -->\n");
  12.478 +  printf("  <!--   Title:  interos new                                  -->\n");
  12.479 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
  12.480 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
  12.481 +  printf("  <!--========================================================-->\n");
  12.482 +  printf("  <head>\n");
  12.483 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  12.484 +  printf("    <meta name=\"title\" content=\"interos new\" />\n");
  12.485 +  printf("    <meta name=\"description\" content=\"new menu for interos\" />\n");
  12.486 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  12.487 +  printf("    <meta name=\"copyright\" \n");
  12.488 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  12.489 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  12.490 +  printf("    <title>interos new</title>\n");
  12.491 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  12.492 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  12.493 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  12.494 +  printf("          media=\"screen, projection\" />\n");
  12.495 +  printf("    <script type=\"text/javascript\" src=\"/js/interos_new.js\"></script>\n");
  12.496 +  printf("  </head>\n");
  12.497 +  printf("  <frameset rows=\"*,72\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
  12.498 +  printf("    <frame name=\"menu\" src=\"/menu?name=new\" \n");
  12.499 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.500 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.501 +  printf("    <frame name=\"button\" src=\"/bottom?button=new\" \n");
  12.502 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.503 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.504 +  printf("    <noframes>\n");
  12.505 +  printf("      <body id=\"body\">\n");
  12.506 +  printf("        <div id=\"newEntries\">\n");
  12.507 +  printf("          <p>\n");
  12.508 +  printf("            <a href=\"/main?new=text_file\">text file</a>\n");
  12.509 +  printf("          </p>\n");
  12.510 +  printf("        </div>\n");
  12.511 +  printf("        <div id=\"newLink\"><a href=\"/main\">new</a></div>\n");
  12.512 +  printf("      </body>\n");
  12.513 +  printf("    </noframes>\n");
  12.514 +  printf("  </frameset>\n");
  12.515 +  FinishXHTMLOutput();
  12.516 +}
  12.517 +
  12.518 +/* FUNCTION | OUTPUT XHTML FOR OPEN MENU */
  12.519 +static void OutputOpenMenu(char *open) {
  12.520 +  BeginXHTMLOutput();
  12.521 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
  12.522 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
  12.523 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
  12.524 +  printf("  <!--========================================================-->\n");
  12.525 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
  12.526 +  printf("  <!--========================================================-->\n");
  12.527 +  printf("  <!--    URIs:  https://interos.com/main?menu=open           -->\n");
  12.528 +  printf("  <!--           https://interos.com/interos?menu=open        -->\n");
  12.529 +  printf("  <!--           https://www.interos.com/main?menu=open       -->\n");
  12.530 +  printf("  <!--           https://www.interos.com/interos?menu=open    -->\n");
  12.531 +  printf("  <!--   Title:  interos open                                 -->\n");
  12.532 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
  12.533 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
  12.534 +  printf("  <!--========================================================-->\n");
  12.535 +  printf("  <head>\n");
  12.536 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  12.537 +  printf("    <meta name=\"title\" content=\"interos open\" />\n");
  12.538 +  printf("    <meta name=\"description\" content=\"open menu for interos\" />\n");
  12.539 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  12.540 +  printf("    <meta name=\"copyright\" \n");
  12.541 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  12.542 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  12.543 +  printf("    <title>interos open</title>\n");
  12.544 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  12.545 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  12.546 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  12.547 +  printf("          media=\"screen, projection\" />\n");
  12.548 +  printf("    <script type=\"text/javascript\" src=\"/js/interos_open.js\"></script>\n");
  12.549 +  printf("  </head>\n");
  12.550 +  printf("  <frameset rows=\"72,*\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
  12.551 +  printf("    <frame name=\"button\" src=\"/top?button=open\" \n");
  12.552 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.553 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.554 +  if (open) {
  12.555 +    if (!strcmp(open, "text_file")) {
  12.556 +      printf("    <frame name=\"menu\" src=\"/menu?open=text_file\" \n");
  12.557 +      printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.558 +      printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.559 +    } else {
  12.560 +      printf("    <frame name=\"menu\" src=\"/menu?name=open\" \n");
  12.561 +      printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.562 +      printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.563 +    }
  12.564 +  } else {
  12.565 +    printf("    <frame name=\"menu\" src=\"/menu?name=open\" \n");
  12.566 +    printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.567 +    printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.568 +  }
  12.569 +  printf("    <noframes>\n");
  12.570 +  printf("      <body id=\"body\">\n");
  12.571 +  printf("        <div id=\"openLink\"><a href=\"/main\">open</a></div>\n");
  12.572 +  printf("        <div id=\"openEntries\">\n");
  12.573 +  printf("          <p><a href=\"/main?open=text_file\">text file</a></p>\n");
  12.574 +  printf("        </div>\n");
  12.575 +  printf("      </body>\n");
  12.576 +  printf("    </noframes>\n");
  12.577 +  printf("  </frameset>\n");
  12.578 +  FinishXHTMLOutput();
  12.579 +}
  12.580 +
  12.581 +/* FUNCTION | OUTPUT XHTML FOR NEXT MENU */
  12.582 +static void OutputNextMenu(char *next) {
  12.583 +  BeginXHTMLOutput();
  12.584 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
  12.585 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
  12.586 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
  12.587 +  printf("  <!--========================================================-->\n");
  12.588 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
  12.589 +  printf("  <!--========================================================-->\n");
  12.590 +  printf("  <!--    URIs:  https://interos.com/main?menu=next           -->\n");
  12.591 +  printf("  <!--           https://interos.com/interos?menu=next        -->\n");
  12.592 +  printf("  <!--           https://www.interos.com/main?menu=next       -->\n");
  12.593 +  printf("  <!--           https://www.interos.com/interos?menu=next    -->\n");
  12.594 +  printf("  <!--   Title:  interos next                                 -->\n");
  12.595 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
  12.596 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
  12.597 +  printf("  <!--========================================================-->\n");
  12.598 +  printf("  <head>\n");
  12.599 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  12.600 +  printf("    <meta name=\"title\" content=\"interos next\" />\n");
  12.601 +  printf("    <meta name=\"description\" content=\"next menu for interos\" />\n");
  12.602 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  12.603 +  printf("    <meta name=\"copyright\" \n");
  12.604 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  12.605 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  12.606 +  printf("    <title>interos next</title>\n");
  12.607 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  12.608 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  12.609 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  12.610 +  printf("          media=\"screen, projection\" />\n");
  12.611 +  printf("    <script type=\"text/javascript\" src=\"/js/interos_next.js\"></script>\n");
  12.612 +  printf("  </head>\n");
  12.613 +  printf("  <frameset rows=\"72,*\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
  12.614 +  printf("    <frame name=\"button\" src=\"/top?button=next\" \n");
  12.615 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.616 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.617 +  printf("    <frame name=\"menu\" src=\"/menu?name=next\" \n");
  12.618 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.619 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.620 +  printf("    <noframes>\n");
  12.621 +  printf("      <body id=\"body\">\n");
  12.622 +  printf("        <div id=\"nextLink\"><a href=\"/main\">next</a></div>\n");
  12.623 +  printf("        <div id=\"nextEntries\">\n");
  12.624 +  printf("          <p><a href=\"/logout\">logout</a></p>\n");
  12.625 +  printf("        </div>\n");
  12.626 +  printf("      </body>\n");
  12.627 +  printf("    </noframes>\n");
  12.628 +  printf("  </frameset>\n");
  12.629 +  FinishXHTMLOutput();
  12.630 +}
  12.631 +
  12.632 +/* FUNCTION | OUTPUT XHTML FOR SETTINGS MENU */
  12.633 +void OutputSettingsMenu(char *settings) {
  12.634 +  BeginXHTMLOutput();
  12.635 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
  12.636 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
  12.637 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
  12.638 +  printf("  <!--==========================================================-->\n");
  12.639 +  printf("  <!--        interos Standard Document Header - Markup         -->\n");
  12.640 +  printf("  <!--==========================================================-->\n");
  12.641 +  printf("  <!--    URIs:  https://interos.com/main?menu=settings         -->\n");
  12.642 +  printf("  <!--           https://interos.com/interos?menu=settings      -->\n");
  12.643 +  printf("  <!--           https://www.interos.com/menu?menu=settings     -->\n");
  12.644 +  printf("  <!--           https://www.interos.com/interos?menu=settings  -->\n");
  12.645 +  printf("  <!--   Title:  interos settings                               -->\n");
  12.646 +  printf("  <!--  Author:  Brent Angeline                                 -->\n");
  12.647 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset    -->\n");
  12.648 +  printf("  <!--==========================================================-->\n");
  12.649 +  printf("  <head>\n");
  12.650 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  12.651 +  printf("    <meta name=\"title\" content=\"interos - settings\" />\n");
  12.652 +  printf("    <meta name=\"description\" content=\"interos settings menu\" />\n");
  12.653 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  12.654 +  printf("    <meta name=\"copyright\" \n");
  12.655 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  12.656 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  12.657 +  printf("    <title>interos settings</title>\n");
  12.658 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  12.659 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  12.660 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  12.661 +  printf("          media=\"screen, projection\" />\n");
  12.662 +  printf("    <script type=\"text/javascript\" src=\"/js/interos_settings.js\"></script>\n");
  12.663 +  printf("  </head>\n");
  12.664 +  printf("  <frameset rows=\"*,72\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
  12.665 +  printf("    <frame name=\"menu\" src=\"/menu?name=settings\" \n");
  12.666 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.667 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.668 +  printf("    <frame name=\"button\" src=\"/bottom?button=settings\" \n");
  12.669 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
  12.670 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
  12.671 +  printf("    <noframes>\n");
  12.672 +  printf("      <body id=\"body\">\n");
  12.673 +  printf("        <div id=\"settingsEntries\">\n");
  12.674 +  printf("          <p><a href=\"/main?settings=button_size\">button size</a></p>\n");
  12.675 +  printf("        </div>\n");
  12.676 +  printf("        <div id=\"settingsLink\"><a href=\"/main\">settings</a></div>\n");
  12.677 +  printf("      </body>\n");
  12.678 +  printf("    </noframes>\n");
  12.679 +  printf("  </frameset>\n");
  12.680 +  FinishXHTMLOutput();
  12.681 +}
  12.682 +
  12.683 +static void BeginXHTMLOutput(void) {
  12.684 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
  12.685 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
  12.686 +}
  12.687 +
  12.688 +static void FinishXHTMLOutput(void) {
  12.689 +  printf("  <!--=====================================================================-->\n");
  12.690 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
  12.691 +  printf("  <!--=====================================================================-->\n");
  12.692 +  printf("  <!--                                                                     -->\n");
  12.693 +  printf("  <!--          All original textual and graphical site content:           -->\n");
  12.694 +  printf("  <!--                                                                     -->\n");
  12.695 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
  12.696 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
  12.697 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
  12.698 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
  12.699 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
  12.700 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
  12.701 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
  12.702 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
  12.703 +  printf("  <!--                                                                     -->\n");
  12.704 +  printf("  <!--=====================================================================-->\n");
  12.705 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
  12.706 +  printf("  <!--=====================================================================-->\n");
  12.707 +  printf("</html>");
  12.708 +}
  12.709 +
  12.710 +/***********************************************************************/
  12.711 +/*                  Copyright and Trademark Statement                  */
  12.712 +/***********************************************************************/
  12.713 +/*                                                                     */
  12.714 +/*          All original textual and graphical site content:           */
  12.715 +/*                                                                     */
  12.716 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
  12.717 +/*  reserved.  Reproduction in whole or in part without written        */
  12.718 +/*  permission is prohibited.  interos and the interos logos are       */
  12.719 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  12.720 +/*  product, and service names mentioned herein may be the properties  */
  12.721 +/*  of their respective owners.  Comments in the interos.org forums    */
  12.722 +/*  are the properties of their respective authors.  All software      */
  12.723 +/*  developed in the forums is open source and belongs to everyone.    */
  12.724 +/*                                                                     */
  12.725 +/***********************************************************************/
  12.726 +/*                      e-mail: info@interos.com                       */
  12.727 +/***********************************************************************/
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/c/menu_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    13.3 @@ -0,0 +1,812 @@
    13.4 +/*************************************************/
    13.5 +/*  interos Standard Document Header - CGI in C  */
    13.6 +/*************************************************/
    13.7 +/*         URIs:  https://interos.com/menu       */
    13.8 +/*                https://www.interos.com/menu   */
    13.9 +/*       Source:  menu.c                         */
   13.10 +/*  Description:  FastCGI for interos menu       */
   13.11 +/*       Author:  Brent Angeline                 */
   13.12 +/*          CGI:  FastCGI in ISO/ANSI C          */
   13.13 +/*************************************************/
   13.14 +
   13.15 +/* PREPROCESSOR DIRECTIVES */
   13.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                                 */
   13.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, MENU_ITEM, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   13.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                                          */
   13.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                              */
   13.20 +#include <unistd.h>         /*  F_OK, access()                                                                      */
   13.21 +
   13.22 +#ifndef INTEROS_H
   13.23 +
   13.24 +  /* TYPE DEFINITION */
   13.25 +  typedef struct {
   13.26 +    char *name;
   13.27 +    char *link;
   13.28 +    char *icon;
   13.29 +    struct MENU_ITEM *next;
   13.30 +  } MENU_ITEM;
   13.31 +
   13.32 +#endif
   13.33 +
   13.34 +/* FUNCTION PROTOTYPE DECLARATIONS */
   13.35 +static void RedirectToLoginPanel(void);
   13.36 +static void OutputNewMenu(void);
   13.37 +static void OutputOpenMenu(char *open);
   13.38 +static void OutputNextMenu(char *next);
   13.39 +static void OutputSettingsMenu(char *settings);
   13.40 +static void BeginXHTMLOutput(void);
   13.41 +static void FinishXHTMLOutput(void);
   13.42 +
   13.43 +/* BEGIN MAIN PROGRAM */
   13.44 +int main(void) {
   13.45 +
   13.46 +  /* BEGIN FASTCGI */
   13.47 +  while (FCGI_Accept() >= 0) {
   13.48 +
   13.49 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
   13.50 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
   13.51 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
   13.52 +      RedirectToLoginPanel();
   13.53 +
   13.54 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   13.55 +    } else {
   13.56 +
   13.57 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
   13.58 +      char *cookie;
   13.59 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
   13.60 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
   13.61 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
   13.62 +        RedirectToLoginPanel();
   13.63 +      } else {
   13.64 +        char *variableName;
   13.65 +        if (!(variableName = malloc(cookieLength + 1))) {
   13.66 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
   13.67 +          RedirectToLoginPanel();
   13.68 +        } else {
   13.69 +          char *variableValue;
   13.70 +          if (!(variableValue = malloc(cookieLength + 1))) {
   13.71 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
   13.72 +            RedirectToLoginPanel();
   13.73 +
   13.74 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
   13.75 +          } else {
   13.76 +
   13.77 +            /* PROCESS COOKIE DATA */
   13.78 +            char *login, *password;
   13.79 +            INT c, i;
   13.80 +            login = password = NULL;
   13.81 +            c = 0;
   13.82 +            strcpy(cookie, getenv("HTTP_COOKIE"));
   13.83 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
   13.84 +              i = 0;
   13.85 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
   13.86 +                variableName[i] = cookie[c];
   13.87 +                ++c;
   13.88 +                ++i;
   13.89 +              }
   13.90 +              variableName[i] = '\0';
   13.91 +              ++c;
   13.92 +              i = 0;
   13.93 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
   13.94 +                variableValue[i] = cookie[c];
   13.95 +                ++c;
   13.96 +                ++i;
   13.97 +              }
   13.98 +              variableValue[i] = '\0';
   13.99 +              ++c;
  13.100 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
  13.101 +                ++c;
  13.102 +              }
  13.103 +              if (!login && !strcmp(variableName, "login")) {
  13.104 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
  13.105 +                  strcpy(login, variableValue);
  13.106 +                }
  13.107 +              } else if (!password && !strcmp(variableName, "password")) {
  13.108 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
  13.109 +                  strcpy(password, variableValue);
  13.110 +                }
  13.111 +              }
  13.112 +            }
  13.113 +
  13.114 +            /* IF LOGIN VALUE IS MISSING... */
  13.115 +            if (!login) {
  13.116 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
  13.117 +              RedirectToLoginPanel();
  13.118 +
  13.119 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
  13.120 +            } else {
  13.121 +
  13.122 +              /* VERIFY LOGIN AND PASSWORD */
  13.123 +              char *directory;
  13.124 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
  13.125 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
  13.126 +                RedirectToLoginPanel();
  13.127 +              } else {
  13.128 +                char *systemDirectory;
  13.129 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
  13.130 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
  13.131 +                  RedirectToLoginPanel();
  13.132 +                } else {
  13.133 +                  strcpy(directory, DIRECTORY);
  13.134 +                  strcat(directory, login);
  13.135 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
  13.136 +                  strcat(systemDirectory, login);
  13.137 +
  13.138 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
  13.139 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
  13.140 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
  13.141 +                    RedirectToLoginPanel();
  13.142 +
  13.143 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
  13.144 +                  } else {
  13.145 +
  13.146 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
  13.147 +                    char *passwordFileName;
  13.148 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 11))) {
  13.149 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
  13.150 +                      RedirectToLoginPanel();
  13.151 +                    } else {
  13.152 +                      strcpy(passwordFileName, systemDirectory);
  13.153 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
  13.154 +
  13.155 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
  13.156 +                      if (access(passwordFileName, F_OK)) {
  13.157 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
  13.158 +                        RedirectToLoginPanel();
  13.159 +
  13.160 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
  13.161 +                      } else {
  13.162 +
  13.163 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
  13.164 +                        FILE *passwordFile;
  13.165 +
  13.166 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
  13.167 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
  13.168 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
  13.169 +                          RedirectToLoginPanel();
  13.170 +
  13.171 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
  13.172 +                        } else {
  13.173 +                          char *filePassword;
  13.174 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
  13.175 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
  13.176 +                            RedirectToLoginPanel();
  13.177 +                          } else {
  13.178 +                            char c;
  13.179 +                            i = 0;
  13.180 +
  13.181 +                            /* READ PASSWORD FROM PASSWORD FILE */
  13.182 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
  13.183 +                              filePassword[i] = c;
  13.184 +                              ++i;
  13.185 +                            }
  13.186 +                            filePassword[i] = '\0';
  13.187 +                            fclose(passwordFile);
  13.188 +
  13.189 +                            /* IF PASSWORD FAILS COMPARISON... */
  13.190 +                            if (strcmp(filePassword, password)) {
  13.191 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
  13.192 +                              RedirectToLoginPanel();
  13.193 +
  13.194 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
  13.195 +                            } else {
  13.196 +
  13.197 +                              /* LOAD SETTINGS VALUES FROM FILES */
  13.198 +
  13.199 +                              /* LOAD COMPONENTS FROM FILES */
  13.200 +
  13.201 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
  13.202 +                              char *name, *open;
  13.203 +                              name = open = NULL;
  13.204 +
  13.205 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
  13.206 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
  13.207 +                                char *query;
  13.208 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
  13.209 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
  13.210 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
  13.211 +                                } else {
  13.212 +                                  strcpy(query, getenv("QUERY_STRING"));
  13.213 +                                  free(variableName);
  13.214 +                                  if (!(variableName = malloc(queryLength + 1))) {
  13.215 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
  13.216 +                                  } else {
  13.217 +                                    free(variableValue);
  13.218 +                                    if (!(variableValue = malloc(queryLength + 1))) {
  13.219 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
  13.220 +
  13.221 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
  13.222 +                                    } else {
  13.223 +
  13.224 +                                      /* PROCESS QUERY DATA */
  13.225 +                                      INT q = 0;
  13.226 +                                      i = 0;
  13.227 +                                      while ((q < queryLength) && (query[q] != '\0')) {
  13.228 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
  13.229 +                                          variableName[i] = query[q];
  13.230 +                                          ++q;
  13.231 +                                          ++i;
  13.232 +                                        }
  13.233 +                                        variableName[i] = '\0';
  13.234 +                                        ++q;
  13.235 +                                        i = 0;
  13.236 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
  13.237 +                                          variableValue[i] = query[q];
  13.238 +                                          ++q;
  13.239 +                                          ++i;
  13.240 +                                        }
  13.241 +                                        variableValue[i] = '\0';
  13.242 +                                        if (query[q] != '\0') {
  13.243 +                                          ++q;
  13.244 +                                        }
  13.245 +                                        if (!name && !strcmp(variableName, "name")) {
  13.246 +                                          if ((name = malloc(strlen(variableValue) + 1)) != 0) {
  13.247 +                                            strcpy(name, variableValue);
  13.248 +                                          }
  13.249 +                                        } else if (!open && !strcmp(variableName, "open")) {
  13.250 +                                          if ((open = malloc(strlen(variableValue) + 1)) != 0) {
  13.251 +                                            strcpy(open, variableValue);
  13.252 +                                          }
  13.253 +                                        }
  13.254 +                                      }
  13.255 +                                      free(variableValue);
  13.256 +                                      variableValue = NULL;
  13.257 +                                    }
  13.258 +                                    free(variableName);
  13.259 +                                    variableName = NULL;
  13.260 +                                  }
  13.261 +                                  free(query);
  13.262 +                                }
  13.263 +                              }
  13.264 +
  13.265 +                              /* OUTPUT GUI COMPONENT(S) BASED ON VARIABLES */
  13.266 +                              if (name) {
  13.267 +                                if (!strcmp(name, "settings")) {
  13.268 +                                  OutputSettingsMenu(NULL);
  13.269 +                                } else if (!strcmp(name, "new")) {
  13.270 +                                  OutputNewMenu();
  13.271 +                                } else if (!strcmp(name, "open")) {
  13.272 +                                  OutputOpenMenu(NULL);
  13.273 +                                } else if (!strcmp(name, "next")) {
  13.274 +                                  OutputNextMenu(NULL);
  13.275 +                                } else {
  13.276 +                                  RedirectToLoginPanel();
  13.277 +                                }
  13.278 +                              } else if (open) {
  13.279 +                                if (!strcmp(open, "text_file")) {
  13.280 +                                  OutputOpenMenu(open);
  13.281 +                                } else {
  13.282 +                                  OutputOpenMenu(NULL);
  13.283 +                                }
  13.284 +                              } else {
  13.285 +                                RedirectToLoginPanel();
  13.286 +                              }
  13.287 +                              free(name);
  13.288 +                              free(open);
  13.289 +                            }
  13.290 +                            free(filePassword);
  13.291 +                          }
  13.292 +                        }
  13.293 +                      }
  13.294 +                      free(passwordFileName);
  13.295 +                    }
  13.296 +                  }
  13.297 +                  free(systemDirectory);
  13.298 +                }
  13.299 +                free(directory);
  13.300 +              }
  13.301 +              free(login);
  13.302 +            }
  13.303 +            free(password);
  13.304 +            free(variableValue);
  13.305 +          }
  13.306 +          free(variableName);
  13.307 +        }
  13.308 +        free(cookie);
  13.309 +      }
  13.310 +    }
  13.311 +  }
  13.312 +  return 0;
  13.313 +}
  13.314 +
  13.315 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
  13.316 +static void RedirectToLoginPanel(void) {
  13.317 +  printf("Location: login\r\n\r\n");
  13.318 +}
  13.319 +
  13.320 +static void OutputNewMenu(void) {
  13.321 +  BeginXHTMLOutput();
  13.322 +  printf("      class=\"newMenu\">\n");
  13.323 +  printf("  <!--==================================================-->\n");
  13.324 +  printf("  <!--    interos Standard Document Header - Markup     -->\n");
  13.325 +  printf("  <!--==================================================-->\n");
  13.326 +  printf("  <!--    URIs:  https://interos.com/menu?name=new      -->\n");
  13.327 +  printf("  <!--           https://www.interos.com/menu?name=new  -->\n");
  13.328 +  printf("  <!--   Title:  interos new menu                       -->\n");
  13.329 +  printf("  <!--  Author:  Brent Angeline                         -->\n");
  13.330 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional   -->\n");
  13.331 +  printf("  <!--==================================================-->\n");
  13.332 +  printf("  <head>\n");
  13.333 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  13.334 +  printf("    <meta name=\"title\" content=\"interos new menu\" />\n");
  13.335 +  printf("    <meta name=\"description\" content=\"new menu for interos\" />\n");
  13.336 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  13.337 +  printf("    <meta name=\"copyright\" \n");
  13.338 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  13.339 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  13.340 +  printf("    <title>interos new menu</title>\n");
  13.341 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  13.342 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  13.343 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/menu.css\" \n");
  13.344 +  printf("          media=\"screen, projection\" />\n");
  13.345 +  printf("    <script type=\"text/javascript\" src=\"/js/menu.js\"></script>\n");
  13.346 +  printf("  </head>\n");
  13.347 +  printf("  <body id=\"body\">\n");
  13.348 +  printf("    <center>\n");
  13.349 +  printf("      <div id=\"newMenu\">\n");
  13.350 +  printf("        <div id=\"newMenuContent\">\n");
  13.351 +  printf("          <table>\n");
  13.352 +  printf("            <thead>\n");
  13.353 +  printf("              <tr>\n");
  13.354 +  printf("                <th><h1>new menu</h1></th>\n");
  13.355 +  printf("              </tr>\n");
  13.356 +  printf("            </thead>\n");
  13.357 +  printf("            <tbody>\n");
  13.358 +  printf("              <tr>\n");
  13.359 +  printf("                <td><a href=\"/new?alarm\" target=\"_top\">\n");
  13.360 +  printf("                      <img src=\"/images/icons/new/alarm.png\" \n");
  13.361 +  printf("                           alt=\"alarm\" /><br /><span>alarm</span><br />\n");
  13.362 +  printf("                      <br />\n");
  13.363 +  printf("                    </a></td>\n");
  13.364 +  printf("              </tr>\n");
  13.365 +  printf("              <tr>\n");
  13.366 +  printf("                <td><a href=\"/new?bookmark\" target=\"_top\">\n");
  13.367 +  printf("                     <img src=\"/images/icons/new/bookmark.png\" \n");
  13.368 +  printf("                           alt=\"bookmark\" /><br /><span>bookmark</span><br />\n");
  13.369 +  printf("                      <br />\n");
  13.370 +  printf("                   </a></td>\n");
  13.371 +  printf("              </tr>\n");
  13.372 +  printf("             <tr>\n");
  13.373 +  printf("                <td><a href=\"/new?chat\" target=\"_top\">\n");
  13.374 +  printf("                      <img src=\"/images/icons/new/chat.png\" \n");
  13.375 +  printf("                           alt=\"chat\" /><br /><span>chat</span><br />\n");
  13.376 +  printf("                      <br />\n");
  13.377 +  printf("                    </a></td>\n");
  13.378 +  printf("              </tr>\n");
  13.379 +  printf("              <tr>\n");
  13.380 +  printf("                <td><a href=\"/new?copy\" target=\"_top\">\n");
  13.381 +  printf("                     <img src=\"/images/icons/new/copy.png\" \n");
  13.382 +  printf("                          alt=\"copy\" /><br /><span>copy</span><br />\n");
  13.383 +  printf("                      <br />\n");
  13.384 +  printf("                    </a></td>\n");
  13.385 +  printf("              </tr>\n");
  13.386 +  printf("              <tr>\n");
  13.387 +  printf("                <td><a href=\"/new?document\" target=\"_top\">\n");
  13.388 +  printf("                     <img src=\"/images/icons/new/document.png\" \n");
  13.389 +  printf("                           alt=\"document\" /><br /><span>document</span><br />\n");
  13.390 +  printf("                      <br />\n");
  13.391 +  printf("                    </a></td>\n");
  13.392 +  printf("              </tr>\n");
  13.393 +  printf("              <tr>\n");
  13.394 +  printf("                <td><a href=\"/new?download\" target=\"_top\">\n");
  13.395 +  printf("                      <img src=\"/images/icons/new/download.png\" \n");
  13.396 +  printf("                           alt=\"download\" /><br /><span>download</span><br />\n");
  13.397 +  printf("                      <br />\n");
  13.398 +  printf("                    </a></td>\n");
  13.399 +  printf("              </tr>\n");
  13.400 +  printf("              <tr>\n");
  13.401 +  printf("                <td><a href=\"/new?e-mail\" target=\"_top\">\n");
  13.402 +  printf("                     <img src=\"/images/icons/new/e-mail.png\" \n");
  13.403 +  printf("                          alt=\"e-mail\" /><br /><span>e-mail</span><br />\n");
  13.404 +  printf("                      <br />\n");
  13.405 +  printf("                    </a></td>\n");
  13.406 +  printf("              </tr>\n");
  13.407 +  printf("              <tr>\n");
  13.408 +  printf("                <td><a href=\"/new?folder\" target=\"_top\">\n");
  13.409 +  printf("                      <img src=\"/images/icons/new/folder.png\" \n");
  13.410 +  printf("                          alt=\"folder\" /><br /><span>folder</span><br />\n");
  13.411 +  printf("                      <br />\n");
  13.412 +  printf("                    </a></td>\n");
  13.413 +  printf("              </tr>\n");
  13.414 +  printf("              <tr>\n");
  13.415 +  printf("                <td><a href=\"/new?phone_call\" target=\"_top\">\n");
  13.416 +  printf("                     <img src=\"/images/icons/new/phone_call.png\" \n");
  13.417 +  printf("                          alt=\"phone call\" /><br /><span>phone call</span><br />\n");
  13.418 +  printf("                     <br />\n");
  13.419 +  printf("                   </a></td>\n");
  13.420 +  printf("              </tr>\n");
  13.421 +  printf("              <tr>\n");
  13.422 +  printf("                <td><a href=\"/new?search\" target=\"_top\">\n");
  13.423 +  printf("                      <img src=\"/images/icons/new/search.png\" \n");
  13.424 +  printf("                          alt=\"search\" /><br /><span>search</span><br />\n");
  13.425 +  printf("                     <br />\n");
  13.426 +  printf("                    </a></td>\n");
  13.427 +  printf("             </tr>\n");
  13.428 +  printf("              <tr>\n");
  13.429 +  printf("                <td><a href=\"/new?share\" target=\"_top\">\n");
  13.430 +  printf("                      <img src=\"/images/icons/new/share.png\" \n");
  13.431 +  printf("                           alt=\"share\" /><br /><span>share</span><br />\n");
  13.432 +  printf("                      <br />\n");
  13.433 +  printf("                    </a></td>\n");
  13.434 +  printf("              </tr>\n");
  13.435 +  printf("              <tr>\n");
  13.436 +  printf("               <td><a href=\"/new?text_file\" target=\"_top\">\n");
  13.437 +  printf("                     <img src=\"/images/icons/new/text_file.png\" \n");
  13.438 +  printf("                           alt=\"text file\" /><br /><span>text file</span><br />\n");
  13.439 +  printf("                     <br />\n");
  13.440 +  printf("                   </a></td>\n");
  13.441 +  printf("              </tr>\n");
  13.442 +  printf("              <tr>\n");
  13.443 +  printf("                <td><a href=\"/new?upload\" target=\"_top\">\n");
  13.444 +  printf("                     <img src=\"/images/icons/new/upload.png\" \n");
  13.445 +  printf("                          alt=\"upload\" /><br /><span>upload</span><br />\n");
  13.446 +  printf("                     <br />\n");
  13.447 +  printf("                   </a></td>\n");
  13.448 +  printf("              </tr>\n");
  13.449 +  printf("           </tbody>\n");
  13.450 +  printf("          </table>\n");
  13.451 +  printf("        </div>\n");
  13.452 +  FinishXHTMLOutput();
  13.453 +}
  13.454 +
  13.455 +static void OutputOpenMenu(char *open) {
  13.456 +  BeginXHTMLOutput();
  13.457 +  printf("      class=\"openMenu\">\n");
  13.458 +  printf("  <!--===================================================-->\n");
  13.459 +  printf("  <!--       interos Standard Document Header - Markup   -->\n");
  13.460 +  printf("  <!--===================================================-->\n");
  13.461 +  printf("  <!--    URIs:  https://interos.com/menu?name=open      -->\n");
  13.462 +  printf("  <!--           https://www.interos.com/menu?name=open  -->\n");
  13.463 +  printf("  <!--   Title:  interos open menu                       -->\n");
  13.464 +  printf("  <!--  Author:  Brent Angeline                          -->\n");
  13.465 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional    -->\n");
  13.466 +  printf("  <!--===================================================-->\n");
  13.467 +  printf("  <head>\n");
  13.468 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  13.469 +  printf("    <meta name=\"title\" content=\"interos open menu\" />\n");
  13.470 +  printf("    <meta name=\"description\" content=\"open menu for interos\" />\n");
  13.471 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  13.472 +  printf("    <meta name=\"copyright\" \n");
  13.473 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  13.474 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  13.475 +  printf("    <title>interos - open menu</title>\n");
  13.476 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  13.477 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  13.478 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/menu.css\" \n");
  13.479 +  printf("          media=\"screen, projection\" />\n");
  13.480 +  printf("    <script type=\"text/javascript\" src=\"/js/menu.js\"></script>\n");
  13.481 +  printf("  </head>\n");
  13.482 +  printf("  <body id=\"body\">\n");
  13.483 +  printf("    <center>\n");
  13.484 +  printf("      <div id=\"openMenu\">\n");
  13.485 +  printf("        <div id=\"openMenuContent\">\n");
  13.486 +  printf("          <table>\n");
  13.487 +  printf("            <thead>\n");
  13.488 +  printf("              <tr>\n");
  13.489 +  printf("                <th><h1>open menu</h1></th>\n");
  13.490 +  printf("              </tr>\n");
  13.491 +  printf("            </thead>\n");
  13.492 +  printf("            <tbody>\n");
  13.493 +  printf("              <tr>\n");
  13.494 +  if (open && !strcmp(open, "text_file")) {
  13.495 +    printf("                <td><a href=\"/interos?text_file=empty.txt\" target=\"_top\">\n");
  13.496 +    printf("                      <img src=\"/images/icons/open/text_file.png\" \n");
  13.497 +    printf("                           alt=\"empty.txt\" /><br /><span>empty.txt</span><br />\n");
  13.498 +    printf("                      <br />\n");
  13.499 +    printf("                    </a></td>\n");
  13.500 +  } else {
  13.501 +    printf("                <td><a href=\"/interos?open=alarm\" target=\"_top\">\n");
  13.502 +    printf("                      <img src=\"/images/icons/open/alarm.png\" \n");
  13.503 +    printf("                           alt=\"alarm\" /><br /><span>alarm</span><br />\n");
  13.504 +    printf("                     <br />\n");
  13.505 +    printf("                   </a></td>\n");
  13.506 +    printf("              </tr>\n");
  13.507 +    printf("              <tr>\n");
  13.508 +    printf("                <td><a href=\"/interos?open=bookmark\" target=\"_top\">\n");
  13.509 +    printf("                      <img src=\"/images/icons/open/bookmark.png\" \n");
  13.510 +    printf("                           alt=\"bookmark\" /><br /><span>bookmark</span><br />\n");
  13.511 +    printf("                      <br />\n");
  13.512 +    printf("                    </a></td>\n");
  13.513 +    printf("              </tr>\n");
  13.514 +    printf("              <tr>\n");
  13.515 +    printf("                <td><a href=\"/interos?open=document\" target=\"_top\">\n");
  13.516 +    printf("                      <img src=\"/images/icons/open/document.png\" \n");
  13.517 +    printf("                           alt=\"document\" /><br /><span>document</span><br />\n");
  13.518 +    printf("                      <br />\n");
  13.519 +    printf("                    </a></td>\n");
  13.520 +    printf("              </tr>\n");
  13.521 +    printf("              <tr>\n");
  13.522 +    printf("                <td><a href=\"/interos?open=e-mail\" target=\"_top\">\n");
  13.523 +    printf("                      <img src=\"/images/icons/open/e-mail.png\" \n");
  13.524 +    printf("                           alt=\"e-mail\" /><br /><span>e-mail</span><br />\n");
  13.525 +    printf("                      <br />\n");
  13.526 +    printf("                    </a></td>\n");
  13.527 +    printf("              </tr>\n");
  13.528 +    printf("              <tr>\n");
  13.529 +    printf("                <td><a href=\"/interos?open=image\" target=\"_top\">\n");
  13.530 +    printf("                      <img src=\"/images/icons/open/image.png\" \n");
  13.531 +    printf("                           alt=\"image\" /><br /><span>image</span><br />\n");
  13.532 +    printf("                      <br />\n");
  13.533 +    printf("                   </a></td>\n");
  13.534 +    printf("              </tr>\n");
  13.535 +    printf("              <tr>\n");
  13.536 +    printf("                <td><a href=\"/interos?open=incoming\" target=\"_top\">\n");
  13.537 +    printf("                      <img src=\"/images/icons/open/incoming.png\" \n");
  13.538 +    printf("                           alt=\"incoming\" /><br /><span>incoming</span><br />\n");
  13.539 +    printf("                      <br />\n");
  13.540 +    printf("                    </a></td>\n");
  13.541 +    printf("              </tr>\n");
  13.542 +    printf("              <tr>\n");
  13.543 +    printf("                <td><a href=\"/interos?open=music\" target=\"_top\">\n");
  13.544 +    printf("                      <img src=\"/images/icons/open/music.png\" \n");
  13.545 +    printf("                           alt=\"music\" /><br /><span>music</span><br />\n");
  13.546 +    printf("                     <br />\n");
  13.547 +    printf("                    </a></td>\n");
  13.548 +    printf("              </tr>\n");
  13.549 +    printf("              <tr>\n");
  13.550 +    printf("                <td><a href=\"/interos?open=shared\" target=\"_top\">\n");
  13.551 +    printf("                      <img src=\"/images/icons/open/shared.png\" \n");
  13.552 +    printf("                           alt=\"shared\" /><br /><span>shared</span><br />\n");
  13.553 +    printf("                      <br />\n");
  13.554 +    printf("                    </a></td>\n");
  13.555 +    printf("              </tr>\n");
  13.556 +    printf("              <tr>\n");
  13.557 +    printf("                <td><a href=\"/interos?open=text_file\" target=\"_top\">\n");
  13.558 +    printf("                      <img src=\"/images/icons/open/text_file.png\" \n");
  13.559 +    printf("                           alt=\"text file\" /><br /><span>text file</span><br />\n");
  13.560 +    printf("                      <br />\n");
  13.561 +    printf("                    </a></td>\n");
  13.562 +    printf("              </tr>\n");
  13.563 +    printf("              <tr>\n");
  13.564 +    printf("                <td><a href=\"/interos?open=video\" target=\"_top\">\n");
  13.565 +    printf("                      <img src=\"/images/icons/open/video.png\" \n");
  13.566 +    printf("                           alt=\"video\" /><br /><span>video</span><br />\n");
  13.567 +    printf("                      <br />\n");
  13.568 +    printf("                    </a></td>\n");
  13.569 +  }
  13.570 +  printf("              </tr>\n");
  13.571 +  printf("            </tbody>\n");
  13.572 +  printf("          </table>\n");
  13.573 +  printf("        </center>\n");
  13.574 +  printf("      </div>\n");
  13.575 +  FinishXHTMLOutput();
  13.576 +}
  13.577 +
  13.578 +static void OutputNextMenu(char *next) {
  13.579 +  BeginXHTMLOutput();
  13.580 +  printf("      class=\"nextMenu\">\n");
  13.581 +  printf("  <!--===================================================-->\n");
  13.582 +  printf("  <!--       interos Standard Document Header - Markup   -->\n");
  13.583 +  printf("  <!--===================================================-->\n");
  13.584 +  printf("  <!--    URIs:  https://interos.com/menu?name=next      -->\n");
  13.585 +  printf("  <!--           https://www.interos.com/menu?name=next  -->\n");
  13.586 +  printf("  <!--   Title:  interos next menu                       -->\n");
  13.587 +  printf("  <!--  Author:  Brent Angeline                          -->\n");
  13.588 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional    -->\n");
  13.589 +  printf("  <!--===================================================-->\n");
  13.590 +  printf("  <head>\n");
  13.591 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  13.592 +  printf("    <meta name=\"title\" content=\"interos next menu\" />\n");
  13.593 +  printf("    <meta name=\"description\" content=\"next menu for interos\" />\n");
  13.594 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  13.595 +  printf("    <meta name=\"copyright\" \n");
  13.596 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  13.597 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  13.598 +  printf("    <title>interos next menu</title>\n");
  13.599 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  13.600 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  13.601 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/menu.css\" \n");
  13.602 +  printf("          media=\"screen, projection\" />\n");
  13.603 +  printf("    <script type=\"text/javascript\" src=\"/js/menu.js\"></script>\n");
  13.604 +  printf("  </head>\n");
  13.605 +  printf("  <body id=\"body\">\n");
  13.606 +  printf("    <center>\n");
  13.607 +  printf("      <div id=\"nextMenu\">\n");
  13.608 +  printf("        <div id=\"nextMenuContent\">\n");
  13.609 +  printf("          <table>\n");
  13.610 +  printf("            <thead>\n");
  13.611 +  printf("              <th><h1>next menu</h1></th>\n");
  13.612 +  printf("            </thead>\n");
  13.613 +  printf("            <tbody>\n");
  13.614 +  printf("              <tr>\n");
  13.615 +  printf("                <td><a href=\"/interos?next=bookmark\" target=\"_top\">\n");
  13.616 +  printf("                      <img src=\"/images/icons/next/bookmark.png\" \n");
  13.617 +  printf("                           alt=\"bookmark\" /><br /><span>bookmark</span><br />\n");
  13.618 +  printf("                      <br />\n");
  13.619 +  printf("                    </a></td>\n");
  13.620 +  printf("              </tr>\n");
  13.621 +  printf("              <tr>\n");
  13.622 +  printf("                <td><a href=\"/interos?next=close\" target=\"_top\">\n");
  13.623 +  printf("                      <img src=\"/images/icons/next/close.png\" \n");
  13.624 +  printf("                           alt=\"close\" /><br /><span>close</span><br />\n");
  13.625 +  printf("                      <br />\n");
  13.626 +  printf("                    </a></td>\n");
  13.627 +  printf("              </tr>\n");
  13.628 +  printf("              <tr>\n");
  13.629 +  printf("                <td><a href=\"/logout\" target=\"_top\">\n");
  13.630 +  printf("                      <img src=\"/images/icons/next/logout.png\" \n");
  13.631 +  printf("                           alt=\"logout\" /><br /><span>logout</span><br />\n");
  13.632 +  printf("                      <br />\n");
  13.633 +  printf("                    </a></td>\n");
  13.634 +  printf("              </tr>\n");
  13.635 +  printf("              <tr>\n");
  13.636 +  printf("                <td><a href=\"/interos?next=save\" target=\"_top\">\n");
  13.637 +  printf("                      <img src=\"/images/icons/next/save.png\" \n");
  13.638 +  printf("                           alt=\"save\" /><br /><span>save</span><br />\n");
  13.639 +  printf("                      <br />\n");
  13.640 +  printf("                    </a></td>\n");
  13.641 +  printf("              </tr>\n");
  13.642 +  printf("              <tr>\n");
  13.643 +  printf("                <td><a href=\"/interos?next=save_as\" target=\"_top\">\n");
  13.644 +  printf("                      <img src=\"/images/icons/next/save_as.png\" \n");
  13.645 +  printf("                           alt=\"save as\" /><br /><span>save as</span><br />\n");
  13.646 +  printf("                      <br />\n");
  13.647 +  printf("                    </a></td>\n");
  13.648 +  printf("              </tr>\n");
  13.649 +  printf("            </tbody>\n");
  13.650 +  printf("          </table>\n");
  13.651 +  printf("        </div>\n");
  13.652 +  FinishXHTMLOutput();
  13.653 +}
  13.654 +
  13.655 +static void OutputSettingsMenu(char *settings) {
  13.656 +  BeginXHTMLOutput();
  13.657 +  printf("      class=\"settingsMenu\">\n");
  13.658 +  printf("  <!--=======================================================-->\n");
  13.659 +  printf("  <!--         interos Standard Document Header - Markup     -->\n");
  13.660 +  printf("  <!--=======================================================-->\n");
  13.661 +  printf("  <!--    URIs:  https://interos.com/menu?name=settings      -->\n");
  13.662 +  printf("  <!--           https://www.interos.com/menu?name=settings  -->\n");
  13.663 +  printf("  <!--   Title:  interos settings menu                       -->\n");
  13.664 +  printf("  <!--  Author:  Brent Angeline                              -->\n");
  13.665 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional        -->\n");
  13.666 +  printf("  <!--=======================================================-->\n");
  13.667 +  printf("  <head>\n");
  13.668 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  13.669 +  printf("    <meta name=\"title\" content=\"interos settings menu\" />\n");
  13.670 +  printf("    <meta name=\"description\" content=\"settings menu for interos\" />\n");
  13.671 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  13.672 +  printf("    <meta name=\"copyright\" \n");
  13.673 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  13.674 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  13.675 +  printf("    <title>interos settings menu</title>\n");
  13.676 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  13.677 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  13.678 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/menu.css\" \n");
  13.679 +  printf("          media=\"screen, projection\" />\n");
  13.680 +  printf("    <script type=\"text/javascript\" src=\"/js/menu.js\"></script>\n");
  13.681 +  printf("  </head>\n");
  13.682 +  printf("  <body id=\"body\">\n");
  13.683 +  printf("    <center>\n");
  13.684 +  printf("      <div id=\"settingsMenu\">\n");
  13.685 +  printf("        <div id=\"settingsMenuContent\">\n");
  13.686 +  printf("          <table>\n");
  13.687 +  printf("            <thead>\n");
  13.688 +  printf("              <tr>\n");
  13.689 +  printf("                <th><h1>settings menu</h1></th>\n");
  13.690 +  printf("              </tr>\n");
  13.691 +  printf("            </thead>\n");
  13.692 +  printf("            <tbody>\n");
  13.693 +  printf("              <tr>\n");
  13.694 +  printf("                <td><a href=\"/interos?settings=audio\" target=\"_top\">\n");
  13.695 +  printf("                      <img src=\"/images/icons/settings/audio.png\" \n");
  13.696 +  printf("                           alt=\"audio\" /><br /><span>audio</span><br />\n");
  13.697 +  printf("                      <br />\n");
  13.698 +  printf("                    </a></td>\n");
  13.699 +  printf("              </tr>\n");
  13.700 +  printf("              <tr>\n");
  13.701 +  printf("                <td><a href=\"/interos?settings=buttons\" target=\"_top\">\n");
  13.702 +  printf("                      <img src=\"/images/icons/settings/buttons.png\" \n");
  13.703 +  printf("                           alt=\"buttons\" /><br /><span>buttons</span><br />\n");
  13.704 +  printf("                      <br />\n");
  13.705 +  printf("                    </a></td>\n");
  13.706 +  printf("              </tr>\n");
  13.707 +  printf("              <tr>\n");
  13.708 +  printf("                <td><a href=\"/interos?settings=chat\" target=\"_top\">\n");
  13.709 +  printf("                      <img src=\"/images/icons/settings/chat.png\" \n");
  13.710 +  printf("                           alt=\"chat\" /><br /><span>chat</span><br />\n");
  13.711 +  printf("                      <br />\n");
  13.712 +  printf("                    </a></td>\n");
  13.713 +  printf("              </tr>\n");
  13.714 +  printf("              <tr>\n");
  13.715 +  printf("                <td><a href=\"/interos?settings=clock\" target=\"_top\">\n");
  13.716 +  printf("                      <img src=\"/images/icons/settings/clock.png\" \n");
  13.717 +  printf("                           alt=\"clock\" /><br /><span>clock</span><br />\n");
  13.718 +  printf("                      <br />\n");
  13.719 +  printf("                    </a></td>\n");
  13.720 +  printf("              </tr>\n");
  13.721 +  printf("              <tr>\n");
  13.722 +  printf("                <td><a href=\"/interos?settings=e-mail\" target=\"_top\">\n");
  13.723 +  printf("                      <img src=\"/images/icons/settings/e-mail.png\" \n");
  13.724 +  printf("                           alt=\"e-mail\" /><br /><span>e-mail</span><br />\n");
  13.725 +  printf("                      <br />\n");
  13.726 +  printf("                    </a></td>\n");
  13.727 +  printf("              </tr>\n");
  13.728 +  printf("              <tr>\n");
  13.729 +  printf("                <td><a href=\"/interos?settings=images\" target=\"_top\">\n");
  13.730 +  printf("                      <img src=\"/images/icons/settings/images.png\" \n");
  13.731 +  printf("                           alt=\"images\" /><br /><span>images</span><br />\n");
  13.732 +  printf("                      <br />\n");
  13.733 +  printf("                    </a></td>\n");
  13.734 +  printf("              </tr>\n");
  13.735 +  printf("              <tr>\n");
  13.736 +  printf("                <td><a href=\"/interos?settings=phone\" target=\"_top\">\n");
  13.737 +  printf("                      <img src=\"/images/icons/settings/phone.png\" \n");
  13.738 +  printf("                           alt=\"phone\" /><br /><span>phone</span><br />\n");
  13.739 +  printf("                      <br />\n");
  13.740 +  printf("                    </a></td>\n");
  13.741 +  printf("              </tr>\n");
  13.742 +  printf("              <tr>\n");
  13.743 +  printf("                <td><a href=\"/interos?settings=search\" target=\"_top\">\n");
  13.744 +  printf("                      <img src=\"/images/icons/settings/search.png\" \n");
  13.745 +  printf("                           alt=\"search\" /><br /><span>search</span><br />\n");
  13.746 +  printf("                      <br />\n");
  13.747 +  printf("                    </a></td>\n");
  13.748 +  printf("              </tr>\n");
  13.749 +  printf("              <tr>\n");
  13.750 +  printf("                <td><a href=\"/interos?settings=video\" target=\"_top\">\n");
  13.751 +  printf("                      <img src=\"/images/icons/settings/video.png\" \n");
  13.752 +  printf("                           alt=\"video\" /><br /><span>video</span><br />\n");
  13.753 +  printf("                      <br />\n");
  13.754 +  printf("                    </a></td>\n");
  13.755 +  printf("              </tr>\n");
  13.756 +  printf("          </tbody>\n");
  13.757 +  printf("        </table>\n");
  13.758 +  printf("      </div>\n");
  13.759 +  FinishXHTMLOutput();
  13.760 +}
  13.761 +
  13.762 +/* FUNCTION | BEGIN XHTML OUTPUT */
  13.763 +static void BeginXHTMLOutput(void) {
  13.764 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
  13.765 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
  13.766 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/menu.css\"?>\n");
  13.767 +  printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n");
  13.768 +  printf("                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
  13.769 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\" \n");
  13.770 +}
  13.771 +
  13.772 +/* FUNCTION | FINISH XHTML OUTPUT */
  13.773 +static void FinishXHTMLOutput(void) {
  13.774 +  printf("      </div>\n");
  13.775 +  printf("    </center>\n");
  13.776 +  printf("  </body>\n");
  13.777 +  printf("  <!--=====================================================================-->\n");
  13.778 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
  13.779 +  printf("  <!--=====================================================================-->\n");
  13.780 +  printf("  <!--                                                                     -->\n");
  13.781 +  printf("  <!--          All original textual and graphical site content:           -->\n");
  13.782 +  printf("  <!--                                                                     -->\n");
  13.783 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
  13.784 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
  13.785 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
  13.786 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
  13.787 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
  13.788 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
  13.789 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
  13.790 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
  13.791 +  printf("  <!--                                                                     -->\n");
  13.792 +  printf("  <!--=====================================================================-->\n");
  13.793 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
  13.794 +  printf("  <!--=====================================================================-->\n");
  13.795 +  printf("</html>");
  13.796 +}
  13.797 +
  13.798 +/***********************************************************************/
  13.799 +/*                  Copyright and Trademark Statement                  */
  13.800 +/***********************************************************************/
  13.801 +/*                                                                     */
  13.802 +/*          All original textual and graphical site content:           */
  13.803 +/*                                                                     */
  13.804 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
  13.805 +/*  reserved.  Reproduction in whole or in part without written        */
  13.806 +/*  permission is prohibited.  interos and the interos logos are       */
  13.807 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  13.808 +/*  product, and service names mentioned herein may be the properties  */
  13.809 +/*  of their respective owners.  Comments in the interos.org forums    */
  13.810 +/*  are the properties of their respective authors.  All software      */
  13.811 +/*  developed in the forums is open source and belongs to everyone.    */
  13.812 +/*                                                                     */
  13.813 +/***********************************************************************/
  13.814 +/*                      e-mail: info@interos.com                       */
  13.815 +/***********************************************************************/
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/c/new_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    14.3 @@ -0,0 +1,452 @@
    14.4 +/*************************************************/
    14.5 +/*  interos Standard Document Header - CGI in C  */
    14.6 +/*************************************************/
    14.7 +/*         URIs:  https://interos.com/new        */
    14.8 +/*                https://www.interos.com/new    */
    14.9 +/*       Source:  new.c                          */
   14.10 +/*  Description:  FastCGI for interos new menu   */
   14.11 +/*       Author:  Brent Angeline                 */
   14.12 +/*          CGI:  FastCGI in ISO/ANSI C          */
   14.13 +/*************************************************/
   14.14 +
   14.15 +/* PREPROCESSOR DIRECTIVES */
   14.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                                 */
   14.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, MENU_ITEM, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   14.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                                          */
   14.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy, strlen()                                                */
   14.20 +#include <unistd.h>         /*  F_OK, access()                                                                      */
   14.21 +
   14.22 +#ifndef INTEROS_H
   14.23 +
   14.24 +  /* TYPE DEFINITION */
   14.25 +  typedef struct {
   14.26 +    char *name;
   14.27 +    char *link;
   14.28 +    char *icon;
   14.29 +    struct MENU_ITEM *next;
   14.30 +  } MENU_ITEM;
   14.31 +
   14.32 +#endif
   14.33 +
   14.34 +/* FUNCTION PROTOTYPE DECLARATIONS */
   14.35 +static void RedirectToLoginPanel(void);
   14.36 +static void OutputNewMenu(void);
   14.37 +static void OutputGUI(const char *variableName, const char *variableValue);
   14.38 +static void BeginXHTMLOutput(void);
   14.39 +static void FinishXHTMLOutput(void);
   14.40 +
   14.41 +/* BEGIN MAIN PROGRAM */
   14.42 +int main(void) {
   14.43 +
   14.44 +  /* BEGIN FASTCGI */
   14.45 +  while (FCGI_Accept() >= 0) {
   14.46 +
   14.47 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
   14.48 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
   14.49 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
   14.50 +      RedirectToLoginPanel();
   14.51 +
   14.52 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   14.53 +    } else {
   14.54 +
   14.55 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
   14.56 +      char *cookie;
   14.57 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
   14.58 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
   14.59 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
   14.60 +        RedirectToLoginPanel();
   14.61 +      } else {
   14.62 +        char *variableName;
   14.63 +        if (!(variableName = malloc(cookieLength + 1))) {
   14.64 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
   14.65 +          RedirectToLoginPanel();
   14.66 +        } else {
   14.67 +          char *variableValue;
   14.68 +          if (!(variableValue = malloc(cookieLength + 1))) {
   14.69 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
   14.70 +            RedirectToLoginPanel();
   14.71 +
   14.72 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
   14.73 +          } else {
   14.74 +
   14.75 +            /* PROCESS COOKIE DATA */
   14.76 +            char *login, *password;
   14.77 +            INT c, i;
   14.78 +            login = password = NULL;
   14.79 +            c = 0;
   14.80 +            strcpy(cookie, getenv("HTTP_COOKIE"));
   14.81 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
   14.82 +              i = 0;
   14.83 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
   14.84 +                variableName[i] = cookie[c];
   14.85 +                ++c;
   14.86 +                ++i;
   14.87 +              }
   14.88 +              variableName[i] = '\0';
   14.89 +              ++c;
   14.90 +              i = 0;
   14.91 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
   14.92 +                variableValue[i] = cookie[c];
   14.93 +                ++c;
   14.94 +                ++i;
   14.95 +              }
   14.96 +              variableValue[i] = '\0';
   14.97 +              ++c;
   14.98 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
   14.99 +                ++c;
  14.100 +              }
  14.101 +              if (!login && !strcmp(variableName, "login")) {
  14.102 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
  14.103 +                  strcpy(login, variableValue);
  14.104 +                }
  14.105 +              } else if (!password && !strcmp(variableName, "password")) {
  14.106 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
  14.107 +                  strcpy(password, variableValue);
  14.108 +                }
  14.109 +              }
  14.110 +            }
  14.111 +
  14.112 +            /* IF LOGIN VALUE IS MISSING... */
  14.113 +            if (!login) {
  14.114 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
  14.115 +              RedirectToLoginPanel();
  14.116 +
  14.117 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
  14.118 +            } else {
  14.119 +
  14.120 +              /* VERIFY LOGIN AND PASSWORD */
  14.121 +              char *directory;
  14.122 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
  14.123 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
  14.124 +                RedirectToLoginPanel();
  14.125 +              } else {
  14.126 +                char *systemDirectory;
  14.127 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
  14.128 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
  14.129 +                  RedirectToLoginPanel();
  14.130 +                } else {
  14.131 +                  strcpy(directory, DIRECTORY);
  14.132 +                  strcat(directory, login);
  14.133 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
  14.134 +                  strcat(systemDirectory, login);
  14.135 +
  14.136 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
  14.137 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
  14.138 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
  14.139 +                    RedirectToLoginPanel();
  14.140 +
  14.141 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
  14.142 +                  } else {
  14.143 +
  14.144 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
  14.145 +                    char *passwordFileName;
  14.146 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
  14.147 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
  14.148 +                      RedirectToLoginPanel();
  14.149 +                    } else {
  14.150 +                      strcpy(passwordFileName, systemDirectory);
  14.151 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
  14.152 +
  14.153 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
  14.154 +                      if (access(passwordFileName, F_OK)) {
  14.155 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
  14.156 +                        RedirectToLoginPanel();
  14.157 +
  14.158 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
  14.159 +                      } else {
  14.160 +
  14.161 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
  14.162 +                        FILE *passwordFile;
  14.163 +
  14.164 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
  14.165 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
  14.166 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
  14.167 +                          RedirectToLoginPanel();
  14.168 +
  14.169 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
  14.170 +                        } else {
  14.171 +                          char *filePassword;
  14.172 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
  14.173 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
  14.174 +                            RedirectToLoginPanel();
  14.175 +                          } else {
  14.176 +                            char c;
  14.177 +                            i = 0;
  14.178 +
  14.179 +                            /* READ PASSWORD FROM PASSWORD FILE */
  14.180 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
  14.181 +                              filePassword[i] = c;
  14.182 +                              ++i;
  14.183 +                            }
  14.184 +                            filePassword[i] = '\0';
  14.185 +                            fclose(passwordFile);
  14.186 +
  14.187 +                            /* IF PASSWORD FAILS COMPARISON... */
  14.188 +                            if (strcmp(filePassword, password)) {
  14.189 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
  14.190 +                              RedirectToLoginPanel();
  14.191 +
  14.192 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
  14.193 +                            } else {
  14.194 +
  14.195 +                              /* LOAD SETTINGS VALUES FROM FILE(S) */
  14.196 +
  14.197 +                              /* LOAD MENU ITEMS FROM FILES */
  14.198 +
  14.199 +                              /* READ NEW MENU FILE */
  14.200 +
  14.201 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
  14.202 +                              char *text_file;
  14.203 +                              text_file = NULL;
  14.204 +
  14.205 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
  14.206 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
  14.207 +                                char *query;
  14.208 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
  14.209 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
  14.210 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
  14.211 +                                } else {
  14.212 +                                  strcpy(query, getenv("QUERY_STRING"));
  14.213 +                                  free(variableName);
  14.214 +                                  if (!(variableName = malloc(queryLength + 1))) {
  14.215 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
  14.216 +                                  } else {
  14.217 +                                    free(variableValue);
  14.218 +                                    if (!(variableValue = malloc(queryLength + 1))) {
  14.219 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
  14.220 +
  14.221 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
  14.222 +                                    } else {
  14.223 +
  14.224 +                                      /* PROCESS QUERY DATA */
  14.225 +                                      INT q = 0;
  14.226 +                                      i = 0;
  14.227 +                                      while ((q < queryLength) && (query[q] != '\0')) {
  14.228 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
  14.229 +                                          variableName[i] = query[q];
  14.230 +                                          ++q;
  14.231 +                                          ++i;
  14.232 +                                        }
  14.233 +                                        variableName[i] = '\0';
  14.234 +                                        ++q;
  14.235 +                                        i = 0;
  14.236 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
  14.237 +                                          variableValue[i] = query[q];
  14.238 +                                          ++q;
  14.239 +                                          ++i;
  14.240 +                                        }
  14.241 +                                        variableValue[i] = '\0';
  14.242 +                                        if (query[q] != '\0') {
  14.243 +                                          ++q;
  14.244 +                                        }
  14.245 +                                        if (!text_file && !strcmp(variableName, "text_file")) {
  14.246 +                                          if ((text_file = malloc(strlen(variableValue) + 1)) != 0) {
  14.247 +                                            strcpy(text_file, variableValue);
  14.248 +                                          }
  14.249 +                                        }
  14.250 +                                      }
  14.251 +                                      free(variableValue);
  14.252 +                                      variableValue = NULL;
  14.253 +                                    }
  14.254 +                                    free(variableName);
  14.255 +                                    variableName = NULL;
  14.256 +                                  }
  14.257 +                                  free(query);
  14.258 +                                }
  14.259 +                              }
  14.260 +                              /* IF THIS IS A CONTINUED SESSION... */
  14.261 +
  14.262 +                                /* LOAD SESSION FROM FILE */
  14.263 +
  14.264 +                              /* OUTPUT GUI COMPONENT(S) BASED ON VARIABLES */
  14.265 +                              if (text_file) {
  14.266 +                                OutputGUI("text_file", text_file);
  14.267 +                              } else {
  14.268 +
  14.269 +                                /* OUTPUT XHTML FOR NEW MENU */
  14.270 +                                OutputNewMenu();
  14.271 +                              }
  14.272 +                            }
  14.273 +                            free(filePassword);
  14.274 +                          }
  14.275 +                        }
  14.276 +                      }
  14.277 +                      free(passwordFileName);
  14.278 +                    }
  14.279 +                  }
  14.280 +                  free(systemDirectory);
  14.281 +                }
  14.282 +                free(directory);
  14.283 +              }
  14.284 +              free(login);
  14.285 +            }
  14.286 +            free(password);
  14.287 +            free(variableValue);
  14.288 +          }
  14.289 +          free(variableName);
  14.290 +        }
  14.291 +        free(cookie);
  14.292 +      }
  14.293 +    }
  14.294 +  }
  14.295 +  return 0;
  14.296 +}
  14.297 +
  14.298 +/* FUNCTION | OUTPUT XHTML FOR interos FRAMESET GRAPHICAL USER INTERFACE */
  14.299 +static void OutputGUI(const char *variableName, const char *variableValue) {
  14.300 +  BeginXHTMLOutput();
  14.301 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
  14.302 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
  14.303 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
  14.304 +  printf("  <!--========================================================-->\n");
  14.305 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
  14.306 +  printf("  <!--========================================================-->\n");
  14.307 +  printf("  <!--    URIs:  https://interos.com/new?                     -->\n");
  14.308 +  printf("  <!--           https://www.interos.com/new?                 -->\n");
  14.309 +  printf("  <!--   Title:  interos                                      -->\n");
  14.310 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
  14.311 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
  14.312 +  printf("  <!--========================================================-->\n");
  14.313 +  printf("  <head>\n");
  14.314 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  14.315 +  printf("    <meta name=\"title\" content=\"interos\" />\n");
  14.316 +  printf("    <meta name=\"description\" content=\"internet operating system\" />\n");
  14.317 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  14.318 +  printf("    <meta name=\"copyright\" \n");
  14.319 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  14.320 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  14.321 +  printf("    <title>interos</title>\n");
  14.322 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  14.323 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  14.324 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  14.325 +  printf("          media=\"screen, projection\" />\n");
  14.326 +  printf("    <script type=\"text/javascript\" src=\"/js/interos.js\"></script>\n");
  14.327 +  printf("  </head>\n");
  14.328 +  printf("  <frameset rows=\"72,*,72\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
  14.329 +  printf("    <frame name=\"top\" src=\"/top\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" noresize=\"noresize\" scrolling=\"no\" />\n");
  14.330 +  if (variableName && variableValue) {
  14.331 +    printf("    <frame name=\"content\" src=\"/content?%s=%s\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" noresize=\"noresize\" scrolling=\"no\" />\n", variableName, variableValue);
  14.332 +  } else {
  14.333 +    printf("    <frame name=\"content\" src=\"/content\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" noresize=\"noresize\" scrolling=\"no\" />\n");
  14.334 +  }
  14.335 +  printf("    <frame name=\"bottom\" src=\"/bottom\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" noresize=\"noresize\" scrolling=\"no\" />\n");
  14.336 +  printf("    <noframes>\n");
  14.337 +  printf("      <body id=\"body\">\n");
  14.338 +  printf("        <div id=\"interosContainer\">\n");
  14.339 +  printf("          <div id=\"interosContent\">\n");
  14.340 +  printf("            <h1>interos menu</h1>\n");
  14.341 +  printf("            <ol>\n");
  14.342 +  printf("              <li><a id=\"newLink\" href=\"/interos?menu=new\">new</a></li>\n");
  14.343 +  printf("              <li><a id=\"openLink\" href=\"/interos?menu=open\">open</a></li>\n");
  14.344 +  printf("              <li><a id=\"nextLink\" href=\"/interos?menu=next\">next</a></li>\n");
  14.345 +  printf("              <li><a id=\"settingsLink\" href=\"/interos?menu=settings\">settings</a></li>\n");
  14.346 +  printf("            </ol>\n");
  14.347 +  printf("          </div>\n");
  14.348 +  printf("        </div>\n");
  14.349 +  printf("      </body>\n");
  14.350 +  printf("    </noframes>\n");
  14.351 +  printf("  </frameset>\n");
  14.352 +  FinishXHTMLOutput();
  14.353 +}
  14.354 +
  14.355 +/* FUNCTION | OUTPUT XHTML FOR NEW MENU */
  14.356 +static void OutputNewMenu(void) {
  14.357 +  BeginXHTMLOutput();
  14.358 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
  14.359 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
  14.360 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
  14.361 +  printf("  <!--========================================================-->\n");
  14.362 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
  14.363 +  printf("  <!--========================================================-->\n");
  14.364 +  printf("  <!--    URIs:  https://interos.com/new                      -->\n");
  14.365 +  printf("  <!--           https://www.interos.com/new                  -->\n");
  14.366 +  printf("  <!--   Title:  interos new                                  -->\n");
  14.367 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
  14.368 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
  14.369 +  printf("  <!--========================================================-->\n");
  14.370 +  printf("  <head>\n");
  14.371 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  14.372 +  printf("    <meta name=\"title\" content=\"interos new\" />\n");
  14.373 +  printf("    <meta name=\"description\" content=\"new menu for interos\" />\n");
  14.374 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  14.375 +  printf("    <meta name=\"copyright\" \n");
  14.376 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  14.377 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  14.378 +  printf("    <title>interos new</title>\n");
  14.379 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  14.380 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  14.381 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  14.382 +  printf("          media=\"screen, projection\" />\n");
  14.383 +  printf("    <script type=\"text/javascript\" src=\"/js/interos_new.js\"></script>\n");
  14.384 +  printf("  </head>\n");
  14.385 +  printf("  <frameset rows=\"*,72\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
  14.386 +  printf("    <frame name=\"menu\" src=\"/menu?name=new\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" noresize=\"noresize\" scrolling=\"no\" />\n");
  14.387 +  printf("    <frame name=\"button\" src=\"/bottom?button=new\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" noresize=\"noresize\" scrolling=\"no\" />\n");
  14.388 +  printf("    <noframes>\n");
  14.389 +  printf("      <body id=\"body\">\n");
  14.390 +  printf("        <div id=\"newContainer\">\n");
  14.391 +  printf("          <div id=\"newContent\">\n");
  14.392 +  printf("            <div id=\"newEntries\">\n");
  14.393 +  printf("              <p><a href=\"/interos?new=text_file\">text file</a></p>\n");
  14.394 +  printf("            </div>\n");
  14.395 +  printf("            <div id=\"newLink\"><a href=\"/interos\">new</a></div>\n");
  14.396 +  printf("          </div>\n");
  14.397 +  printf("        </div>\n");
  14.398 +  printf("      </body>\n");
  14.399 +  printf("    </noframes>\n");
  14.400 +  printf("  </frameset>\n");
  14.401 +  FinishXHTMLOutput();
  14.402 +}
  14.403 +
  14.404 +/* FUNCTION | BEGIN XHTML OUTPUT */
  14.405 +static void BeginXHTMLOutput(void) {
  14.406 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
  14.407 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
  14.408 +}
  14.409 +
  14.410 +/* FUNCTION | FINISH XHTML OUTPUT */
  14.411 +static void FinishXHTMLOutput(void) {
  14.412 +  printf("  <!--=====================================================================-->\n");
  14.413 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
  14.414 +  printf("  <!--=====================================================================-->\n");
  14.415 +  printf("  <!--                                                                     -->\n");
  14.416 +  printf("  <!--          All original textual and graphical site content:           -->\n");
  14.417 +  printf("  <!--                                                                     -->\n");
  14.418 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
  14.419 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
  14.420 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
  14.421 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
  14.422 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
  14.423 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
  14.424 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
  14.425 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
  14.426 +  printf("  <!--                                                                     -->\n");
  14.427 +  printf("  <!--=====================================================================-->\n");
  14.428 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
  14.429 +  printf("  <!--=====================================================================-->\n");
  14.430 +  printf("</html>");
  14.431 +}
  14.432 +
  14.433 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
  14.434 +static void RedirectToLoginPanel(void) {
  14.435 +  printf("Location: login\r\n\r\n");
  14.436 +}
  14.437 +
  14.438 +/***********************************************************************/
  14.439 +/*                  Copyright and Trademark Statement                  */
  14.440 +/***********************************************************************/
  14.441 +/*                                                                     */
  14.442 +/*          All original textual and graphical site content:           */
  14.443 +/*                                                                     */
  14.444 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
  14.445 +/*  reserved.  Reproduction in whole or in part without written        */
  14.446 +/*  permission is prohibited.  interos and the interos logos are       */
  14.447 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  14.448 +/*  product, and service names mentioned herein may be the properties  */
  14.449 +/*  of their respective owners.  Comments in the interos.org forums    */
  14.450 +/*  are the properties of their respective authors.  All software      */
  14.451 +/*  developed in the forums is open source and belongs to everyone.    */
  14.452 +/*                                                                     */
  14.453 +/***********************************************************************/
  14.454 +/*                      e-mail: info@interos.com                       */
  14.455 +/***********************************************************************/
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/c/new_user_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    15.3 @@ -0,0 +1,826 @@
    15.4 +/****************************************************/
    15.5 +/*   interos Standard Document Header - CGI in C    */
    15.6 +/****************************************************/
    15.7 +/*         URIs:  https://interos.com/new_user      */
    15.8 +/*                https://www.interos.com/new_user  */
    15.9 +/*       Source:  new_user.c                        */
   15.10 +/*  Description:  FastCGI for interos new_user      */
   15.11 +/*       Author:  Brent Angeline                    */
   15.12 +/*          CGI:  FastCGI in ISO/ANSI C             */
   15.13 +/****************************************************/
   15.14 +
   15.15 +/* PREPROCESSOR DIRECTIVES */
   15.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fread(), printf()                                                                           */
   15.17 +#include "interos.h"        /*  DIRECTORY, INT, DIRECTORY_COMMAND, ECHO_COMMAND, PASSWORD_OUT, SYSTEM_DIRECTORY, SYSTEM_DIRECTORY_COMMAND  */
   15.18 +#include <ctype.h>          /*  tolower()                                                                                                  */
   15.19 +#include <stdlib.h>         /*  free(), getenv(), malloc(), system()                                                                       */
   15.20 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                                                     */
   15.21 +#include <unistd.h>         /*  F_OK, access()                                                                                             */
   15.22 +
   15.23 +static void Old(void);
   15.24 +
   15.25 +/* BEGIN MAIN PROGRAM */
   15.26 +int main(void) {
   15.27 +
   15.28 +  /* BEGIN FASTCGI */
   15.29 +  while (FCGI_Accept() >= 0) {
   15.30 +
   15.31 +    /* IF POST DATA DOESN'T EXIST OR IS TOO LONG... */
   15.32 +    if (!getenv("CONTENT_LENGTH") || (sizeof(STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10)) > sizeof(INT))) {
   15.33 +      char *status = NULL;
   15.34 +
   15.35 +      /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
   15.36 +      if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
   15.37 +
   15.38 +        /* ATTEMPT TO ALLOCATE MEMORY FOR QUERY VARIABLES */
   15.39 +        char *query;
   15.40 +        INT queryLength = strlen(getenv("QUERY_STRING"));
   15.41 +        if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
   15.42 +          /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
   15.43 +        } else {
   15.44 +          char *variableName;
   15.45 +          strcpy(query, getenv("QUERY_STRING"));
   15.46 +          if (!(variableName = malloc(queryLength + 1))) {
   15.47 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
   15.48 +          } else {
   15.49 +            char *variableValue;
   15.50 +            if (!(variableValue = malloc(queryLength + 1))) {
   15.51 +              /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
   15.52 +
   15.53 +            /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
   15.54 +            } else {
   15.55 +
   15.56 +              /* PROCESS QUERY DATA */
   15.57 +              INT q = 0;
   15.58 +              i = 0;
   15.59 +              while ((q < queryLength) && (query[q] != '\0')) {
   15.60 +                while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
   15.61 +                  variableName[i] = query[q];
   15.62 +                  ++q;
   15.63 +                  ++i;
   15.64 +                }
   15.65 +                variableName[i] = '\0';
   15.66 +                ++q;
   15.67 +                i = 0;
   15.68 +                while ((query[q] != '&') && (query[q] != '\0')) {
   15.69 +                  variableValue[i] = query[q];
   15.70 +                  ++q;
   15.71 +                  ++i;
   15.72 +                }
   15.73 +                variableValue[i] = '\0';
   15.74 +                if (query[q] != '\0') {
   15.75 +                  ++q;
   15.76 +                }
   15.77 +                if (!status && !strcmp(variableName, "status")) {
   15.78 +                  if ((status = malloc(strlen(variableValue) + 1)) != 0) {
   15.79 +                    strcpy(status, variableValue);
   15.80 +                  }
   15.81 +                }
   15.82 +              }
   15.83 +              free(variableValue);
   15.84 +            }
   15.85 +            free(variableName);
   15.86 +          }
   15.87 +          free(query);
   15.88 +        }
   15.89 +      }
   15.90 +
   15.91 +      /* DISPLAY CREATE LOGIN PANEL */
   15.92 +      printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
   15.93 +      printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
   15.94 +      printf("<?xml-stylesheet type=\"text/css\" href=\"/style/login.css\"?>\n");
   15.95 +      printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n");
   15.96 +      printf("                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
   15.97 +      printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
   15.98 +      printf("  <!--=================================================-->\n");
   15.99 +      printf("  <!--    interos Standard Document Header - Markup    -->\n");
  15.100 +      printf("  <!--=================================================-->\n");
  15.101 +      printf("  <!--    URIs:  https://interos.com/new_user          -->\n");
  15.102 +      printf("  <!--           https://www.interos.com/new_user      -->\n");
  15.103 +      printf("  <!--   Title:  new interos user                      -->\n");
  15.104 +      printf("  <!--  Author:  Brent Angeline                        -->\n");
  15.105 +      printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->\n");
  15.106 +      printf("  <!--=================================================-->\n");
  15.107 +      printf("  <head>\n");
  15.108 +      printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  15.109 +      printf("    <meta name=\"title\" content=\"new interos user\" />\n");
  15.110 +      printf("    <meta name=\"description\" content=\"create your login\" />\n");
  15.111 +      printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  15.112 +      printf("    <meta name=\"copyright\" \n");
  15.113 +      printf("          content=\"Copyright &copy; 2001-2008 Brent Angeline and interos LLC\" />\n");
  15.114 +      printf("    <meta name=\"robots\" content=\"index, nofollow, noarchive\" />\n");
  15.115 +      printf("    <title>new interos user</title>\n");
  15.116 +      printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  15.117 +      printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  15.118 +      printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/login.css\" \n");
  15.119 +      printf("          media=\"screen, projection\" />\n");
  15.120 +      printf("    <script type=\"text/javascript\" src=\"/js/login.js\"></script>\n");
  15.121 +      printf("  </head>\n");
  15.122 +      printf("  <body id=\"body\">\n");
  15.123 +      printf("    <center>\n");
  15.124 +      printf("      <p id=\"navigation\">\n");
  15.125 +      printf("        <a href=\"/about\">about</a> | \n");
  15.126 +      printf("        <a href=\"/blog\">blog</a> | \n");
  15.127 +      printf("        <a href=\"/code\">code</a> | \n");
  15.128 +      printf("        <a href=\"https://interos.org/\">develop</a> | \n");
  15.129 +      printf("        <a href=\"/e-mail\">e-mail</a> | \n");
  15.130 +      printf("        <a href=\"/f.a.q.\">f.a.q.</a> | \n");
  15.131 +      printf("        <a href=\"/gear\">gear</a> | \n");
  15.132 +      printf("        <a href=\"/help\">help</a>\n");
  15.133 +      printf("      </p>\n");
  15.134 +      printf("      <form id=\"loginForm\" name=\"loginForm\" action=\"new_user\" method=\"post\">\n");
  15.135 +      printf("        <table id=\"mainPanel\">\n");
  15.136 +      printf("          <thead>\n");
  15.137 +      printf("            <tr>\n");
  15.138 +      printf("              <th colspan=\"3\"><center>\n");
  15.139 +      printf("                                <div id=\"title\">\n");
  15.140 +      printf("                                  <h1>\n");
  15.141 +      printf("                                    <a href=\"/\">interos</a>\n");
  15.142 +      printf("                                  </h1>\n");
  15.143 +      printf("                                  <h2>\n");
  15.144 +      printf("                                    create your login\n");
  15.145 +      printf("                                  </h2>\n");
  15.146 +      printf("                                </div>\n");
  15.147 +      printf("                              </center></th>\n");
  15.148 +      printf("            </tr>\n");
  15.149 +      printf("          </thead>\n");
  15.150 +      printf("          <tfoot>\n");
  15.151 +      printf("            <tr>\n");
  15.152 +      printf("              <td colspan=\"3\"><br /></td>\n");
  15.153 +      printf("            </tr>\n");
  15.154 +      printf("          </tfoot>\n");
  15.155 +      printf("          <tbody>\n");
  15.156 +      printf("            <tr>\n");
  15.157 +      printf("              <td><label for=\"login\">login:</label>&nbsp;</td>\n");
  15.158 +      printf("              <td><input id=\"login\" name=\"login\" type=\"text\" \n");
  15.159 +      printf("                         size=\"16\"  maxlength=\"16\" /></td>\n");
  15.160 +      printf("            </tr>\n");
  15.161 +      printf("            <tr>\n");
  15.162 +      printf("              <td><label for=\"password\">password:</label>&nbsp;</td>\n");
  15.163 +      printf("              <td><input id=\"password\" name=\"password\" type=\"password\" \n");
  15.164 +      printf("                         size=\"16\"     maxlength=\"16\" /></td>\n");
  15.165 +      printf("            </tr>\n");
  15.166 +      printf("            <tr>\n");
  15.167 +      printf("              <td><label for=\"verify\">password:</label>&nbsp;</td>\n");
  15.168 +      printf("              <td><input id=\"verify\" name=\"verify\" type=\"password\" \n");
  15.169 +      printf("                         size=\"16\"   maxlength=\"16\" /></td>\n");
  15.170 +      printf("              <td rowspan=\"2\"><div id=\"submitButton\">\n");
  15.171 +      printf("                                &nbsp;<input type=\"submit\" \n");
  15.172 +      printf("                                             value=\"login &raquo;\" />\n");
  15.173 +      printf("                              </div></td>\n");
  15.174 +      printf("            </tr>\n");
  15.175 +      printf("          </tbody>\n");
  15.176 +      printf("        </table>\n");
  15.177 +      printf("      </form>\n");
  15.178 +      printf("      <p id=\"newUser\">\n");
  15.179 +      printf("        <strong>* enter password twice</strong><br />\n");
  15.180 +      printf("        to create your login<br />\n");
  15.181 +      printf("        <a href=\"/login\">&laquo; back to login</a>\n");
  15.182 +      printf("      </p>\n");
  15.183 +      printf("      <p>\n");
  15.184 +      printf("        <br />\n");
  15.185 +      printf("      </p>\n");
  15.186 +      printf("      <p id=\"copyrightDates\">\n");
  15.187 +      printf("        &copy; 2001&#8211;2008 interos\n");
  15.188 +      printf("      </p>\n");
  15.189 +      printf("    </center>\n");
  15.190 +      printf("  </body>\n");
  15.191 +      printf("  <!--=====================================================================-->\n");
  15.192 +      printf("  <!--                  Copyright and Trademark Statement                  -->\n");
  15.193 +      printf("  <!--=====================================================================-->\n");
  15.194 +      printf("  <!--                                                                     -->\n");
  15.195 +      printf("  <!--          All original textual and graphical site content:           -->\n");
  15.196 +      printf("  <!--                                                                     -->\n");
  15.197 +      printf("  <!--  Copyright 2001-2008 Brent Angeline and interos LLC.  All rights    -->\n");
  15.198 +      printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
  15.199 +      printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
  15.200 +      printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
  15.201 +      printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
  15.202 +      printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
  15.203 +      printf("  <!--  are the properties of their respective authors.  All software      -->\n");
  15.204 +      printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
  15.205 +      printf("  <!--                                                                     -->\n");
  15.206 +      printf("  <!--=====================================================================-->\n");
  15.207 +      printf("  <!--                      e-mail: info@interos.com                       -->\n");
  15.208 +      printf("  <!--=====================================================================-->\n");
  15.209 +      printf("</html>");
  15.210 +
  15.211 +      /* CLEAN UP AFTER QUERY DATA PROCESSING */
  15.212 +      free(status);
  15.213 +
  15.214 +    /* OTHERWISE, IF POST DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  15.215 +    } else {
  15.216 +
  15.217 +      /* SET VARIABLES BASED ON POST DATA */
  15.218 +
  15.219 +      /* ATTEMPT TO ALLOCATE MEMORY FOR POST VARIABLES */
  15.220 +      char *post;
  15.221 +      INT postLength = STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10);
  15.222 +      if ((postLength < 1) || !(post = malloc(postLength + 1))) {
  15.223 +        /** ERROR | CANNOT ALLOCATE MEMORY FOR POST DATA > REDIRECT TO LOGIN CREATION PANEL **/
  15.224 +        printf("Location: new_user?status=try_again\r\n\r\n");
  15.225 +      } else {
  15.226 +        char *variableName;
  15.227 +        if (!(variableName = malloc(postLength + 1))) {
  15.228 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > REDIRECT TO LOGIN CREATION PANEL **/
  15.229 +            printf("Location: new_user?status=try_again\r\n\r\n");
  15.230 +        } else {
  15.231 +          char *variableValue;
  15.232 +          if (!(variableValue = malloc(postLength + 1))) {
  15.233 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > REDIRECT TO LOGIN CREATION PANEL **/
  15.234 +            printf("Location: new_user?status=try_again\r\n\r\n");
  15.235 +          } else {
  15.236 +
  15.237 +            /* PROCESS POST DATA */
  15.238 +            char *login, *password, *verify;
  15.239 +            INT  i, j, p;
  15.240 +            login = password = verify = NULL;
  15.241 +            j = p = 0;
  15.242 +            fread(post, postLength, 1, stdin);
  15.243 +            post[postLength] = '\0';
  15.244 +            while ((p < postLength) && (post[p] != '\0')) {
  15.245 +              i = 0;
  15.246 +              while ((p < postLength) && (post[p] != '=') && (post[p] != '\0')) {
  15.247 +                variableName[i] = post[p];
  15.248 +                ++p;
  15.249 +                ++i;
  15.250 +              }
  15.251 +              variableName[i] = '\0';
  15.252 +              ++p;
  15.253 +              i = 0;
  15.254 +              while ((p < postLength) && (post[p] != '&') && (post[p] != '\0')) {
  15.255 +                variableValue[i] = post[p];
  15.256 +                ++p;
  15.257 +                ++i;
  15.258 +              }
  15.259 +              variableValue[i] = '\0';
  15.260 +              if (post[p] != '\0') {
  15.261 +                ++p;
  15.262 +              }
  15.263 +              if (!login && !strcmp(variableName, "login")) {
  15.264 +                if (!(login = malloc(strlen(variableValue) + 1))) {
  15.265 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR LOGIN VARIABLE > REDIRECT TO LOGIN CREATION PANEL **/
  15.266 +                  printf("Location: new_user?status=try_again\r\n\r\n");
  15.267 +                } else {
  15.268 +                  strcpy(login, variableValue);
  15.269 +                  for (j = 0; j < strlen(login); ++j) {
  15.270 +                    login[j] = tolower(login[j]);
  15.271 +                  }
  15.272 +                }
  15.273 +              } else if (!password && !strcmp(variableName, "password")) {
  15.274 +                if (!(password = malloc(strlen(variableValue) + 1))) {
  15.275 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD VARIABLE > REDIRECT TO LOGIN CREATION PANEL **/
  15.276 +                  printf("Location: new_user?status=try_again\r\n\r\n");
  15.277 +                } else {
  15.278 +                  strcpy(password, variableValue);
  15.279 +                }
  15.280 +              } else if (!verify && !strcmp(variableName, "verify")) {
  15.281 +                if (!(verify = malloc(strlen(variableValue) + 1))) {
  15.282 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD CONFIRM VARIABLE > REDIRECT TO LOGIN CREATION PANEL **/
  15.283 +                  printf("Location: new_user?status=try_again\r\n\r\n");
  15.284 +                } else {
  15.285 +                  strcpy(verify, variableValue);
  15.286 +                }
  15.287 +              }
  15.288 +            }
  15.289 +
  15.290 +            /* IF LOGIN VALUE IS MISSING... */
  15.291 +            if (!login) {
  15.292 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN CREATION PANEL **/
  15.293 +              printf("Location: new_user?status=try_again\r\n\r\n");
  15.294 +
  15.295 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
  15.296 +            } else {
  15.297 +
  15.298 +              /* CHECK LOGIN FOR ILLEGAL CHARACTERS */
  15.299 +              char illegalCharacter = 0;
  15.300 +              for (i = 0; i < strlen(login); ++i) {
  15.301 +                if (!(((login[i] >= 'a') && (login[i] <= 'z')) || ((login[i] >= '0') && (login[i] <= '9')))) {
  15.302 +                  illegalCharacter = 1;
  15.303 +                }
  15.304 +              }
  15.305 +              if (illegalCharacter) {
  15.306 +                /** ERROR | LOGIN OR PASSWORD CONTAINS ILLEGAL CHARACTERS > REDIRECT TO LOGIN CREATION PANEL **/ 
  15.307 +                printf("Location: new_user?status=illegal_characters\r\n\r\n");
  15.308 +              } else {
  15.309 +
  15.310 +                /* CHECK LOGIN AVAILABILITY */
  15.311 +                char *directory;
  15.312 +                if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
  15.313 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN CREATION PANEL **/
  15.314 +                  printf("Location: new_user?status=try_again\r\n\r\n");
  15.315 +                } else {
  15.316 +                  char *systemDirectory;
  15.317 +                  if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
  15.318 +                    /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN CREATION PANEL **/
  15.319 +                    printf("Location: new_user?status=try_again\r\n\r\n");
  15.320 +                  } else {
  15.321 +                    strcpy(directory, DIRECTORY);
  15.322 +                    strcat(directory, login);
  15.323 +                    strcpy(systemDirectory, SYSTEM_DIRECTORY);
  15.324 +                    strcat(systemDirectory, login);
  15.325 +
  15.326 +                    /* IF LOGIN EXISTS... */
  15.327 +                    if (!access(directory, F_OK) || !access(systemDirectory, F_OK)) {
  15.328 +
  15.329 +                      /* REDIRECT TO LOGIN CREATION PANEL BECAUSE LOGIN ALREADY EXISTS */
  15.330 +                      printf("Location: new_user?status=login_exists\r\n\r\n");
  15.331 +
  15.332 +                    /* OTHERWISE, IF LOGIN DOESN'T EXIST... */
  15.333 +                    } else {
  15.334 +
  15.335 +                      /* IF NO PASSWORD FROM POST VARIABLES... */
  15.336 +                      if (!password) {
  15.337 +                        password = malloc(1);
  15.338 +                        password[0] = '\0';
  15.339 +                      }
  15.340 +
  15.341 +                      /* IF NO PASSWORD CONFIRMATION FROM POST VARIABLES... */
  15.342 +                      if (!password) {
  15.343 +                        verify = malloc(1);
  15.344 +                        verify[0] = '\0';
  15.345 +                      }
  15.346 +
  15.347 +                      /* IF PASSWORD FAILS CONFIRMATION... */
  15.348 +                      if (strcmp(password, verify)) {
  15.349 +
  15.350 +                        /* REDIRECT TO LOGIN CREATION PANEL AND RECONFIRM PASSWORD */
  15.351 +                        printf("Location: new_user?status=reconfirm_password\r\n\r\n");
  15.352 +
  15.353 +                      /* OTHERWISE, IF PASSWORD PASSES CONFIRMATION... */
  15.354 +                      } else {
  15.355 +
  15.356 +                        /* CREATE USER ACCOUNT */
  15.357 +                        char *systemDirectoryCommand;
  15.358 +                        char *directoryCommand;
  15.359 +                        char *passwordCommand;
  15.360 +                        if (!(systemDirectoryCommand = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY_COMMAND) + 1))) {
  15.361 +                          /** ERROR | CANNOT ALLOCATE MEMORY FOR CREATE SYSTEM DIRECTORY COMMAND > REDIRECT TO LOGIN CREATION PANEL **/
  15.362 +                          printf("Location: new_user?status=try_again\r\n\r\n");
  15.363 +                        } else {
  15.364 +                          if (!(directoryCommand = malloc(strlen(login) + strlen(DIRECTORY_COMMAND) + 1))) {
  15.365 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR CREATE DIRECTORY COMMAND > REDIRECT TO LOGIN CREATION PANEL **/
  15.366 +                            printf("Location: new_user?status=try_again\r\n\r\n");
  15.367 +                          } else {
  15.368 +                            if (!(passwordCommand = malloc(strlen(password) + strlen(login) + strlen(ECHO_COMMAND) + strlen(PASSWORD_OUT) + strlen(PASSWORD_FILE_NAME) + 1))) {
  15.369 +                              /** ERROR | CANNOT ALLOCATE MEMORY FOR CREATE PASSWORD FILE COMMAND > REDIRECT TO LOGIN CREATION PANEL **/
  15.370 +                              printf("Location: new_user?status=try_again\r\n\r\n");
  15.371 +                            } else {
  15.372 +                              strcpy(systemDirectoryCommand, SYSTEM_DIRECTORY_COMMAND);
  15.373 +                              strcat(systemDirectoryCommand, login);
  15.374 +                              system(systemDirectoryCommand);
  15.375 +                              strcpy(directoryCommand, DIRECTORY_COMMAND);
  15.376 +                              strcat(directoryCommand, login);
  15.377 +                              system(directoryCommand);
  15.378 +                              strcpy(passwordCommand, ECHO_COMMAND);
  15.379 +                              strcat(passwordCommand, password);
  15.380 +                              strcat(passwordCommand, PASSWORD_OUT); 
  15.381 +                              strcat(passwordCommand, login);
  15.382 +                              strcat(passwordCommand, PASSWORD_FILE_NAME);
  15.383 +                              system(passwordCommand);
  15.384 +
  15.385 +                              /* SET COOKIES */
  15.386 +                              printf("Set-Cookie: login=%s; path=/; secure\r\n", login);
  15.387 +                              printf("Set-Cookie: password=%s; path=/; secure\r\n", password);
  15.388 +
  15.389 +                              /* REDIRECT LOGGED INTO interos */
  15.390 +                              printf("Location: welcome\r\n\r\n");
  15.391 +                              free(passwordCommand);
  15.392 +                            }
  15.393 +                            free(directoryCommand);
  15.394 +                          }
  15.395 +                          free(systemDirectoryCommand);
  15.396 +                        }
  15.397 +                      }
  15.398 +                    }
  15.399 +                    free(systemDirectory);
  15.400 +                  }
  15.401 +                  free(directory);
  15.402 +                }
  15.403 +              }
  15.404 +              free(login);
  15.405 +            }
  15.406 +            free(password);
  15.407 +            free(verify);
  15.408 +            free(variableValue);
  15.409 +          }
  15.410 +          free(variableName);
  15.411 +        }
  15.412 +        free(post);
  15.413 +      }
  15.414 +    }
  15.415 +  }
  15.416 +  return 0;
  15.417 +}
  15.418 +
  15.419 +static void Old(void) {
  15.420 +      char *status == NULL;
  15.421 +
  15.422 +      /* DISPLAY CREATE LOGIN PANEL */
  15.423 +      printf("Content-type: text/html\n\n");
  15.424 +      printf("<!--=======================================================-->\n");
  15.425 +      printf("<!--  interos.com Standard Document Model Header - Markup  -->\n");
  15.426 +      printf("<!--=======================================================-->\n");
  15.427 +      printf("<!--       URIs:  https://www.interos.com/sys/new_user     -->\n");
  15.428 +      printf("<!--              interos.com/sys/new_user                 -->\n");
  15.429 +      printf("<!--      Title:  interos > create login                   -->\n");
  15.430 +      printf("<!--     Author:  Brent Angeline                           -->\n");
  15.431 +      printf("<!--     Markup:  Dynamic XHTML                            -->\n");
  15.432 +      printf("<!--=======================================================-->\n");
  15.433 +      printf("<html>");
  15.434 +        printf("<head>");
  15.435 +          printf("<title>interos > create login</title>");
  15.436 +          printf("<link rel=\"stylesheet\" type=\"text/css\" href=\"css/new_user/style.css\" />");
  15.437 +          printf("<script language=\"javascript\" type=\"text/javascript\" src=\"js/new_user/javascript.js\"></script>");
  15.438 +          printf("<noscript>Your browser doesn't support true DHTML. Get one that does <a href=\"http://www.mozilla.org/\">here</a> or <a href=\"http://home.netscape.com/computing/download/\">here</a>. If you have JavaScript disabled, please enable it and click reload on your browser.</noscript>");
  15.439 +        printf("</head>");
  15.440 +        printf("<body onload=\"iOnLoad()\">");
  15.441 +          printf("<table width=\"100%%\" height=\"100%%\" cellpadding=\"0\" cellspacing=\"0\">");
  15.442 +            printf("<tr>");
  15.443 +              printf("<td width=\"50%%\" height=\"72\" align=\"left\"><a class=\"iOpenFaded\" onmouseover=\"iOpenOn()\" href=\"javascript:explain('open')\"><img width=\"72\" height=\"72\" align=\"middle\" alt=\"open\" src=\"images/login/open_faded.gif\" />&nbsp;open</a></td>");
  15.444 +              printf("<td width=\"50%%\" height=\"72\" align=\"right\"><a class=\"iNextFaded\" onmouseover=\"iNextOn()\" href=\"javascript:explain('next')\">next&nbsp;<img width=\"72\" height=\"72\" align=\"middle\" alt=\"next\" src=\"images/login/next_faded.gif\" /></a></td>");
  15.445 +            printf("</tr>");
  15.446 +            printf("<tr>");
  15.447 +              printf("<td colspan=\"2\" height=\"100%%\" align=\"center\" valign=\"middle\"><table width=\"384\" class=\"iPanel\" cellpadding=\"0\" cellspacing=\"0\">");
  15.448 +                  printf("<tr>");
  15.449 +                    printf("<td><img width=\"12\" height=\"12\" src=\"images/login/top_left.gif\" /></td>");
  15.450 +                    printf("<td><img width=\"354\" height=\"12\" src=\"images/login/top.gif\" /></td>");
  15.451 +                    printf("<td><img width=\"18\" height=\"12\" src=\"images/login/top_right.gif\" /></td>");
  15.452 +                  printf("</tr>");
  15.453 +                  printf("<tr>");
  15.454 +                    printf("<td><img width=\"12\" height=\"184\" src=\"images/login/left.gif\" /></td>");
  15.455 +                    printf("<td align=\"center\" valign=\"top\"><img width=\"52\" height=\"60\" alt=\"interos\" src=\"images/login/i.gif\" /><img width=\"284\" height=\"60\" alt=\"interos\" src=\"images/login/nteros.gif\" /><br />");
  15.456 +                      printf("<span class=\"iPanelLarge\">&mdash; &nbsp; create login &nbsp; &mdash;</span><br />");
  15.457 +                      printf("<span class=\"iSmallBreak\"><br /></span>");
  15.458 +                      printf("<span class=\"iSmallBreak\"><br /></span>");
  15.459 +                      printf("<form name=\"loginForm\" action=\"new_user\" method=\"POST\">");
  15.460 +                        printf("<table width=\"354\" cellpadding=\"0\" cellspacing=\"0\">");
  15.461 +                          printf("<tr>");
  15.462 +                            printf("<td><table width=\"276\" cellpadding=\"0\" cellspacing=\"0\">");
  15.463 +                                printf("<tr>");
  15.464 +                                  printf("<td width=\"110\" height=\"25\">&nbsp; login:</td>");
  15.465 +                                  printf("<td width=\"166\" height=\"25\"><input name=\"login\" type=\"text\" maxlength=\"16\" size=\"19\" /></td>");
  15.466 +                                printf("</tr>");
  15.467 +                                printf("<tr>");
  15.468 +                                  printf("<td width=\"110\" height=\"25\">&nbsp; password:</td>");
  15.469 +                                  printf("<td width=\"166\" height=\"25\"><input name=\"password\" type=\"password\" maxlength=\"16\" size=\"19\" /></td>");
  15.470 +                                printf("</tr>");
  15.471 +                                printf("<tr>");
  15.472 +                                  printf("<td width=\"110\" height=\"25\">&nbsp;");
  15.473 +                                    if (status == NULL)
  15.474 +                                  { printf("&#42;"); }
  15.475 +                                    else
  15.476 +                                  { printf(" "); }
  15.477 +                                    printf("password:</td>");
  15.478 +                                  printf("<td width=\"166\" height=\"25\"><input name=\"verify\" type=\"password\" onkeydown=\"if(event.keyCode==13) form.submit()\" maxlength=\"16\" size=\"19\" /></td>");
  15.479 +                                printf("</tr>");
  15.480 +                              printf("</table></td>");
  15.481 +                            printf("<td width=\"78\" height=\"50\" align=\"center\"><a href=\"javascript:document.loginForm.submit()\"><img width=\"52\" height=\"48\" name=\"arrow\" onmousedown=\"iArrowDown()\" onmouseup=\"iArrowUp()\" onmouseout=\"iArrowUp()\" title=\"login\" alt=\"login\" src=\"images/login/arrow.gif\" /></a></td>");
  15.482 +                          printf("</tr>");
  15.483 +                        printf("</table>");
  15.484 +                      printf("</form></td>");
  15.485 +                    printf("<td><img width=\"18\" height=\"184\" src=\"images/login/right.gif\" /></td>");
  15.486 +                  printf("</tr>");
  15.487 +                  printf("<tr>");
  15.488 +                    printf("<td><img width=\"12\" height=\"18\" src=\"images/login/bottom_left.gif\" /></td>");
  15.489 +                    printf("<td><img width=\"354\" height=\"18\" src=\"images/login/bottom.gif\" /></td>");
  15.490 +                    printf("<td><img width=\"18\" height=\"18\" src=\"images/login/bottom_right.gif\" /></td>");
  15.491 +                  printf("</tr>");
  15.492 +                printf("</table>");
  15.493 +                printf("<span class=\"iSmallBreak\"><br /></span>");
  15.494 +                printf("<span class=\"iEnterPassword\">");
  15.495 +                  if (status == NULL)
  15.496 +                { printf("&#42;enter password twice"); }
  15.497 +                  else { if (strcmp(status, "try_again") == 0)
  15.498 +                { printf("server momentarily busy"); }
  15.499 +                  else { if (strcmp(status, "illegal_characters") == 0)
  15.500 +                { printf("login contained illegal characters"); }
  15.501 +                  else { if (strcmp(status, "login_exists") == 0)
  15.502 +                { printf("login exists"); }
  15.503 +                  else { if (strcmp(status, "reconfirm_password") == 0)
  15.504 +                { printf("password entries did not match"); }
  15.505 +                  else
  15.506 +                { printf("&#42;enter password twice"); } } } } }
  15.507 +                  printf("</span><br />");
  15.508 +                printf("<span class=\"iCreateLogin\">");
  15.509 +                  if (status == NULL)
  15.510 +                { printf("to create new login"); }
  15.511 +                  else { if (strcmp(status, "try_again") == 0)
  15.512 +                { printf("please try again"); }
  15.513 +                  else { if (strcmp(status, "illegal_characters") == 0)
  15.514 +                { printf("only letters and numbers are allowed"); }
  15.515 +                  else { if (strcmp(status, "login_exists") == 0)
  15.516 +                { printf("please try another"); }
  15.517 +                  else { if (strcmp(status, "reconfirm_password") == 0)
  15.518 +                { printf("please reconfirm your password"); }
  15.519 +                  else
  15.520 +                { printf("to create new login"); } } } } }
  15.521 +                  printf("</span><br />");
  15.522 +                printf("<a id=\"iBack\" href=\"login\">&lt; back to login</a></td>");
  15.523 +            printf("</tr>");
  15.524 +            printf("<tr>");
  15.525 +              printf("<td width=\"50%%\" height=\"72\" align=\"left\"><a class=\"iNewFaded\" onmouseover=\"iNewOn()\" href=\"javascript:explain('new')\"><img width=\"72\" height=\"72\" align=\"middle\" alt=\"new\" src=\"images/login/new_faded.gif\" />&nbsp;new</a></td>");
  15.526 +              printf("<td width=\"50%%\" height=\"72\" align=\"right\"><a class=\"iSettingsFaded\" onmouseover=\"iSettingsOn()\" href=\"javascript:explain('settings')\">settings&nbsp;<img width=\"72\" height=\"72\" align=\"middle\" alt=\"settings\" src=\"images/login/settings_faded.gif\" /></a></td>");
  15.527 +            printf("</tr>");
  15.528 +          printf("</table>");
  15.529 +          printf("<div id=\"iNewPanel\" style=\"position:absolute; z-index:0; height:100%%; width:100%%; left:0px; top:0px; visibility:hidden\">");
  15.530 +            printf("<table width=\"100%%\" height=\"100%%\" cellpadding=\"0\" cellspacing=\"0\">");
  15.531 +              printf("<tr>");
  15.532 +                printf("<td width=\"50%%\" height=\"72\" align=\"left\"><a class=\"iOpenFaded\" onmouseover=\"iOpenOn()\" href=\"javascript:explain('open')\"><img width=\"72\" height=\"72\" align=\"middle\" alt=\"open\" src=\"images/login/open_faded.gif\" />&nbsp;open</a></td>");
  15.533 +                printf("<td width=\"50%%\" height=\"72\" align=\"right\"><a class=\"iNextFaded\" onmouseover=\"iNextOn()\" href=\"javascript:explain('next')\">next&nbsp;<img width=\"72\" height=\"72\" align=\"middle\" name=\"next\" alt=\"next\" src=\"images/login/next_faded.gif\" /></a></td>");
  15.534 +              printf("</tr>");
  15.535 +              printf("<tr>");
  15.536 +                printf("<td height=\"100%%\" colspan=\"2\" align=\"center\" valign=\"middle\"><table width=\"354\" cellpadding=\"0\" cellspacing=\"0\">");
  15.537 +                    printf("<tr>");
  15.538 +                      printf("<td width=\"354\" height=\"12\"></td>");
  15.539 +                    printf("</tr>");
  15.540 +                    printf("<tr>");
  15.541 +                      printf("<td width=\"354\" height=\"184\" class=\"iPanel\" align=\"right\" valign=\"top\"><a id=\"iX\" href=\"javascript:iNewOff()\">x</a> &nbsp;<br />");
  15.542 +                        printf("<center>");
  15.543 +                          printf("<span class=\"iPanelLarge\">do something </span><span class=\"iNewLarge\">new</span><br />");
  15.544 +                          printf("<br />");
  15.545 +                          printf("once logged in, you can find the button for the <span class=\"iNewSmall\">new</span> menu hiding in this corner.<br />");
  15.546 +                          printf("<div class=\"iSmallBreak\">");
  15.547 +                            printf("<br />");
  15.548 +                            printf("<br />");
  15.549 +                          printf("</div>");
  15.550 +                          printf("from there you can add new searches, mail, documents, shares, programs and media.");
  15.551 +                        printf("</center></td>");
  15.552 +                    printf("</tr>");
  15.553 +                    printf("<tr>");
  15.554 +                      printf("<td width=\"354\" height=\"18\"></td>");
  15.555 +                    printf("</tr>");
  15.556 +                  printf("</table>");
  15.557 +                  printf("<span class=\"iSmallBreak\"><br /></span>");
  15.558 +                  printf("<span class=\"iEnterPassword\">");
  15.559 +                    if (status == NULL)
  15.560 +                  { printf("&#42;enter password twice"); }
  15.561 +                    else { if (strcmp(status, "try_again") == 0)
  15.562 +                  { printf("server momentarily busy"); }
  15.563 +                    else { if (strcmp(status, "illegal_characters") == 0)
  15.564 +                  { printf("login contained illegal characters"); }
  15.565 +                    else { if (strcmp(status, "login_exists") == 0)
  15.566 +                  { printf("login exists"); }
  15.567 +                    else { if (strcmp(status, "reconfirm_password") == 0)
  15.568 +                  { printf("password entries did not match"); }
  15.569 +                    else
  15.570 +                  { printf("&#42;enter password twice"); } } } } }
  15.571 +                    printf("</span><br />");
  15.572 +                  printf("<span class=\"iCreateLogin\">");
  15.573 +                    if (status == NULL)
  15.574 +                  { printf("to create new login"); }
  15.575 +                    else { if (strcmp(status, "try_again") == 0)
  15.576 +                  { printf("please try again"); }
  15.577 +                    else { if (strcmp(status, "illegal_characters") == 0)
  15.578 +                  { printf("only letters and numbers are allowed"); }
  15.579 +                    else { if (strcmp(status, "login_exists") == 0)
  15.580 +                  { printf("please try another"); }
  15.581 +                    else { if (strcmp(status, "reconfirm_password") == 0)
  15.582 +                  { printf("please reconfirm your password"); }
  15.583 +                    else
  15.584 +                  { printf("to create new login"); } } } } }
  15.585 +                    printf("</span><br />");
  15.586 +                  printf("<a id=\"iBack\" href=\"login\">&lt; back to login</a></td>");
  15.587 +              printf("</tr>");
  15.588 +              printf("<tr>");
  15.589 +                printf("<td width=\"50%%\" height=\"72\" align=\"left\"><a class=\"iNew\" onmouseout=\"iNewOff()\" href=\"javascript:explain('new')\"><img width=\"72\" height=\"72\" align=\"middle\" name=\"new\" alt=\"new\" src=\"images/login/new.gif\" />&nbsp;new</a></td>");
  15.590 +                printf("<td width=\"50%%\" height=\"72\" align=\"right\"><a class=\"iSettingsFaded\" onmouseover=\"iSettingsOn()\" href=\"javascript:explain('settings')\">settings&nbsp;<img width=\"72\" height=\"72\" align=\"middle\" name=\"settings\" alt=\"settings\" src=\"images/login/settings_faded.gif\" /></a></td>");
  15.591 +              printf("</tr>");
  15.592 +            printf("</table>");
  15.593 +          printf("</div>");
  15.594 +          printf("<div id=\"iOpenPanel\" style=\"position:absolute; z-index:1; height:100%%; width:100%%; left:0px; top:0px; visibility:hidden\">");
  15.595 +            printf("<table width=\"100%%\" height=\"100%%\" cellpadding=\"0\" cellspacing=\"0\">");
  15.596 +              printf("<tr>");
  15.597 +                printf("<td width=\"50%%\" height=\"72\" align=\"left\"><a class=\"iOpen\" onmouseout=\"iOpenOff()\" href=\"javascript:explain('open')\"><img width=\"72\" height=\"72\" align=\"middle\" alt=\"open\" src=\"images/login/open.gif\" />&nbsp;open</a></td>");
  15.598 +                printf("<td width=\"50%%\" height=\"72\" align=\"right\"><a class=\"iNextFaded\" onmouseover=\"iNextOn()\" href=\"javascript:explain('next')\">next&nbsp;<img width=\"72\" height=\"72\" align=\"middle\" name=\"next\" alt=\"next\" src=\"images/login/next_faded.gif\" /></a></td>");
  15.599 +              printf("</tr>");
  15.600 +              printf("<tr>");
  15.601 +                printf("<td height=\"100%%\" colspan=\"2\" align=\"center\" valign=\"middle\"><table width=\"354\" cellpadding=\"0\" cellspacing=\"0\">");
  15.602 +                    printf("<tr>");
  15.603 +                      printf("<td width=\"354\" height=\"12\"></td>");
  15.604 +                    printf("</tr>");
  15.605 +                    printf("<tr>");
  15.606 +                      printf("<td width=\"354\" height=\"184\" class=\"iPanel\" align=\"right\" valign=\"top\"><a id=\"iX\" href=\"javascript:iOpenOff()\">x</a> &nbsp;<br />");
  15.607 +                      printf("<center>");
  15.608 +                        printf("<span class=\"iOpenLarge\">open</span><span class=\"iPanelLarge\"> something saved</span><br />");
  15.609 +                        printf("<br />");
  15.610 +                        printf("once logged in, you can find the button for the <span class=\"iOpenSmall\">open</span> menu hiding in this corner.<br />");
  15.611 +                        printf("<div class=\"iSmallBreak\">");
  15.612 +                          printf("<br />");
  15.613 +                          printf("<br />");
  15.614 +                        printf("</div>");
  15.615 +                        printf("from there you can open saved documents, media, games, mail and web sites.");
  15.616 +                      printf("</center></td>");
  15.617 +                    printf("</tr>");
  15.618 +                    printf("<tr>");
  15.619 +                      printf("<td width=\"354\" height=\"18\"></td>");
  15.620 +                    printf("</tr>");
  15.621 +                  printf("</table>");
  15.622 +                  printf("<span class=\"iSmallBreak\"><br /></span>");
  15.623 +                  printf("<span class=\"iEnterPassword\">");
  15.624 +                    if (status == NULL)
  15.625 +                  { printf("&#42;enter password twice"); }
  15.626 +                    else { if (strcmp(status, "try_again") == 0)
  15.627 +                  { printf("server momentarily busy"); }
  15.628 +                    else { if (strcmp(status, "illegal_characters") == 0)
  15.629 +                  { printf("login contained illegal characters"); }
  15.630 +                    else { if (strcmp(status, "login_exists") == 0)
  15.631 +                  { printf("login exists"); }
  15.632 +                    else { if (strcmp(status, "reconfirm_password") == 0)
  15.633 +                  { printf("password entries did not match"); }
  15.634 +                    else
  15.635 +                  { printf("&#42;enter password twice"); } } } } }
  15.636 +                    printf("</span><br />");
  15.637 +                  printf("<span class=\"iCreateLogin\">");
  15.638 +                    if (status == NULL)
  15.639 +                  { printf("to create new login"); }
  15.640 +                    else { if (strcmp(status, "try_again") == 0)
  15.641 +                  { printf("please try again"); }
  15.642 +                    else { if (strcmp(status, "illegal_characters") == 0)
  15.643 +                  { printf("only letters and numbers are allowed"); }
  15.644 +                    else { if (strcmp(status, "login_exists") == 0)
  15.645 +                  { printf("please try another"); }
  15.646 +                    else { if (strcmp(status, "reconfirm_password") == 0)
  15.647 +                  { printf("please reconfirm your password"); }
  15.648 +                    else
  15.649 +                  { printf("to create new login"); } } } } }
  15.650 +                    printf("</span><br />");
  15.651 +                  printf("<a id=\"iBack\" href=\"login\">&lt; back to login</a></td>");
  15.652 +              printf("</tr>");
  15.653 +              printf("<tr>");
  15.654 +                printf("<td width=\"50%%\" height=\"72\" align=\"left\"><a class=\"iNewFaded\" onmouseover=\"iNewOn()\" href=\"javascript:explain('new')\"><img width=\"72\" height=\"72\" align=\"middle\" name=\"new\" alt=\"new\" src=\"images/login/new_faded.gif\" />&nbsp;new</a></td>");
  15.655 +                printf("<td width=\"50%%\" height=\"72\" align=\"right\"><a class=\"iSettingsFaded\" onmouseover=\"iSettingsOn()\" href=\"javascript:explain('settings')\">settings&nbsp;<img width=\"72\" height=\"72\" align=\"middle\" name=\"settings\" alt=\"settings\" src=\"images/login/settings_faded.gif\" /></a></td>");
  15.656 +              printf("</tr>");
  15.657 +            printf("</table>");
  15.658 +          printf("</div>");
  15.659 +          printf("<div id=\"iNextPanel\" style=\"position:absolute; z-index:2; height:100%%; width:100%%; left:0px; top:0px; visibility:hidden\">");
  15.660 +            printf("<table width=\"100%%\" height=\"100%%\" cellpadding=\"0\" cellspacing=\"0\">");
  15.661 +              printf("<tr>");
  15.662 +                printf("<td width=\"50%%\" height=\"72\" align=\"left\"><a class=\"iOpenFaded\" onmouseover=\"iOpenOn()\" href=\"javascript:explain('open')\"><img width=\"72\" height=\"72\" align=\"middle\" alt=\"open\" src=\"images/login/open_faded.gif\" />&nbsp;open</a></td>");
  15.663 +                printf("<td width=\"50%%\" height=\"72\" align=\"right\"><a class=\"iNext\" onmouseout=\"iNextOff()\" href=\"javascript:explain('next')\">next&nbsp;<img width=\"72\" height=\"72\" align=\"middle\" name=\"next\" alt=\"next\" src=\"images/login/next.gif\" /></a></td>");
  15.664 +              printf("</tr>");
  15.665 +              printf("<tr>");
  15.666 +                printf("<td height=\"100%%\" colspan=\"2\" align=\"center\" valign=\"middle\"><table width=\"354\" cellpadding=\"0\" cellspacing=\"0\">");
  15.667 +                    printf("<tr>");
  15.668 +                      printf("<td width=\"354\" height=\"12\"></td>");
  15.669 +                    printf("</tr>");
  15.670 +                    printf("<tr>");
  15.671 +                      printf("<td width=\"354\" height=\"184\" class=\"iPanel\" align=\"right\" valign=\"top\"><a id=\"iX\" href=\"javascript:iNextOff()\">x</a> &nbsp;<br />");
  15.672 +                        printf("<center>");
  15.673 +                          printf("<span class=\"iPanelLarge\">all set for now, </span><span class=\"iNextLarge\">next</span><br />");
  15.674 +                          printf("<br />");
  15.675 +                          printf("once logged in, you can find the button for the <span class=\"iNextSmall\">next</span> menu hiding in this corner.<br />");
  15.676 +                          printf("<div class=\"iSmallBreak\">");
  15.677 +                            printf("<br />");
  15.678 +                            printf("<br />");
  15.679 +                          printf("</div>");
  15.680 +                          printf("from there you can save, switch tasks,<br />");
  15.681 +                          printf("\"save as\" or exit a task without saving.");
  15.682 +                        printf("</center></td>");
  15.683 +                    printf("</tr>");
  15.684 +                    printf("<tr>");
  15.685 +                      printf("<td width=\"354\" height=\"18\"></td>");
  15.686 +                    printf("</tr>");
  15.687 +                  printf("</table>");
  15.688 +                  printf("<span class=\"iSmallBreak\"><br /></span>");
  15.689 +                  printf("<span class=\"iEnterPassword\">");
  15.690 +                    if (status == NULL)
  15.691 +                  { printf("&#42;enter password twice"); }
  15.692 +                    else { if (strcmp(status, "try_again") == 0)
  15.693 +                  { printf("server momentarily busy"); }
  15.694 +                    else { if (strcmp(status, "illegal_characters") == 0)
  15.695 +                  { printf("login contained illegal characters"); }
  15.696 +                    else { if (strcmp(status, "login_exists") == 0)
  15.697 +                  { printf("login exists"); }
  15.698 +                    else { if (strcmp(status, "reconfirm_password") == 0)
  15.699 +                  { printf("password entries did not match"); }
  15.700 +                    else
  15.701 +                  { printf("&#42;enter password twice"); } } } } }
  15.702 +                    printf("</span><br />");
  15.703 +                  printf("<span class=\"iCreateLogin\">");
  15.704 +                    if (status == NULL)
  15.705 +                  { printf("to create new login"); }
  15.706 +                    else { if (strcmp(status, "try_again") == 0)
  15.707 +                  { printf("please try again"); }
  15.708 +                    else { if (strcmp(status, "illegal_characters") == 0)
  15.709 +                  { printf("only letters and numbers are allowed"); }
  15.710 +                    else { if (strcmp(status, "login_exists") == 0)
  15.711 +                  { printf("please try another"); }
  15.712 +                    else { if (strcmp(status, "reconfirm_password") == 0)
  15.713 +                  { printf("please reconfirm your password"); }
  15.714 +                    else
  15.715 +                  { printf("to create new login"); } } } } }
  15.716 +                    printf("</span><br />");
  15.717 +                  printf("<a id=\"iBack\" href=\"login\">&lt; back to login</a></td>");
  15.718 +              printf("</tr>");
  15.719 +              printf("<tr>");
  15.720 +                printf("<td width=\"50%%\" height=\"72\" align=\"left\"><a class=\"iNewFaded\" onmouseover=\"iNewOn()\" href=\"javascript:explain('new')\"><img width=\"72\" height=\"72\" align=\"middle\" name=\"new\" alt=\"new\" src=\"images/login/new_faded.gif\" />&nbsp;new</a></td>");
  15.721 +                printf("<td width=\"50%%\" height=\"72\" align=\"right\"><a class=\"iSettingsFaded\" onmouseover=\"iSettingsOn()\" href=\"javascript:explain('settings')\">settings&nbsp;<img width=\"72\" height=\"72\" align=\"middle\" name=\"settings\" alt=\"settings\" src=\"images/login/settings_faded.gif\" /></a></td>");
  15.722 +              printf("</tr>");
  15.723 +            printf("</table>");
  15.724 +          printf("</div>");
  15.725 +          printf("<div id=\"iSettingsPanel\" style=\"position:absolute; z-index:3; height:100%%; width:100%%; left:0px; top:0px; visibility:hidden\">");
  15.726 +            printf("<table width=\"100%%\" height=\"100%%\" cellpadding=\"0\" cellspacing=\"0\">");
  15.727 +              printf("<tr>");
  15.728 +                printf("<td width=\"50%%\" height=\"72\" align=\"left\"><a class=\"iOpenFaded\" onmouseover=\"iOpenOn()\" href=\"javascript:explain('open')\"><img width=\"72\" height=\"72\" align=\"middle\" alt=\"open\" src=\"images/login/open_faded.gif\" />&nbsp;open</a></td>");
  15.729 +                printf("<td width=\"50%%\" height=\"72\" align=\"right\"><a class=\"iNextFaded\" onmouseover=\"iNextOn()\" href=\"javascript:explain('next')\">next&nbsp;<img width=\"72\" height=\"72\" align=\"middle\" name=\"next\" alt=\"next\" src=\"images/login/next_faded.gif\" /></a></td>");
  15.730 +              printf("</tr>");
  15.731 +              printf("<tr>");
  15.732 +                printf("<td height=\"100%%\" colspan=\"2\" align=\"center\" valign=\"middle\"><table width=\"354\" cellpadding=\"0\" cellspacing=\"0\">");
  15.733 +                    printf("<tr>");
  15.734 +                      printf("<td width=\"354\" height=\"12\"></td>");
  15.735 +                    printf("</tr>");
  15.736 +                    printf("<tr>");
  15.737 +                      printf("<td width=\"354\" height=\"184\" class=\"iPanel\" align=\"right\" valign=\"top\"><a id=\"iX\" href=\"javascript:iSettingsOff()\">x</a> &nbsp;<br />");
  15.738 +                        printf("<center>");
  15.739 +                          printf("<span class=\"iPanelLarge\">customize </span><span class=\"iSettingsLarge\">settings</span><br />");
  15.740 +                          printf("<br />");
  15.741 +                          printf("once logged in, you'll find the button for<br />");
  15.742 +                          printf("the <span class=\"iSettingsSmall\">settings</span> menu hiding in this corner.");
  15.743 +                          printf("<div class=\"iSmallBreak\">");
  15.744 +                            printf("<br />");
  15.745 +                            printf("<br />");
  15.746 +                          printf("</div>");
  15.747 +                          printf("from there you can view and adjust<br />");
  15.748 +                          printf("all settings, including the clock.");
  15.749 +                        printf("</center></td>");
  15.750 +                    printf("</tr>");
  15.751 +                    printf("<tr>");
  15.752 +                      printf("<td width=\"354\" height=\"18\"></td>");
  15.753 +                    printf("</tr>");
  15.754 +                  printf("</table>");
  15.755 +                  printf("<span class=\"iSmallBreak\"><br /></span>");
  15.756 +                  printf("<span class=\"iEnterPassword\">");
  15.757 +                    if (status == NULL)
  15.758 +                  { printf("&#42;enter password twice"); }
  15.759 +                    else { if (strcmp(status, "try_again") == 0)
  15.760 +                  { printf("server momentarily busy"); }
  15.761 +                    else { if (strcmp(status, "illegal_characters") == 0)
  15.762 +                  { printf("login contained illegal characters"); }
  15.763 +                    else { if (strcmp(status, "login_exists") == 0)
  15.764 +                  { printf("login exists"); }
  15.765 +                    else { if (strcmp(status, "reconfirm_password") == 0)
  15.766 +                  { printf("password entries did not match"); }
  15.767 +                    else
  15.768 +                  { printf("&#42;enter password twice"); } } } } }
  15.769 +                    printf("</span><br />");
  15.770 +                  printf("<span class=\"iCreateLogin\">");
  15.771 +                    if (status == NULL)
  15.772 +                  { printf("to create new login"); }
  15.773 +                    else { if (strcmp(status, "try_again") == 0)
  15.774 +                  { printf("please try again"); }
  15.775 +                    else { if (strcmp(status, "illegal_characters") == 0)
  15.776 +                  { printf("only letters and numbers are allowed"); }
  15.777 +                    else { if (strcmp(status, "login_exists") == 0)
  15.778 +                  { printf("please try another"); }
  15.779 +                    else { if (strcmp(status, "reconfirm_password") == 0)
  15.780 +                  { printf("please reconfirm your password"); }
  15.781 +                    else
  15.782 +                  { printf("to create new login"); } } } } }
  15.783 +                    printf("</span><br />");
  15.784 +                  printf("<a id=\"iBack\" href=\"login\">&lt; back to login</a></td>");
  15.785 +              printf("</tr>");
  15.786 +              printf("<tr>");
  15.787 +                printf("<td width=\"50%%\" height=\"72\" align=\"left\"><a class=\"iNewFaded\" onmouseover=\"iNewOn()\" href=\"javascript:explain('new')\"><img width=\"72\" height=\"72\" align=\"middle\" name=\"new\" alt=\"new\" src=\"images/login/new_faded.gif\" />&nbsp;new</a></td>");
  15.788 +                printf("<td width=\"50%%\" height=\"72\" align=\"right\"><a class=\"iSettings\" onmouseout=\"iSettingsOff()\" href=\"javascript:explain('settings')\">settings&nbsp;<img width=\"72\" height=\"72\" align=\"middle\" name=\"settings\" alt=\"settings\" src=\"images/login/settings.gif\" /></a></td>");
  15.789 +              printf("</tr>");
  15.790 +            printf("</table>");
  15.791 +          printf("</div>");
  15.792 +        printf("</body>");
  15.793 +      printf("</html>\n");
  15.794 +      printf("<!--===========================================================================-->\n");
  15.795 +      printf("<!--                   Copyright and Trademark Legal Notice                    -->\n");
  15.796 +      printf("<!--===========================================================================-->\n");
  15.797 +      printf("<!--                                                                           -->\n");
  15.798 +      printf("<!--                  All textual and graphical site content:                  -->\n");
  15.799 +      printf("<!--                                                                           -->\n");
  15.800 +      printf("<!--  Copyright (C) 2001 - 2005 Brent Angeline / interos.com / interos.        -->\n");
  15.801 +      printf("<!--  Reproduction in whole or part without written permission is prohibited.  -->\n");
  15.802 +      printf("<!--  All rights reserved.  interos.com and the interos logos are              -->\n");
  15.803 +      printf("<!--  trademarks of Brent Angeline / interos.com / interos.                    -->\n");
  15.804 +      printf("<!--  All other company names, product names and services mentioned herein     -->\n");
  15.805 +      printf("<!--  may be the property of their respective owners.                          -->\n");
  15.806 +      printf("<!--                                                                           -->\n");
  15.807 +      printf("<!--===========================================================================-->\n");
  15.808 +      printf("<!--                         e-mail: info@interos.com                          -->\n");
  15.809 +      printf("<!--===========================================================================-->");
  15.810 +}
  15.811 +
  15.812 +/***********************************************************************/
  15.813 +/*                  Copyright and Trademark Statement                  */
  15.814 +/***********************************************************************/
  15.815 +/*                                                                     */
  15.816 +/*          All original textual and graphical site content:           */
  15.817 +/*                                                                     */
  15.818 +/*  Copyright 2001-2008 Brent Angeline and interos LLC.  All rights    */
  15.819 +/*  reserved.  Reproduction in whole or in part without written        */
  15.820 +/*  permission is prohibited.  interos and the interos logos are       */
  15.821 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  15.822 +/*  product, and service names mentioned herein may be the properties  */
  15.823 +/*  of their respective owners.  Comments in the interos.org forums    */
  15.824 +/*  are the properties of their respective authors.  All software      */
  15.825 +/*  developed in the forums is open source and belongs to everyone.    */
  15.826 +/*                                                                     */
  15.827 +/***********************************************************************/
  15.828 +/*                      e-mail: info@interos.com                       */
  15.829 +/***********************************************************************/
  15.830 \ No newline at end of file
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/c/next_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    16.3 @@ -0,0 +1,58 @@
    16.4 +/*************************************************/
    16.5 +/*  interos Standard Document Header - CGI in C  */
    16.6 +/*************************************************/
    16.7 +/*         URIs:  https://interos.com/next        */
    16.8 +/*                https://www.interos.com/next   */
    16.9 +/*       Source:  next.c                          */
   16.10 +/*  Description:  FastCGI for interos next menu  */
   16.11 +/*       Author:  Brent Angeline                 */
   16.12 +/*          CGI:  FastCGI in ISO/ANSI C          */
   16.13 +/*************************************************/
   16.14 +
   16.15 +/* PREPROCESSOR DIRECTIVES */
   16.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                                 */
   16.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, MENU_ITEM, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   16.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                                          */
   16.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy, strlen()                                                */
   16.20 +#include <unistd.h>         /*  F_OK, access()                                                                      */
   16.21 +
   16.22 +#ifndef INTEROS_H
   16.23 +
   16.24 +  /* TYPE DEFINITION */
   16.25 +  typedef struct {
   16.26 +    char *name;
   16.27 +    char *link;
   16.28 +    char *icon;
   16.29 +    struct MENU_ITEM *next;
   16.30 +  } MENU_ITEM;
   16.31 +
   16.32 +#endif
   16.33 +
   16.34 +/* BEGIN MAIN PROGRAM */
   16.35 +int main(void) {
   16.36 +
   16.37 +  /* BEGIN FASTCGI */
   16.38 +  while (FCGI_Accept() >= 0) {
   16.39 +    
   16.40 +  }
   16.41 +  return 0;
   16.42 +}
   16.43 +
   16.44 +/***********************************************************************/
   16.45 +/*                  Copyright and Trademark Statement                  */
   16.46 +/***********************************************************************/
   16.47 +/*                                                                     */
   16.48 +/*          All original textual and graphical site content:           */
   16.49 +/*                                                                     */
   16.50 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   16.51 +/*  reserved.  Reproduction in whole or in part without written        */
   16.52 +/*  permission is prohibited.  interos and the interos logos are       */
   16.53 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   16.54 +/*  product, and service names mentioned herein may be the properties  */
   16.55 +/*  of their respective owners.  Comments in the interos.org forums    */
   16.56 +/*  are the properties of their respective authors.  All software      */
   16.57 +/*  developed in the forums is open source and belongs to everyone.    */
   16.58 +/*                                                                     */
   16.59 +/***********************************************************************/
   16.60 +/*                      e-mail: info@interos.com                       */
   16.61 +/***********************************************************************/
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/c/open_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    17.3 @@ -0,0 +1,58 @@
    17.4 +/*************************************************/
    17.5 +/*  interos Standard Document Header - CGI in C  */
    17.6 +/*************************************************/
    17.7 +/*         URIs:  https://interos.com/open       */
    17.8 +/*                https://www.interos.com/open   */
    17.9 +/*       Source:  open.c                         */
   17.10 +/*  Description:  FastCGI for interos open menu  */
   17.11 +/*       Author:  Brent Angeline                 */
   17.12 +/*          CGI:  FastCGI in ISO/ANSI C          */
   17.13 +/*************************************************/
   17.14 +
   17.15 +/* PREPROCESSOR DIRECTIVES */
   17.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                                 */
   17.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, MENU_ITEM, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   17.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                                          */
   17.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy, strlen()                                                */
   17.20 +#include <unistd.h>         /*  F_OK, access()                                                                      */
   17.21 +
   17.22 +#ifndef INTEROS_H
   17.23 +
   17.24 +  /* TYPE DEFINITION */
   17.25 +  typedef struct {
   17.26 +    char *name;
   17.27 +    char *link;
   17.28 +    char *icon;
   17.29 +    struct MENU_ITEM *next;
   17.30 +  } MENU_ITEM;
   17.31 +
   17.32 +#endif
   17.33 +
   17.34 +/* BEGIN MAIN PROGRAM */
   17.35 +int main(void) {
   17.36 +
   17.37 +  /* BEGIN FASTCGI */
   17.38 +  while (FCGI_Accept() >= 0) {
   17.39 +    
   17.40 +  }
   17.41 +  return 0;
   17.42 +}
   17.43 +
   17.44 +/***********************************************************************/
   17.45 +/*                  Copyright and Trademark Statement                  */
   17.46 +/***********************************************************************/
   17.47 +/*                                                                     */
   17.48 +/*          All original textual and graphical site content:           */
   17.49 +/*                                                                     */
   17.50 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   17.51 +/*  reserved.  Reproduction in whole or in part without written        */
   17.52 +/*  permission is prohibited.  interos and the interos logos are       */
   17.53 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   17.54 +/*  product, and service names mentioned herein may be the properties  */
   17.55 +/*  of their respective owners.  Comments in the interos.org forums    */
   17.56 +/*  are the properties of their respective authors.  All software      */
   17.57 +/*  developed in the forums is open source and belongs to everyone.    */
   17.58 +/*                                                                     */
   17.59 +/***********************************************************************/
   17.60 +/*                      e-mail: info@interos.com                       */
   17.61 +/***********************************************************************/
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/c/settings_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    18.3 @@ -0,0 +1,58 @@
    18.4 +/*****************************************************/
    18.5 +/*    interos Standard Document Header - CGI in C    */
    18.6 +/*****************************************************/
    18.7 +/*         URIs:  https://interos.com/settings       */
    18.8 +/*                https://www.interos.com/settings   */
    18.9 +/*       Source:  settings.c                         */
   18.10 +/*  Description:  FastCGI for interos settings menu  */
   18.11 +/*       Author:  Brent Angeline                     */
   18.12 +/*          CGI:  FastCGI in ISO/ANSI C              */
   18.13 +/*****************************************************/
   18.14 +
   18.15 +/* PREPROCESSOR DIRECTIVES */
   18.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                                 */
   18.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, MENU_ITEM, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   18.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                                          */
   18.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy, strlen()                                                */
   18.20 +#include <unistd.h>         /*  F_OK, access()                                                                      */
   18.21 +
   18.22 +#ifndef INTEROS_H
   18.23 +
   18.24 +  /* TYPE DEFINITION */
   18.25 +  typedef struct {
   18.26 +    char *name;
   18.27 +    char *link;
   18.28 +    char *icon;
   18.29 +    struct MENU_ITEM *next;
   18.30 +  } MENU_ITEM;
   18.31 +
   18.32 +#endif
   18.33 +
   18.34 +/* BEGIN MAIN PROGRAM */
   18.35 +int main(void) {
   18.36 +
   18.37 +  /* BEGIN FASTCGI */
   18.38 +  while (FCGI_Accept() >= 0) {
   18.39 +    
   18.40 +  }
   18.41 +  return 0;
   18.42 +}
   18.43 +
   18.44 +/***********************************************************************/
   18.45 +/*                  Copyright and Trademark Statement                  */
   18.46 +/***********************************************************************/
   18.47 +/*                                                                     */
   18.48 +/*          All original textual and graphical site content:           */
   18.49 +/*                                                                     */
   18.50 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   18.51 +/*  reserved.  Reproduction in whole or in part without written        */
   18.52 +/*  permission is prohibited.  interos and the interos logos are       */
   18.53 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   18.54 +/*  product, and service names mentioned herein may be the properties  */
   18.55 +/*  of their respective owners.  Comments in the interos.org forums    */
   18.56 +/*  are the properties of their respective authors.  All software      */
   18.57 +/*  developed in the forums is open source and belongs to everyone.    */
   18.58 +/*                                                                     */
   18.59 +/***********************************************************************/
   18.60 +/*                      e-mail: info@interos.com                       */
   18.61 +/***********************************************************************/
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/c/template.c	Sat May 01 16:19:36 2010 -0400
    19.3 @@ -0,0 +1,63 @@
    19.4 +/*************************************************/
    19.5 +/*  interos Standard Document Header - CGI in C  */
    19.6 +/*************************************************/
    19.7 +/*         URIs:  https://interos.   /           */
    19.8 +/*                https://www.interos.   /       */
    19.9 +/*       Source:  .c                             */
   19.10 +/*  Description:  FastCGI for interos            */
   19.11 +/*       Author:  Brent Angeline                 */
   19.12 +/*          CGI:  FastCGI in ISO/ANSI C          */
   19.13 +/*************************************************/
   19.14 +
   19.15 +/* PREPROCESSOR DIRECTIVES */
   19.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), fread(), printf()                        */
   19.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, MENU_ITEM, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   19.18 +#include <ctype.h>          /*  tolower()                                                                           */
   19.19 +#include <stdlib.h>         /*  free(), getenv(), malloc(), strtoul()                                               */
   19.20 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                              */
   19.21 +#include <unistd.h>         /*  F_OK, access()                                                                      */
   19.22 +
   19.23 +#ifndef INTEROS_H
   19.24 +
   19.25 +  /* TYPE DEFINITION */
   19.26 +  typedef struct {
   19.27 +    char *name;
   19.28 +    char *link;
   19.29 +    char *icon;
   19.30 +    struct MENU_ITEM *next;
   19.31 +  } MENU_ITEM;
   19.32 +
   19.33 +#endif
   19.34 +
   19.35 +/* FUNCTION PROTOTYPE DECLARATIONS */
   19.36 +
   19.37 +
   19.38 +/* BEGIN MAIN PROGRAM */
   19.39 +int main(void) {
   19.40 +
   19.41 +  /* BEGIN FASTCGI */
   19.42 +  while (FCGI_Accept() >= 0) {
   19.43 +
   19.44 +    
   19.45 +  }
   19.46 +  return 0;
   19.47 +}
   19.48 +
   19.49 +/***********************************************************************/
   19.50 +/*                  Copyright and Trademark Statement                  */
   19.51 +/***********************************************************************/
   19.52 +/*                                                                     */
   19.53 +/*          All original textual and graphical site content:           */
   19.54 +/*                                                                     */
   19.55 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   19.56 +/*  reserved.  Reproduction in whole or in part without written        */
   19.57 +/*  permission is prohibited.  interos and the interos logos are       */
   19.58 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   19.59 +/*  product, and service names mentioned herein may be the properties  */
   19.60 +/*  of their respective owners.  Comments in the interos.org forums    */
   19.61 +/*  are the properties of their respective authors.  All software      */
   19.62 +/*  developed in the forums is open source and belongs to everyone.    */
   19.63 +/*                                                                     */
   19.64 +/***********************************************************************/
   19.65 +/*                      e-mail: info@interos.                          */
   19.66 +/***********************************************************************/
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/c/top_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    20.3 @@ -0,0 +1,514 @@
    20.4 +/***************************************************/
    20.5 +/*   interos Standard Document Header - CGI in C   */
    20.6 +/***************************************************/
    20.7 +/*         URIs:  https://interos.com/top          */
    20.8 +/*                https://www.interos.com/top      */
    20.9 +/*       Source:  top.c                            */
   20.10 +/*  Description:  FastCGI for interos top toolbar  */
   20.11 +/*       Author:  Brent Angeline                   */
   20.12 +/*          CGI:  FastCGI in ISO/ANSI C            */
   20.13 +/***************************************************/
   20.14 +
   20.15 +/* PREPROCESSOR DIRECTIVES */
   20.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                      */
   20.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   20.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
   20.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
   20.20 +#include <unistd.h>         /*  F_OK, access()                                                           */
   20.21 +
   20.22 +/* FUNCTION PROTOTYPE DECLARATIONS */
   20.23 +static void RedirectToLoginPanel(void);
   20.24 +static void OutputTop(char *status);
   20.25 +static void OutputOpenButton(void);
   20.26 +static void OutputNextButton(void);
   20.27 +static void BeginXHTMLOutput(void);
   20.28 +static void BeginTopOutput(void);
   20.29 +static void FinishXHTMLOutput(void);
   20.30 +
   20.31 +/* BEGIN MAIN PROGRAM */
   20.32 +int main(void) {
   20.33 +
   20.34 +  /* BEGIN FASTCGI */
   20.35 +  while (FCGI_Accept() >= 0) {
   20.36 +
   20.37 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
   20.38 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
   20.39 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
   20.40 +      RedirectToLoginPanel();
   20.41 +
   20.42 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   20.43 +    } else {
   20.44 +
   20.45 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
   20.46 +      char *cookie;
   20.47 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
   20.48 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
   20.49 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
   20.50 +        RedirectToLoginPanel();
   20.51 +      } else {
   20.52 +        char *variableName;
   20.53 +        if (!(variableName = malloc(cookieLength + 1))) {
   20.54 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
   20.55 +          RedirectToLoginPanel();
   20.56 +        } else {
   20.57 +          char *variableValue;
   20.58 +          if (!(variableValue = malloc(cookieLength + 1))) {
   20.59 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
   20.60 +            RedirectToLoginPanel();
   20.61 +
   20.62 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
   20.63 +          } else {
   20.64 +
   20.65 +            /* PROCESS COOKIE DATA */
   20.66 +            char *login, *password;
   20.67 +            INT i, c;
   20.68 +            login = password = NULL;
   20.69 +            c = 0;
   20.70 +            strcpy(cookie, getenv("HTTP_COOKIE"));
   20.71 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
   20.72 +              i = 0;
   20.73 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
   20.74 +                variableName[i] = cookie[c];
   20.75 +                ++c;
   20.76 +                ++i;
   20.77 +              }
   20.78 +              variableName[i] = '\0';
   20.79 +              ++c;
   20.80 +              i = 0;
   20.81 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
   20.82 +                variableValue[i] = cookie[c];
   20.83 +                ++c;
   20.84 +                ++i;
   20.85 +              }
   20.86 +              variableValue[i] = '\0';
   20.87 +              ++c;
   20.88 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
   20.89 +                ++c;
   20.90 +              }
   20.91 +              if (!login && !strcmp(variableName, "login")) {
   20.92 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
   20.93 +                  strcpy(login, variableValue);
   20.94 +                }
   20.95 +              } else if (!password && !strcmp(variableName, "password")) {
   20.96 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
   20.97 +                  strcpy(password, variableValue);
   20.98 +                }
   20.99 +              }
  20.100 +            }
  20.101 +
  20.102 +            /* IF LOGIN VALUE IS MISSING... */
  20.103 +            if (!login) {
  20.104 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
  20.105 +              RedirectToLoginPanel();
  20.106 +
  20.107 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
  20.108 +            } else {
  20.109 +
  20.110 +              /* VERIFY LOGIN AND PASSWORD */
  20.111 +              char *directory;
  20.112 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
  20.113 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
  20.114 +                RedirectToLoginPanel();
  20.115 +              } else {
  20.116 +                char *systemDirectory;
  20.117 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
  20.118 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
  20.119 +                  RedirectToLoginPanel();
  20.120 +                } else {
  20.121 +                  strcpy(directory, DIRECTORY);
  20.122 +                  strcat(directory, login);
  20.123 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
  20.124 +                  strcat(systemDirectory, login);
  20.125 +
  20.126 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
  20.127 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
  20.128 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
  20.129 +                    RedirectToLoginPanel();
  20.130 +
  20.131 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
  20.132 +                  } else {
  20.133 +
  20.134 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
  20.135 +                    char *passwordFileName;
  20.136 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
  20.137 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
  20.138 +                      RedirectToLoginPanel();
  20.139 +                    } else {
  20.140 +                      strcpy(passwordFileName, systemDirectory);
  20.141 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
  20.142 +
  20.143 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
  20.144 +                      if (access(passwordFileName, F_OK)) {
  20.145 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
  20.146 +                        RedirectToLoginPanel();
  20.147 +
  20.148 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
  20.149 +                      } else {
  20.150 +
  20.151 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
  20.152 +                        FILE *passwordFile;
  20.153 +
  20.154 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
  20.155 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
  20.156 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
  20.157 +                          RedirectToLoginPanel();
  20.158 +
  20.159 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
  20.160 +                        } else {
  20.161 +                          char *filePassword;
  20.162 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
  20.163 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
  20.164 +                            RedirectToLoginPanel();
  20.165 +                          } else {
  20.166 +                            char c;
  20.167 +                            i = 0;
  20.168 +
  20.169 +                            /* READ PASSWORD FROM PASSWORD FILE */
  20.170 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
  20.171 +                              filePassword[i] = c;
  20.172 +                              ++i;
  20.173 +                            }
  20.174 +                            filePassword[i] = '\0';
  20.175 +                            fclose(passwordFile);
  20.176 +
  20.177 +                            /* IF PASSWORD FAILS COMPARISON... */
  20.178 +                            if (strcmp(filePassword, password)) {
  20.179 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
  20.180 +                              RedirectToLoginPanel();
  20.181 +
  20.182 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
  20.183 +                            } else {
  20.184 +
  20.185 +                              /* LOAD SETTINGS VALUES FROM FILES */
  20.186 +
  20.187 +                              /* LOAD interos TOP COMPONENTS FROM FILES */
  20.188 +
  20.189 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
  20.190 +                              char *status, *button;
  20.191 +                              status = button = NULL;
  20.192 +
  20.193 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
  20.194 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
  20.195 +                                char *query;
  20.196 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
  20.197 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
  20.198 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
  20.199 +                                } else {
  20.200 +                                  strcpy(query, getenv("QUERY_STRING"));
  20.201 +                                  free(variableName);
  20.202 +                                  if (!(variableName = malloc(queryLength + 1))) {
  20.203 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
  20.204 +                                  } else {
  20.205 +                                    free(variableValue);
  20.206 +                                    if (!(variableValue = malloc(queryLength + 1))) {
  20.207 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
  20.208 +
  20.209 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
  20.210 +                                    } else {
  20.211 +
  20.212 +                                      /* PROCESS QUERY DATA */
  20.213 +                                      INT q = 0;
  20.214 +                                      i = 0;
  20.215 +                                      while ((q < queryLength) && (query[q] != '\0')) {
  20.216 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
  20.217 +                                          variableName[i] = query[q];
  20.218 +                                          ++q;
  20.219 +                                          ++i;
  20.220 +                                        }
  20.221 +                                        variableName[i] = '\0';
  20.222 +                                        ++q;
  20.223 +                                        i = 0;
  20.224 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
  20.225 +                                          variableValue[i] = query[q];
  20.226 +                                          ++q;
  20.227 +                                          ++i;
  20.228 +                                        }
  20.229 +                                        variableValue[i] = '\0';
  20.230 +                                        if (query[q] != '\0') {
  20.231 +                                          ++q;
  20.232 +                                        }
  20.233 +                                        if (!status && !strcmp(variableName, "status")) {
  20.234 +                                          if ((status = malloc(strlen(variableValue) + 1)) != 0) {
  20.235 +                                            strcpy(status, variableValue);
  20.236 +                                          }
  20.237 +                                        } else if (!button && !strcmp(variableName, "button")) {
  20.238 +                                          if ((button = malloc(strlen(variableValue) + 1)) != 0) {
  20.239 +                                            strcpy(button, variableValue);
  20.240 +                                          }
  20.241 +                                        }
  20.242 +                                      }
  20.243 +                                    }
  20.244 +                                  }
  20.245 +                                  free(query);
  20.246 +                                }
  20.247 +                              }
  20.248 +
  20.249 +                              /* OUTPUT GUI COMPONENT(S) BASED ON VARIABLES */
  20.250 +                              if (button) {
  20.251 +                                if (!strcmp(button, "open")) {
  20.252 +                                  OutputOpenButton();
  20.253 +                                } else if (!strcmp(button, "next")) {
  20.254 +                                  OutputNextButton();
  20.255 +                                } else {
  20.256 +
  20.257 +                                  /* OUTPUT XHTML FOR interos TOP BAR */
  20.258 +                                  OutputTop(status);
  20.259 +                                }
  20.260 +                              } else {
  20.261 +
  20.262 +                                /* OUTPUT XHTML FOR interos TOP BAR */
  20.263 +                                OutputTop(status);
  20.264 +                              }
  20.265 +                              free(button);
  20.266 +                              free(status);
  20.267 +                            }
  20.268 +                            free(filePassword);
  20.269 +                          }
  20.270 +                        }
  20.271 +                      }
  20.272 +                      free(passwordFileName);
  20.273 +                    }
  20.274 +                  }
  20.275 +                  free(systemDirectory);
  20.276 +                }
  20.277 +                free(directory);
  20.278 +              }
  20.279 +              free(login);
  20.280 +            }
  20.281 +            free(password);
  20.282 +            free(variableValue);
  20.283 +          }
  20.284 +          free(variableName);
  20.285 +        }
  20.286 +        free(cookie);
  20.287 +      }
  20.288 +    }
  20.289 +  }
  20.290 +  return 0;
  20.291 +}
  20.292 +
  20.293 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
  20.294 +static void RedirectToLoginPanel(void) {
  20.295 +  BeginXHTMLOutput();
  20.296 +  BeginTopOutput();
  20.297 +  printf("      <a href=\"/login\" \n");
  20.298 +  printf("         target=\"_top\">click here to login for interos top toolbar</a>\n");
  20.299 +  FinishXHTMLOutput();
  20.300 +}
  20.301 +
  20.302 +/* FUNCTION | OUTPUT XHTML FOR interos TOP TOOLBAR */
  20.303 +static void OutputTop(char *status) {
  20.304 +  BeginXHTMLOutput();
  20.305 +  BeginTopOutput();
  20.306 +  printf("      <table id=\"topToolbar\" width=\"100%%\" \n");
  20.307 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
  20.308 +  printf("        <tr>\n");
  20.309 +  printf("          <td width=\"72\" \n");
  20.310 +  printf("              height=\"72\"><center>\n");
  20.311 +  printf("                            <a id=\"openButton\" \n");
  20.312 +  printf("                               href=\"/interos?menu=open\" \n");
  20.313 +  printf("                               style=\"padding: 26px 0 27px\" \n");
  20.314 +  printf("                               target=\"_top\"><strong>open</strong></a>\n");
  20.315 +  printf("                          </center></td>\n");
  20.316 +  printf("          <td><center>\n");
  20.317 +  printf("                &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
  20.318 +  printf("              </center></td>\n");
  20.319 +  printf("          <td width=\"72\" \n");
  20.320 +  printf("              height=\"72\"><center>\n");
  20.321 +  printf("                            <a id=\"nextButton\" \n");
  20.322 +  printf("                               href=\"/interos?menu=next\" \n");
  20.323 +  printf("                               style=\"padding: 26px 0 27px\" \n");
  20.324 +  printf("                               target=\"_top\"><strong>next</strong></a>\n");
  20.325 +  printf("                          </center></td>\n");
  20.326 +  printf("        </tr>\n");
  20.327 +  printf("      </table>\n");
  20.328 +  FinishXHTMLOutput();
  20.329 +}
  20.330 +
  20.331 +/* FUNCTION | OUTPUT XHTML FOR OPEN BUTTON */
  20.332 +static void OutputOpenButton(void) {
  20.333 +  BeginXHTMLOutput();
  20.334 +  printf("  <!--====================================================-->\n");
  20.335 +  printf("  <!--     interos Standard Document Header - Markup      -->\n");
  20.336 +  printf("  <!--====================================================-->\n");
  20.337 +  printf("  <!--    URIs:  https://interos.com/top?button=open      -->\n");
  20.338 +  printf("  <!--           https://www.interos.com/top?button=open  -->\n");
  20.339 +  printf("  <!--   Title:  interos open menu button                 -->\n");
  20.340 +  printf("  <!--  Author:  Brent Angeline                           -->\n");
  20.341 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional     -->\n");
  20.342 +  printf("  <!--====================================================-->\n");
  20.343 +  printf("  <head>\n");
  20.344 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  20.345 +  printf("    <meta name=\"title\" content=\"interos open menu button\" />\n");
  20.346 +  printf("    <meta name=\"description\" content=\"button for interos open menu\" />\n");
  20.347 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  20.348 +  printf("    <meta name=\"copyright\" \n");
  20.349 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  20.350 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  20.351 +  printf("    <title>interos open menu button</title>\n");
  20.352 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  20.353 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  20.354 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  20.355 +  printf("          media=\"screen, projection\" />\n");
  20.356 +  printf("    <script type=\"text/javascript\" src=\"/js/top.js\"></script>\n");
  20.357 +  printf("  </head>\n");
  20.358 +  printf("  <body id=\"body\">\n");
  20.359 +  printf("    <center>\n");
  20.360 +  printf("      <table id=\"topToolbarFaded\" width=\"100%%\" \n");
  20.361 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
  20.362 +  printf("        <tr>\n");
  20.363 +  printf("          <td width=\"72\" \n");
  20.364 +  printf("              height=\"72\"><center>\n");
  20.365 +  printf("                            <a id=\"openMenuButton\" \n");
  20.366 +  printf("                               href=\"/main\" \n");
  20.367 +  printf("                               style=\"padding: 26px 0 27px\" \n");
  20.368 +  printf("                               target=\"_top\"><strong>&laquo; back</strong></a>\n");
  20.369 +  printf("                          </center></td>\n");
  20.370 +  printf("          <td><center>\n");
  20.371 +  printf("                &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
  20.372 +  printf("              </center></td>\n");
  20.373 +  printf("          <td id=\"topToolbarCornerFaded\" \n");
  20.374 +  printf("              width=\"72\" \n");
  20.375 +  printf("              height=\"72\"><p>\n");
  20.376 +  printf("                            <br />\n");
  20.377 +  printf("                          </p></td>\n");
  20.378 +  printf("        </tr>\n");
  20.379 +  printf("      </table>\n");
  20.380 +  FinishXHTMLOutput();
  20.381 +}
  20.382 +
  20.383 +/* FUNCTION | OUTPUT XHTML FOR NEXT BUTTON */
  20.384 +static void OutputNextButton(void) {
  20.385 +  BeginXHTMLOutput();
  20.386 +  printf("  <!--====================================================-->\n");
  20.387 +  printf("  <!--     interos Standard Document Header - Markup      -->\n");
  20.388 +  printf("  <!--====================================================-->\n");
  20.389 +  printf("  <!--    URIs:  https://interos.com/top?button=next      -->\n");
  20.390 +  printf("  <!--           https://www.interos.com/top?button=next  -->\n");
  20.391 +  printf("  <!--   Title:  interos next menu button                 -->\n");
  20.392 +  printf("  <!--  Author:  Brent Angeline                           -->\n");
  20.393 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional     -->\n");
  20.394 +  printf("  <!--====================================================-->\n");
  20.395 +  printf("  <head>\n");
  20.396 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  20.397 +  printf("    <meta name=\"title\" content=\"interos next menu button\" />\n");
  20.398 +  printf("    <meta name=\"description\" content=\"button for interos next menu\" />\n");
  20.399 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  20.400 +  printf("    <meta name=\"copyright\" \n");
  20.401 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  20.402 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  20.403 +  printf("    <title>interos next menu button</title>\n");
  20.404 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  20.405 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  20.406 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  20.407 +  printf("          media=\"screen, projection\" />\n");
  20.408 +  printf("    <script type=\"text/javascript\" src=\"/js/top.js\"></script>\n");
  20.409 +  printf("  </head>\n");
  20.410 +  printf("  <body id=\"body\">\n");
  20.411 +  printf("    <center>\n");
  20.412 +  printf("      <table id=\"topToolbarFaded\" width=\"100%%\" \n");
  20.413 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
  20.414 +  printf("        <tr>\n");
  20.415 +  printf("          <td id=\"topToolbarCornerFaded\" \n");
  20.416 +  printf("              width=\"72\" \n");
  20.417 +  printf("              height=\"72\"><p>\n");
  20.418 +  printf("                            <br />\n");
  20.419 +  printf("                          <p></td>\n");
  20.420 +  printf("          <td><center>\n");
  20.421 +  printf("                &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
  20.422 +  printf("              </center></td>\n");
  20.423 +  printf("          <td width=\"72\" \n");
  20.424 +  printf("              height=\"72\"><center>\n");
  20.425 +  printf("                            <a id=\"nextMenuButton\" \n");
  20.426 +  printf("                               href=\"/main\" \n");
  20.427 +  printf("                               style=\"padding: 26px 0 27px\" \n");
  20.428 +  printf("                               target=\"_top\"><strong>&laquo; back</strong></a>\n");
  20.429 +  printf("                          </center></td>\n");
  20.430 +  printf("        </tr>\n");
  20.431 +  printf("      </table>\n");
  20.432 +  FinishXHTMLOutput();
  20.433 +}
  20.434 +
  20.435 +/* FUNCTION | BEGIN XHTML OUTPUT */
  20.436 +static void BeginXHTMLOutput(void) {
  20.437 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
  20.438 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
  20.439 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
  20.440 +  printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n");
  20.441 +  printf("                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
  20.442 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
  20.443 +}
  20.444 +
  20.445 +/* FUNCTION | BEGIN interos TOP TOOLBAR OUTPUT */
  20.446 +static void BeginTopOutput(void) {
  20.447 +  printf("  <!--=================================================-->\n");
  20.448 +  printf("  <!--    interos Standard Document Header - Markup    -->\n");
  20.449 +  printf("  <!--=================================================-->\n");
  20.450 +  printf("  <!--    URIs:  https://interos.com/top               -->\n");
  20.451 +  printf("  <!--           https://www.interos.com/top           -->\n");
  20.452 +  printf("  <!--   Title:  interos top toolbar                   -->\n");
  20.453 +  printf("  <!--  Author:  Brent Angeline                        -->\n");
  20.454 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->\n");
  20.455 +  printf("  <!--=================================================-->\n");
  20.456 +  printf("  <head>\n");
  20.457 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  20.458 +  printf("    <meta name=\"title\" content=\"interos top toolbar\" />\n");
  20.459 +  printf("    <meta name=\"description\" content=\"top toolbar for interos\" />\n");
  20.460 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  20.461 +  printf("    <meta name=\"copyright\" \n");
  20.462 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  20.463 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  20.464 +  printf("    <title>interos top</title>\n");
  20.465 +  printf("    <link rel=\"shortcut icon\" href=\"/favicon.ico\" type=\"image/x-icon\" />\n");
  20.466 +  printf("    <link rel=\"icon\" href=\"/images/favicon.gif\" type=\"image/gif\" />\n");
  20.467 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  20.468 +  printf("          media=\"screen, projection\" />\n");
  20.469 +  printf("    <script type=\"text/javascript\" src=\"/js/top.js\"></script>\n");
  20.470 +  printf("  </head>\n");
  20.471 +  printf("  <body id=\"body\">\n");
  20.472 +  printf("    <center>\n");
  20.473 +}
  20.474 +
  20.475 +/* FUNCTION | FINISH XHTML OUTPUT */
  20.476 +static void FinishXHTMLOutput(void) {
  20.477 +  printf("    </center>\n");
  20.478 +  printf("  </body>\n");
  20.479 +  printf("  <!--=====================================================================-->\n");
  20.480 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
  20.481 +  printf("  <!--=====================================================================-->\n");
  20.482 +  printf("  <!--                                                                     -->\n");
  20.483 +  printf("  <!--          All original textual and graphical site content:           -->\n");
  20.484 +  printf("  <!--                                                                     -->\n");
  20.485 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
  20.486 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
  20.487 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
  20.488 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
  20.489 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
  20.490 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
  20.491 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
  20.492 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
  20.493 +  printf("  <!--                                                                     -->\n");
  20.494 +  printf("  <!--=====================================================================-->\n");
  20.495 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
  20.496 +  printf("  <!--=====================================================================-->\n");
  20.497 +  printf("</html>");
  20.498 +}
  20.499 +
  20.500 +/***********************************************************************/
  20.501 +/*                  Copyright and Trademark Statement                  */
  20.502 +/***********************************************************************/
  20.503 +/*                                                                     */
  20.504 +/*          All original textual and graphical site content:           */
  20.505 +/*                                                                     */
  20.506 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
  20.507 +/*  reserved.  Reproduction in whole or in part without written        */
  20.508 +/*  permission is prohibited.  interos and the interos logos are       */
  20.509 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  20.510 +/*  product, and service names mentioned herein may be the properties  */
  20.511 +/*  of their respective owners.  Comments in the interos.org forums    */
  20.512 +/*  are the properties of their respective authors.  All software      */
  20.513 +/*  developed in the forums is open source and belongs to everyone.    */
  20.514 +/*                                                                     */
  20.515 +/***********************************************************************/
  20.516 +/*                      e-mail: info@interos.com                       */
  20.517 +/***********************************************************************/
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/c/upload_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    21.3 @@ -0,0 +1,87 @@
    21.4 +/**************************************************/
    21.5 +/*  interos Standard Document Header - CGI in C   */
    21.6 +/**************************************************/
    21.7 +/*         URIs:  https://interos.com/upload      */
    21.8 +/*                https://www.interos.com/upload  */
    21.9 +/*       Source:  upload.c                        */
   21.10 +/*  Description:  FastCGI for interos upload      */
   21.11 +/*       Author:  Brent Angeline                  */
   21.12 +/*          CGI:  FastCGI in ISO/ANSI C           */
   21.13 +/**************************************************/
   21.14 +
   21.15 +/* PREPROCESSOR DIRECTIVES */
   21.16 +
   21.17 +
   21.18 +/* FUNCTION PROTOTYPE DECLARATIONS */
   21.19 +
   21.20 +
   21.21 +/* BEGIN MAIN PROGRAM */
   21.22 +int main(void) {
   21.23 +
   21.24 +  /* BEGIN FASTCGI */
   21.25 +  while (FCGI_Accept() >= 0) {
   21.26 +
   21.27 +    /* IF POST DATA DOESN'T EXIST OR IS TOO LONG... */
   21.28 +    if (!getenv("CONTENT_LENGTH") || (sizeof(STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10)) > sizeof(INT))) {
   21.29 +
   21.30 +      /* OUTPUT FORM XHTML */
   21.31 +      
   21.32 +
   21.33 +    /* OTHERWISE, IF POST DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   21.34 +    } else {
   21.35 +
   21.36 +      /* ATTEMPT TO ALLOCATE MEMORY FOR POST VARIABLES */
   21.37 +      char *post;
   21.38 +      INT postLength = STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10);
   21.39 +      if ((postLength < 1) || !(post = malloc(postLength + 1))) {
   21.40 +        /** ERROR | CANNOT ALLOCATE MEMORY FOR POST DATA > PRINT MESSAGE, START OVER AND TRY AGAIN **/
   21.41 +      } else {
   21.42 +        char *boundary;
   21.43 +        if (!(boundary = malloc(postLength + 1))) {
   21.44 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR BOUNDARY DATA > PRINT MESSAGE, START OVER AND TRY AGAIN **/
   21.45 +        } else {
   21.46 +          char *variableName;
   21.47 +          if (!(variableName = malloc(postLength + 1))) {
   21.48 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR POST VARIABLE NAME > PRINT MESSAGE, START OVER AND TRY AGAIN **/
   21.49 +          } else {
   21.50 +            char *variableValue;
   21.51 +            if (!(variableValue = malloc(postLength + 1))) {
   21.52 +              /** ERROR | CANNOT ALLOCATE MEMORY FOR POST VARIABLE VALUE > PRINT MESSAGE, START OVER AND TRY AGAIN **/
   21.53 +
   21.54 +            /* IF SUFFICIENT MEMORY FOR POST VARIABLES... */
   21.55 +            } else {
   21.56 +
   21.57 +              /* SET VARIABLES BASED ON POST DATA */
   21.58 +              INT p, i;
   21.59 +              
   21.60 +              free(variableValue);
   21.61 +            }
   21.62 +            free(variableName);
   21.63 +          }
   21.64 +          free(boundary);
   21.65 +        }
   21.66 +        free(post);
   21.67 +      }
   21.68 +    }
   21.69 +  }
   21.70 +  return 0;
   21.71 +}
   21.72 +
   21.73 +/***********************************************************************/
   21.74 +/*                  Copyright and Trademark Statement                  */
   21.75 +/***********************************************************************/
   21.76 +/*                                                                     */
   21.77 +/*          All original textual and graphical site content:           */
   21.78 +/*                                                                     */
   21.79 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   21.80 +/*  reserved.  Reproduction in whole or in part without written        */
   21.81 +/*  permission is prohibited.  interos and the interos logos are       */
   21.82 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   21.83 +/*  product, and service names mentioned herein may be the properties  */
   21.84 +/*  of their respective owners.  Comments in the interos.org forums    */
   21.85 +/*  are the properties of their respective authors.  All software      */
   21.86 +/*  developed in the forums is open source and belongs to everyone.    */
   21.87 +/*                                                                     */
   21.88 +/***********************************************************************/
   21.89 +/*                      e-mail: info@interos.com                       */
   21.90 +/***********************************************************************/
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/c/user_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    22.3 @@ -0,0 +1,224 @@
    22.4 +/*************************************************/
    22.5 +/*  interos Standard Document Header - CGI in C  */
    22.6 +/*************************************************/
    22.7 +/*         URIs:  https://interos.com/user       */
    22.8 +/*                https://www.interos.com/user   */
    22.9 +/*       Source:  user.c                         */
   22.10 +/*  Description:  FastCGI for interos user       */
   22.11 +/*       Author:  Brent Angeline                 */
   22.12 +/*          CGI:  FastCGI in ISO/ANSI C          */
   22.13 +/*************************************************/
   22.14 +
   22.15 +/* PREPROCESSOR DIRECTIVES */
   22.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                      */
   22.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   22.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
   22.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
   22.20 +#include <unistd.h>         /*  F_OK, access()                                                           */
   22.21 +
   22.22 +/* FUNCTION PROTOTYPE DECLARATION */
   22.23 +static void ReturnUserless();
   22.24 +
   22.25 +/* BEGIN MAIN PROGRAM */
   22.26 +int main(void) {
   22.27 +
   22.28 +  /* BEGIN FASTCGI */
   22.29 +  while (FCGI_Accept() >= 0) {
   22.30 +
   22.31 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
   22.32 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
   22.33 +      /** ERROR | COOKIE DATA DOES NOT EXIST > RETURN USERLESS **/ 
   22.34 +      ReturnUserless();
   22.35 +
   22.36 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   22.37 +    } else {
   22.38 +
   22.39 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
   22.40 +      char *cookie;
   22.41 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
   22.42 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
   22.43 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > RETURN USERLESS **/
   22.44 +        ReturnUserless();
   22.45 +      } else {
   22.46 +        char *variableName;
   22.47 +        if (!(variableName = malloc(cookieLength + 1))) {
   22.48 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > RETURN USERLESS **/
   22.49 +          ReturnUserless();
   22.50 +        } else {
   22.51 +          char *variableValue;
   22.52 +          if (!(variableValue = malloc(cookieLength + 1))) {
   22.53 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > RETURN USERLESS **/
   22.54 +            ReturnUserless();
   22.55 +
   22.56 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
   22.57 +          } else {
   22.58 +
   22.59 +            /* PROCESS COOKIE DATA */
   22.60 +            char *login, *password;
   22.61 +            INT i, c;
   22.62 +            login = password = NULL;
   22.63 +            c = 0;
   22.64 +            strcpy(cookie, getenv("HTTP_COOKIE"));
   22.65 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
   22.66 +              i = 0;
   22.67 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
   22.68 +                variableName[i] = cookie[c];
   22.69 +                ++c;
   22.70 +                ++i;
   22.71 +              }
   22.72 +              variableName[i] = '\0';
   22.73 +              ++c;
   22.74 +              i = 0;
   22.75 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
   22.76 +                variableValue[i] = cookie[c];
   22.77 +                ++c;
   22.78 +                ++i;
   22.79 +              }
   22.80 +              variableValue[i] = '\0';
   22.81 +              ++c;
   22.82 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
   22.83 +                ++c;
   22.84 +              }
   22.85 +              if (!login && !strcmp(variableName, "login")) {
   22.86 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
   22.87 +                  strcpy(login, variableValue);
   22.88 +                }
   22.89 +              } else if (!password && !strcmp(variableName, "password")) {
   22.90 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
   22.91 +                  strcpy(password, variableValue);
   22.92 +                }
   22.93 +              }
   22.94 +            }
   22.95 +
   22.96 +            /* IF LOGIN VALUE IS MISSING... */
   22.97 +            if (!login) {
   22.98 +              /** ERROR | LOGIN VALUE IS MISSING > RETURN USERLESS **/
   22.99 +              ReturnUserless();
  22.100 +
  22.101 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
  22.102 +            } else {
  22.103 +
  22.104 +              /* VERIFY LOGIN AND PASSWORD */
  22.105 +              char *directory;
  22.106 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
  22.107 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > RETURN USERLESS **/
  22.108 +                ReturnUserless();
  22.109 +              } else {
  22.110 +                char *systemDirectory;
  22.111 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
  22.112 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > RETURN USERLESS **/
  22.113 +                  ReturnUserless();
  22.114 +                } else {
  22.115 +                  strcpy(directory, DIRECTORY);
  22.116 +                  strcat(directory, login);
  22.117 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
  22.118 +                  strcat(systemDirectory, login);
  22.119 +
  22.120 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
  22.121 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
  22.122 +                    /** ERROR | CANNOT ACCESS DIRECTORY > RETURN USERLESS **/
  22.123 +                    ReturnUserless();
  22.124 +
  22.125 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
  22.126 +                  } else {
  22.127 +
  22.128 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
  22.129 +                    char *passwordFileName;
  22.130 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
  22.131 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > RETURN USERLESS **/
  22.132 +                      ReturnUserless();
  22.133 +                    } else {
  22.134 +                      strcpy(passwordFileName, systemDirectory);
  22.135 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
  22.136 +
  22.137 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
  22.138 +                      if (access(passwordFileName, F_OK)) {
  22.139 +                        /** ERROR | CANNOT ACCESS FILE > RETURN USERLESS **/
  22.140 +                        ReturnUserless();
  22.141 +
  22.142 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
  22.143 +                      } else {
  22.144 +
  22.145 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
  22.146 +                        FILE *passwordFile;
  22.147 +
  22.148 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
  22.149 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
  22.150 +                          /** ERROR | CANNOT READ FILE > RETURN USERLESS **/
  22.151 +                          ReturnUserless();
  22.152 +
  22.153 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
  22.154 +                        } else {
  22.155 +                          char *filePassword;
  22.156 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
  22.157 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > RETURN USERLESS **/
  22.158 +                            ReturnUserless();
  22.159 +                          } else {
  22.160 +                            char c;
  22.161 +                            i = 0;
  22.162 +
  22.163 +                            /* READ PASSWORD FROM PASSWORD FILE */
  22.164 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
  22.165 +                              filePassword[i] = c;
  22.166 +                              ++i;
  22.167 +                            }
  22.168 +                            filePassword[i] = '\0';
  22.169 +                            fclose(passwordFile);
  22.170 +
  22.171 +                            /* IF PASSWORD FAILS COMPARISON... */
  22.172 +                            if (strcmp(filePassword, password)) {
  22.173 +                              /** ERROR | PASSWORD FAILED > RETURN USERLESS **/
  22.174 +                              ReturnUserless();
  22.175 +
  22.176 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
  22.177 +                            } else {
  22.178 +                              printf("Content-Type: text/plain\r\n\r\n");
  22.179 +                              printf("%s", login);
  22.180 +                            }
  22.181 +                            free(filePassword);
  22.182 +                          }
  22.183 +                        }
  22.184 +                      }
  22.185 +                      free(passwordFileName);
  22.186 +                    }
  22.187 +                  }
  22.188 +                  free(systemDirectory);
  22.189 +                }
  22.190 +                free(directory);
  22.191 +              }
  22.192 +              free(login);
  22.193 +            }
  22.194 +            free(password);
  22.195 +            free(variableValue);
  22.196 +          }
  22.197 +          free(variableName);
  22.198 +        }
  22.199 +        free(cookie);
  22.200 +      }
  22.201 +    }
  22.202 +  }
  22.203 +  return 0;
  22.204 +}
  22.205 +
  22.206 +static void ReturnUserless() {
  22.207 +  printf("Content-Type: text/plain\r\n\r\n");
  22.208 +}
  22.209 +
  22.210 +/***********************************************************************/
  22.211 +/*                  Copyright and Trademark Statement                  */
  22.212 +/***********************************************************************/
  22.213 +/*                                                                     */
  22.214 +/*          All original textual and graphical site content:           */
  22.215 +/*                                                                     */
  22.216 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
  22.217 +/*  reserved.  Reproduction in whole or in part without written        */
  22.218 +/*  permission is prohibited.  interos and the interos logos are       */
  22.219 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  22.220 +/*  product, and service names mentioned herein may be the properties  */
  22.221 +/*  of their respective owners.  Comments in the interos.org forums    */
  22.222 +/*  are the properties of their respective authors.  All software      */
  22.223 +/*  developed in the forums is open source and belongs to everyone.    */
  22.224 +/*                                                                     */
  22.225 +/***********************************************************************/
  22.226 +/*                      e-mail: info@interos.com                       */
  22.227 +/***********************************************************************/
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/c/welcome_back_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    23.3 @@ -0,0 +1,32 @@
    23.4 +
    23.5 +
    23.6 +/* PREPROCESSOR DIRECTIVES */
    23.7 +
    23.8 +/* BEGIN MAIN PROGRAM */
    23.9 +int main(void) {
   23.10 +
   23.11 +  /* BEGIN FASTCGI */
   23.12 +  while (FCGI_Accept() >= 0) {
   23.13 +    
   23.14 +  }
   23.15 +  return 0;
   23.16 +}
   23.17 +
   23.18 +/***********************************************************************/
   23.19 +/*                  Copyright and Trademark Statement                  */
   23.20 +/***********************************************************************/
   23.21 +/*                                                                     */
   23.22 +/*          All original textual and graphical site content:           */
   23.23 +/*                                                                     */
   23.24 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
   23.25 +/*  reserved.  Reproduction in whole or in part without written        */
   23.26 +/*  permission is prohibited.  interos and the interos logos are       */
   23.27 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   23.28 +/*  product, and service names mentioned herein may be the properties  */
   23.29 +/*  of their respective owners.  Comments in the interos.org forums    */
   23.30 +/*  are the properties of their respective authors.  All software      */
   23.31 +/*  developed in the forums is open source and belongs to everyone.    */
   23.32 +/*                                                                     */
   23.33 +/***********************************************************************/
   23.34 +/*                      e-mail: info@interos.com                       */
   23.35 +/***********************************************************************/
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/c/welcome_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    24.3 @@ -0,0 +1,473 @@
    24.4 +/***************************************************/
    24.5 +/*   interos Standard Document Header - CGI in C   */
    24.6 +/***************************************************/
    24.7 +/*         URIs:  https://interos.com/welcome      */
    24.8 +/*                https://www.interos.com/welcome  */
    24.9 +/*       Source:  welcome.c                        */
   24.10 +/*  Description:  FastCGI for interos welcome      */
   24.11 +/*       Author:  Brent Angeline                   */
   24.12 +/*          CGI:  FastCGI in ISO/ANSI C            */
   24.13 +/***************************************************/
   24.14 +
   24.15 +/* PREPROCESSOR DIRECTIVES */
   24.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                      */
   24.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   24.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
   24.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
   24.20 +#include <unistd.h>         /*  F_OK, access()                                                           */
   24.21 +
   24.22 +#ifndef INTEROS_H
   24.23 +
   24.24 +  /* TYPE DEFINITION */
   24.25 +  typedef struct {
   24.26 +    char *name;
   24.27 +    char *link;
   24.28 +    char *icon;
   24.29 +    struct MENU_ITEM *next;
   24.30 +  } MENU_ITEM;
   24.31 +
   24.32 +#endif
   24.33 +
   24.34 +/* FUNCTION PROTOTYPE DECLARATIONS */
   24.35 +static void RedirectToLoginPanel(void);
   24.36 +static void OutputGUI(void);
   24.37 +static void OutputFramesetGUI(void);
   24.38 +static void BeginXHTMLOutput(void);
   24.39 +static void FinishXHTMLOutput(void);
   24.40 +
   24.41 +/* BEGIN MAIN PROGRAM */
   24.42 +int main(void) {
   24.43 +
   24.44 +  /* BEGIN FASTCGI */
   24.45 +  while (FCGI_Accept() >= 0) {
   24.46 +
   24.47 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
   24.48 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
   24.49 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
   24.50 +      RedirectToLoginPanel();
   24.51 +
   24.52 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   24.53 +    } else {
   24.54 +
   24.55 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
   24.56 +      char *cookie;
   24.57 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
   24.58 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
   24.59 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
   24.60 +        RedirectToLoginPanel();
   24.61 +      } else {
   24.62 +        char *variableName;
   24.63 +        if (!(variableName = malloc(cookieLength + 1))) {
   24.64 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
   24.65 +          RedirectToLoginPanel();
   24.66 +        } else {
   24.67 +          char *variableValue;
   24.68 +          if (!(variableValue = malloc(cookieLength + 1))) {
   24.69 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
   24.70 +            RedirectToLoginPanel();
   24.71 +
   24.72 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
   24.73 +          } else {
   24.74 +
   24.75 +            /* PROCESS COOKIE DATA */
   24.76 +            char *login, *password, *javascript;
   24.77 +            INT i, c;
   24.78 +            login = password = javascript = NULL;
   24.79 +            c = 0;
   24.80 +            strcpy(cookie, getenv("HTTP_COOKIE"));
   24.81 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
   24.82 +              i = 0;
   24.83 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
   24.84 +                variableName[i] = cookie[c];
   24.85 +                ++c;
   24.86 +                ++i;
   24.87 +              }
   24.88 +              variableName[i] = '\0';
   24.89 +              ++c;
   24.90 +              i = 0;
   24.91 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
   24.92 +                variableValue[i] = cookie[c];
   24.93 +                ++c;
   24.94 +                ++i;
   24.95 +              }
   24.96 +              variableValue[i] = '\0';
   24.97 +              ++c;
   24.98 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
   24.99 +                ++c;
  24.100 +              }
  24.101 +              if (!login && !strcmp(variableName, "login")) {
  24.102 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
  24.103 +                  strcpy(login, variableValue);
  24.104 +                }
  24.105 +              } else if (!password && !strcmp(variableName, "password")) {
  24.106 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
  24.107 +                  strcpy(password, variableValue);
  24.108 +                }
  24.109 +              } else if (!javascript && !strcmp(variableName, "javascript")) {
  24.110 +                if ((javascript = malloc(strlen(variableValue) + 1)) != 0) {
  24.111 +                  strcpy(javascript, variableValue);
  24.112 +                }
  24.113 +              }
  24.114 +            }
  24.115 +
  24.116 +            /* IF LOGIN VALUE IS MISSING... */
  24.117 +            if (!login) {
  24.118 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
  24.119 +              RedirectToLoginPanel();
  24.120 +
  24.121 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
  24.122 +            } else {
  24.123 +
  24.124 +              /* VERIFY LOGIN AND PASSWORD */
  24.125 +              char *directory;
  24.126 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
  24.127 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
  24.128 +                RedirectToLoginPanel();
  24.129 +              } else {
  24.130 +                char *systemDirectory;
  24.131 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
  24.132 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
  24.133 +                  RedirectToLoginPanel();
  24.134 +                } else {
  24.135 +                  strcpy(directory, DIRECTORY);
  24.136 +                  strcat(directory, login);
  24.137 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
  24.138 +                  strcat(systemDirectory, login);
  24.139 +
  24.140 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
  24.141 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
  24.142 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
  24.143 +                    RedirectToLoginPanel();
  24.144 +
  24.145 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
  24.146 +                  } else {
  24.147 +
  24.148 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
  24.149 +                    char *passwordFileName;
  24.150 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
  24.151 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
  24.152 +                      RedirectToLoginPanel();
  24.153 +                    } else {
  24.154 +                      strcpy(passwordFileName, systemDirectory);
  24.155 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
  24.156 +
  24.157 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
  24.158 +                      if (access(passwordFileName, F_OK)) {
  24.159 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
  24.160 +                        RedirectToLoginPanel();
  24.161 +
  24.162 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
  24.163 +                      } else {
  24.164 +
  24.165 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
  24.166 +                        FILE *passwordFile;
  24.167 +
  24.168 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
  24.169 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
  24.170 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
  24.171 +                          RedirectToLoginPanel();
  24.172 +
  24.173 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
  24.174 +                        } else {
  24.175 +                          char *filePassword;
  24.176 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
  24.177 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
  24.178 +                            RedirectToLoginPanel();
  24.179 +                          } else {
  24.180 +                            char c;
  24.181 +                            i = 0;
  24.182 +
  24.183 +                            /* READ PASSWORD FROM PASSWORD FILE */
  24.184 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
  24.185 +                              filePassword[i] = c;
  24.186 +                              ++i;
  24.187 +                            }
  24.188 +                            filePassword[i] = '\0';
  24.189 +                            fclose(passwordFile);
  24.190 +
  24.191 +                            /* IF PASSWORD FAILS COMPARISON... */
  24.192 +                            if (strcmp(filePassword, password)) {
  24.193 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
  24.194 +                              RedirectToLoginPanel();
  24.195 +
  24.196 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
  24.197 +                            } else {
  24.198 +
  24.199 +                              /* LOAD SETTINGS VALUES FROM FILE(S) */
  24.200 +
  24.201 +                              /* LOAD MENU ITEMS FROM FILES */
  24.202 +
  24.203 +                              /* READ NEW MENU FILE */
  24.204 +
  24.205 +                              /* READ OPEN MENU FILE */
  24.206 +
  24.207 +                              /* READ NEXT MENU FILE */
  24.208 +
  24.209 +                              /* READ SETTINGS MENU FILE */
  24.210 +
  24.211 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
  24.212 +
  24.213 +                              /* IF THIS IS A CONTINUED SESSION... */
  24.214 +
  24.215 +                                /* LOAD SESSION FROM FILE */
  24.216 +
  24.217 +                              /* OUTPUT GUI COMPONENT(S) BASED ON VARIABLES */
  24.218 +                              if (javascript) {
  24.219 +                                if (!strcmp(javascript, "on")) {
  24.220 +                                  OutputGUI();
  24.221 +                                } else {
  24.222 +                                  OutputFramesetGUI();
  24.223 +                                }
  24.224 +                              } else {
  24.225 +                                OutputGUI();
  24.226 +                              }
  24.227 +                            }
  24.228 +                            free(filePassword);
  24.229 +                          }
  24.230 +                        }
  24.231 +                      }
  24.232 +                      free(passwordFileName);
  24.233 +                    }
  24.234 +                  }
  24.235 +                  free(systemDirectory);
  24.236 +                }
  24.237 +                free(directory);
  24.238 +              }
  24.239 +              free(login);
  24.240 +            }
  24.241 +            free(javascript);
  24.242 +            free(password);
  24.243 +            free(variableValue);
  24.244 +          }
  24.245 +          free(variableName);
  24.246 +        }
  24.247 +        free(cookie);
  24.248 +      }
  24.249 +    }
  24.250 +  }
  24.251 +  return 0;
  24.252 +}
  24.253 +
  24.254 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
  24.255 +static void RedirectToLoginPanel(void) {
  24.256 +  printf("Location: login\r\n\r\n");
  24.257 +}
  24.258 +
  24.259 +/* FUNCTION | OUTPUT XHTML FOR interos GRAPHICAL USER INTERFACE */
  24.260 +static void OutputGUI(void) {
  24.261 +  BeginXHTMLOutput();
  24.262 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
  24.263 +  printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n");
  24.264 +  printf("                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
  24.265 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\" \n");
  24.266 +  printf("      style=\"background: #606060\">\n");
  24.267 +  printf("  <!--=================================================-->\n");
  24.268 +  printf("  <!--    interos Standard Document Header - Markup    -->\n");
  24.269 +  printf("  <!--=================================================-->\n");
  24.270 +  printf("  <!--    URIs:  https://interos.com/welcome           -->\n");
  24.271 +  printf("  <!--           https://www.interos.com/welcome       -->\n");
  24.272 +  printf("  <!--   Title:  welcome to interos                    -->\n");
  24.273 +  printf("  <!--  Author:  Brent Angeline                        -->\n");
  24.274 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->\n");
  24.275 +  printf("  <!--=================================================-->\n");
  24.276 +  printf("  <head>\n");
  24.277 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  24.278 +  printf("    <meta name=\"title\" content=\"welcome to interos\" />\n");
  24.279 +  printf("    <meta name=\"description\" content=\"internet operating system\" />\n");
  24.280 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  24.281 +  printf("    <meta name=\"copyright\" \n");
  24.282 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  24.283 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  24.284 +  printf("    <title>welcome to interos</title>\n");
  24.285 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  24.286 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  24.287 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  24.288 +  printf("          media=\"screen, projection\" />\n");
  24.289 +  printf("    <script type=\"text/javascript\" src=\"/js/welcome.js\"></script>\n");
  24.290 +  printf("  </head>\n");
  24.291 +  printf("  <body id=\"body\" style=\"background: #606060\">\n");
  24.292 +  printf("    <center>\n");
  24.293 +  printf("      <table id=\"topToolbar\" width=\"100%%\" \n");
  24.294 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
  24.295 +  printf("        <tr>\n");
  24.296 +  printf("          <td width=\"72\" \n");
  24.297 +  printf("              height=\"72\"><center>\n");
  24.298 +  printf("                            <a id=\"openButton\" \n");
  24.299 +  printf("                               href=\"/interos?menu=open\" \n");
  24.300 +  printf("                               style=\"padding: 26px 0 27px\" \n");
  24.301 +  printf("                               target=\"_top\"><strong>open</strong></a>\n");
  24.302 +  printf("                          </center></td>\n");
  24.303 +  printf("          <td><center>\n");
  24.304 +  printf("                &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
  24.305 +  printf("              </center></td>\n");
  24.306 +  printf("          <td width=\"72\" \n");
  24.307 +  printf("              height=\"72\"><center>\n");
  24.308 +  printf("                            <a id=\"nextButton\" \n");
  24.309 +  printf("                               href=\"/interos?menu=next\" \n");
  24.310 +  printf("                               style=\"padding: 26px 0 27px\" \n");
  24.311 +  printf("                               target=\"_top\"><strong>next</strong></a>\n");
  24.312 +  printf("                          </center></td>\n");
  24.313 +  printf("        </tr>\n");
  24.314 +  printf("      </table>\n");
  24.315 +  printf("      <table id=\"welcomePanel\">\n");
  24.316 +  printf("        <thead>\n");
  24.317 +  printf("          <tr>\n");
  24.318 +  printf("            <th><center>\n");
  24.319 +  printf("                  <h1>\n");
  24.320 +  printf("                    welcome to interos\n");
  24.321 +  printf("                  </h1>\n");
  24.322 +  printf("                </center></th>\n");
  24.323 +  printf("          </tr>\n");
  24.324 +  printf("        </thead>\n");
  24.325 +  printf("        <tfoot>\n");
  24.326 +  printf("          <tr>\n");
  24.327 +  printf("            <td><br /></td>\n");
  24.328 +  printf("          </tr>\n");
  24.329 +  printf("        </tfoot>\n");
  24.330 +  printf("        <tbody>\n");
  24.331 +  printf("          <tr>\n");
  24.332 +  printf("            <td><center>\n");
  24.333 +  printf("                  <h2>\n");
  24.334 +  printf("                    Getting around is simple:\n");
  24.335 +  printf("                  </h2>\n");
  24.336 +  printf("                  <p>\n");
  24.337 +  printf("                    Click the <strong id=\"new\">new</strong>, \n");
  24.338 +  printf("                    <strong id=\"open\">open</strong>, \n");
  24.339 +  printf("                    <strong id=\"next\">next</strong>, or \n");
  24.340 +  printf("                    <strong id=\"settings\">settings</strong> button \n");
  24.341 +  printf("                    to bring up its menu.\n");
  24.342 +  printf("                  </p>\n");
  24.343 +  printf("                  <p>\n");
  24.344 +  printf("                    Try clicking <strong id=\"try\">new</strong> to get started!\n");
  24.345 +  printf("                  </p>\n");
  24.346 +  printf("                </center></td>\n");
  24.347 +  printf("          </tr>\n");
  24.348 +  printf("        </tbody>\n");
  24.349 +  printf("      </table>\n");
  24.350 +  printf("      <table id=\"bottomToolbar\" class=\"bottom\" width=\"100%%\" \n");
  24.351 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
  24.352 +  printf("        <tr>\n");
  24.353 +  printf("          <td width=\"72\" \n");
  24.354 +  printf("              height=\"72\"><center>\n");
  24.355 +  printf("                            <a id=\"newButton\" \n");
  24.356 +  printf("                               href=\"/interos?menu=new\" \n");
  24.357 +  printf("                               style=\"padding: 26px 0 27px\" \n");
  24.358 +  printf("                               target=\"_top\"><strong>new</strong></a>\n");
  24.359 +  printf("                          </center></td>\n");
  24.360 +  printf("          <td><center>\n");
  24.361 +  printf("                &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
  24.362 +  printf("              </center></td>\n");
  24.363 +  printf("          <td width=\"72\" \n");
  24.364 +  printf("              height=\"72\"><center>\n");
  24.365 +  printf("                            <a id=\"settingsButton\" \n");
  24.366 +  printf("                               href=\"/interos?menu=settings\" \n");
  24.367 +  printf("                               style=\"padding: 26px 0 27px\" \n");
  24.368 +  printf("                               target=\"_top\"><strong>settings</strong></a>\n");
  24.369 +  printf("                          </center></td>\n");
  24.370 +  printf("        </tr>\n");
  24.371 +  printf("      </table>\n");
  24.372 +  printf("    </center>\n");
  24.373 +  printf("  </body>\n");
  24.374 +  FinishXHTMLOutput();
  24.375 +}
  24.376 +
  24.377 +/* FUNCTION | OUTPUT XHTML FOR interos FRAMESET GRAPHICAL USER INTERFACE */
  24.378 +static void OutputFramesetGUI(void) {
  24.379 +  BeginXHTMLOutput();
  24.380 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
  24.381 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
  24.382 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
  24.383 +  printf("  <!--========================================================-->\n");
  24.384 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
  24.385 +  printf("  <!--========================================================-->\n");
  24.386 +  printf("  <!--    URIs:  https://interos.com/welcome                  -->\n");
  24.387 +  printf("  <!--           https://www.interos.com/welcome              -->\n");
  24.388 +  printf("  <!--   Title:  welcome to interos                           -->\n");
  24.389 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
  24.390 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
  24.391 +  printf("  <!--========================================================-->\n");
  24.392 +  printf("  <head>\n");
  24.393 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
  24.394 +  printf("    <meta name=\"title\" content=\"interos\" />\n");
  24.395 +  printf("    <meta name=\"description\" content=\"internet operating system\" />\n");
  24.396 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
  24.397 +  printf("    <meta name=\"copyright\" \n");
  24.398 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
  24.399 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
  24.400 +  printf("    <title>interos</title>\n");
  24.401 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
  24.402 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
  24.403 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
  24.404 +  printf("          media=\"screen, projection\" />\n");
  24.405 +  printf("    <script type=\"text/javascript\" src=\"/js/interos.js\"></script>\n");
  24.406 +  printf("  </head>\n");
  24.407 +  printf("  <frameset rows=\"72,*,72\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
  24.408 +  printf("    <frame name=\"top\" src=\"/top\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" noresize=\"noresize\" scrolling=\"no\" />\n");
  24.409 +  printf("    <frame name=\"content\" src=\"/content\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" noresize=\"noresize\" scrolling=\"no\" />\n");
  24.410 +  printf("    <frame name=\"bottom\" src=\"/bottom\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" noresize=\"noresize\" scrolling=\"no\" />\n");
  24.411 +  printf("    <noframes>\n");
  24.412 +  printf("      <body id=\"body\">\n");
  24.413 +  printf("        <div id=\"interosContainer\">\n");
  24.414 +  printf("          <div id=\"interosContent\">\n");
  24.415 +  printf("            <h1>interos menu</h1>\n");
  24.416 +  printf("            <ol>\n");
  24.417 +  printf("              <li><a id=\"newLink\" href=\"/interos?menu=new\">new</a></li>\n");
  24.418 +  printf("              <li><a id=\"openLink\" href=\"/interos?menu=open\">open</a></li>\n");
  24.419 +  printf("              <li><a id=\"nextLink\" href=\"/interos?menu=next\">next</a></li>\n");
  24.420 +  printf("              <li><a id=\"settingsLink\" href=\"/interos?menu=settings\">settings</a></li>\n");
  24.421 +  printf("            </ol>\n");
  24.422 +  printf("          </div>\n");
  24.423 +  printf("        </div>\n");
  24.424 +  printf("      </body>\n");
  24.425 +  printf("    </noframes>\n");
  24.426 +  printf("  </frameset>\n");
  24.427 +  FinishXHTMLOutput();
  24.428 +}
  24.429 +
  24.430 +/* FUNCTION | BEGIN XHTML OUTPUT */
  24.431 +static void BeginXHTMLOutput(void) {
  24.432 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
  24.433 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
  24.434 +}
  24.435 +
  24.436 +/* FUNCTION | FINISH XHTML OUTPUT */
  24.437 +static void FinishXHTMLOutput(void) {
  24.438 +  printf("  <!--=====================================================================-->\n");
  24.439 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
  24.440 +  printf("  <!--=====================================================================-->\n");
  24.441 +  printf("  <!--                                                                     -->\n");
  24.442 +  printf("  <!--          All original textual and graphical site content:           -->\n");
  24.443 +  printf("  <!--                                                                     -->\n");
  24.444 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
  24.445 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
  24.446 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
  24.447 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
  24.448 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
  24.449 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
  24.450 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
  24.451 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
  24.452 +  printf("  <!--                                                                     -->\n");
  24.453 +  printf("  <!--=====================================================================-->\n");
  24.454 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
  24.455 +  printf("  <!--=====================================================================-->\n");
  24.456 +  printf("</html>");
  24.457 +}
  24.458 +
  24.459 +/***********************************************************************/
  24.460 +/*                  Copyright and Trademark Statement                  */
  24.461 +/***********************************************************************/
  24.462 +/*                                                                     */
  24.463 +/*          All original textual and graphical site content:           */
  24.464 +/*                                                                     */
  24.465 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
  24.466 +/*  reserved.  Reproduction in whole or in part without written        */
  24.467 +/*  permission is prohibited.  interos and the interos logos are       */
  24.468 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  24.469 +/*  product, and service names mentioned herein may be the properties  */
  24.470 +/*  of their respective owners.  Comments in the interos.org forums    */
  24.471 +/*  are the properties of their respective authors.  All software      */
  24.472 +/*  developed in the forums is open source and belongs to everyone.    */
  24.473 +/*                                                                     */
  24.474 +/***********************************************************************/
  24.475 +/*                      e-mail: info@interos.com                       */
  24.476 +/***********************************************************************/
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/c/xml/files_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    25.3 @@ -0,0 +1,199 @@
    25.4 +#include "fcgi_stdio.h"
    25.5 +#include "interos.h"
    25.6 +#include <stdlib.h>
    25.7 +#include <string.h>
    25.8 +#include <dirent.h>
    25.9 +#include <langinfo.h>
   25.10 +#include <sys/stat.h>
   25.11 +#include <unistd.h>
   25.12 +
   25.13 +/*#include <iconv.h> //For converting to UTF-8
   25.14 +//#include <locale.h> */
   25.15 +
   25.16 +/**
   25.17 +	The "files" CGI program. Lists the contents of a directory, without recursing any further, and
   25.18 +	sends that list in XML format. HTTP(S) requests minimally must contain the Cookie data and
   25.19 +	POST data of the form
   25.20 +	path=path/to/folder
   25.21 +	with optional leading and trailing forward slashes, unless the path is to the user's root directory,
   25.22 +	in which case it is simply
   25.23 +	path=/
   25.24 +
   25.25 +	If the username is included in the path, which is useful in cases where a user needs to access another
   25.26 +	user's public files, the upath variable can be used instead, as such:
   25.27 +	upath=username/path/to/folder
   25.28 +	Again, with optional leading and traling slashes, but the username must be in the beginning.
   25.29 +
   25.30 +	XML data will be of the following form:
   25.31 +	<?xml version=\"1.0\" encoding=\"UTF-8\"?>
   25.32 +	<directoryList>
   25.33 +	<sub>
   25.34 +		<name>%s</name>
   25.35 +		<size>%lld</size>
   25.36 +		<lastModified>%l</lastModified>
   25.37 +		<lastAccessed>%l</lastAccessed>
   25.38 +	</sub>
   25.39 +	<file>
   25.40 +		<name>%s</name>
   25.41 +		<size>%lld</size>
   25.42 +		<lastModified>%l</lastModified>
   25.43 +		<lastAccessed>%l</lastAccessed>
   25.44 +	</file>
   25.45 +	</directoryList>
   25.46 +
   25.47 +	The directoryList tag is the root tag. It may contain zero or more sub tags and/or file tags in no
   25.48 +	particular order.
   25.49 +
   25.50 +	TODO: Lots of debug work
   25.51 +	Unicode characters probably won't work. You should experiment by testing with some files that have unicode chars like \uFE25
   25.52 +	Untested
   25.53 +	Outputerrorxml, getData and possibly other stuff should be in separate c/h files.
   25.54 +*/
   25.55 +
   25.56 +void initialize(){
   25.57 +}
   25.58 +
   25.59 +/* Function which generates the XML for the input
   25.60 +*  path directory
   25.61 +*/
   25.62 +void printFileXml(char *path, char *username){
   25.63 +
   25.64 +		DIR *dp;
   25.65 +		struct stat statbuf;
   25.66 +		struct dirent *dirp;
   25.67 +
   25.68 +		size_t startPathSize = (3+strlen(DIRECTORY)+strlen(username)+strlen(path));//includes two '/' and a '\0'
   25.69 +		char *startPath = (char*)(malloc(sizeof(char)*startPathSize));
   25.70 +		char *fullPath = startPath;
   25.71 +
   25.72 +		if(path[0] == '\0'){//The users's home/root directory
   25.73 +			//printf("DEBG883: GOT HERE\n");
   25.74 +			sprintf(startPath,"%s%s/",DIRECTORY,username);
   25.75 +			startPathSize = (2+strlen(DIRECTORY)+strlen(username));
   25.76 +		}
   25.77 +		else
   25.78 +			sprintf(startPath,"%s%s/%s/",DIRECTORY,username,path);
   25.79 +
   25.80 +        // Open given input directory
   25.81 +		//DEBG: DIRECTORY or SYSTEM_DIRECTORY + path + username for the full path on the server
   25.82 +		if((dp = opendir(startPath)) == NULL)
   25.83 +		{
   25.84 +			// Error Opening input directory
   25.85 +			//DEBG: Should be tested with some unicode characters like \uFE11.
   25.86 +			outputErrorXML("No such directory");
   25.87 +			return;
   25.88 +		}
   25.89 +		printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
   25.90 +		printf("<DirectoryList path=\"/%s\">\n",path);
   25.91 +
   25.92 +        // iterate through the directory
   25.93 +
   25.94 +		size_t lastResize = 0;
   25.95 +		while((dirp = readdir(dp)) != NULL)
   25.96 +		{
   25.97 +			if( strlen(dirp->d_name) >= lastResize){//It's easier, but far less efficient, to simply use sprintf everywhere and copy the data in each iteration.
   25.98 +				lastResize = 3*strlen(dirp->d_name) + 40;
   25.99 +				fullPath = (char*)(realloc(startPath, sizeof(char)*(lastResize+startPathSize)));
  25.100 +				if(fullPath == NULL){
  25.101 +					fullPath = startPath;
  25.102 +					free(dirp);
  25.103 +					printf("<errorCode error=\"true\"><description>%s</description></errorCode>\n","Mem reallocation error");
  25.104 +					break;
  25.105 +				}
  25.106 +				startPath = fullPath;
  25.107 +			}
  25.108 +
  25.109 +			int x;
  25.110 +			for(x = 0;dirp->d_name[x] != '\0';++x){
  25.111 +				fullPath[x+startPathSize-1] = dirp->d_name[x];
  25.112 +			}
  25.113 +			fullPath[x+startPathSize-1] = '\0';
  25.114 +
  25.115 +
  25.116 +			int statError =	stat(fullPath,&statbuf);
  25.117 +
  25.118 +			if(statError < 0)//DEBG: Come up with a better way of doing this.
  25.119 +			{
  25.120 +				//printf("<directory path =\"%s\" empty=\"true\">\n",path);
  25.121 +				printf("<errorCode error=\"true\"><description>%s%s</description></errorCode>\n","Error getting attributes for ",dirp->d_name);
  25.122 +    			//printf("</directory>");
  25.123 +
  25.124 +				break; //DEBG
  25.125 +			}
  25.126 +
  25.127 +			if(S_ISDIR(statbuf.st_mode)) // If file type is a directory
  25.128 +			{
  25.129 +				if(strcmp(dirp->d_name,".") != 0 && strcmp(dirp->d_name,"..") != 0)
  25.130 +				{
  25.131 +					printf("<sub>\n");//These tags may need to be changed
  25.132 +		  			printf("\t<name>%s</name>\n",dirp->d_name);
  25.133 +					printf("\t<size>%ld</size>\n",(long)(statbuf.st_size));//DEBG: double check these casts
  25.134 +		  			printf("\t<lastModified>%ld</lastModified>\n",(long)(statbuf.st_mtime));
  25.135 +					printf("\t<lastAccessed>%ld</lastAccessed>\n",(long)(statbuf.st_atime));
  25.136 +					printf("</sub>\n");
  25.137 +
  25.138 +				}
  25.139 +			}
  25.140 +			else // If file type isnt directory
  25.141 +			{
  25.142 +				printf("<file>\n");
  25.143 +				printf("\t<name>%s</name>\n",dirp->d_name);
  25.144 +				printf("\t<size>%ld</size>\n",(long)(statbuf.st_size));
  25.145 +				printf("\t<lastModified>%ld</lastModified>\n",(long)statbuf.st_mtime);
  25.146 +				printf("\t<lastAccessed>%ld</lastAccessed>\n",(long)statbuf.st_atime);
  25.147 +				printf("</file>\n");
  25.148 +
  25.149 +			}
  25.150 +
  25.151 +		}
  25.152 +		printf("</DirectoryList>");
  25.153 +		closedir(dp);//Also frees the pointer passed to it. dirp does not need to be freed because it is a pointer to a stream
  25.154 +		free(fullPath);//also frees startPath
  25.155 +}
  25.156 +
  25.157 +int main(int argc,char *argv[]){
  25.158 +    initialize();
  25.159 +
  25.160 +    while(FCGI_Accept() >= 0){
  25.161 +		printf("Content-type: text/xml\r\n"
  25.162 +				"\r\n");//This is added to the HTTP headers the server automatically outputs. TODO: add encoding to headers
  25.163 +
  25.164 +		char *username,*postdata;
  25.165 +		POSTDATA *data;
  25.166 +
  25.167 +
  25.168 +		if( !(username = validateCookie()) ||
  25.169 +		!(data = getPostData()) ||
  25.170 +		!(data->postData)){
  25.171 +			outputErrorXML("GOD DANGIT BOBBEH I TOLD YOU WHAT WOULD HAPPEN IF YOU KEEP WATCHIN THAT GOD DANG MTV!");//DEBG: change this
  25.172 +			return 0;
  25.173 +		}
  25.174 +		postdata = data->postData;//Interpreting it as a string
  25.175 +		postdata[data->length] = '\0';//This will work, since getPostData() allocates length+1 bytes
  25.176 +
  25.177 +		//Format postdata to represent the path without any leading or trailing /
  25.178 +		int i,j;
  25.179 +		for(i=0;postdata[i] != '\0';++i){
  25.180 +			if(postdata[i] == '='){
  25.181 +				if(postdata[i+1] == '/')
  25.182 +					++i;
  25.183 +				++i;
  25.184 +				break;
  25.185 +			}
  25.186 +		}
  25.187 +		for(j=0;postdata[i] != '\0';++i,++j){
  25.188 +		    //printf("DEBG8: %c\n",postdata[i]);
  25.189 +			postdata[j] = postdata[i];
  25.190 +		}
  25.191 +		postdata[j] = '\0';
  25.192 +		if(postdata[j-1] == '/')
  25.193 +			postdata[j-1] = '\0';
  25.194 +		printFileXml(postdata, username);
  25.195 +		free(postdata);
  25.196 +		free(username);
  25.197 +		free(data);
  25.198 +		printf("\r\n");//DOUBLE CHECK
  25.199 +	}
  25.200 +	return 0;
  25.201 +
  25.202 +}
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/c/xml/interos.h	Sat May 01 16:19:36 2010 -0400
    26.3 @@ -0,0 +1,1 @@
    26.4 +/srv/master/src/type/c/interos.h
    26.5 \ No newline at end of file
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/c/xml/persist_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    27.3 @@ -0,0 +1,20 @@
    27.4 +
    27.5 +
    27.6 +/***********************************************************************/
    27.7 +/*                  Copyright and Trademark Statement                  */
    27.8 +/***********************************************************************/
    27.9 +/*                                                                     */
   27.10 +/*          All original textual and graphical site content:           */
   27.11 +/*                                                                     */
   27.12 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
   27.13 +/*  reserved.  Reproduction in whole or in part without written        */
   27.14 +/*  permission is prohibited.  interos and the interos logos are       */
   27.15 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
   27.16 +/*  product, and service names mentioned herein may be the properties  */
   27.17 +/*  of their respective owners.  Comments in the interos.org forums    */
   27.18 +/*  are the properties of their respective authors.  All software      */
   27.19 +/*  developed in the forums is open source and belongs to everyone.    */
   27.20 +/*                                                                     */
   27.21 +/***********************************************************************/
   27.22 +/*                      e-mail: info@interos.com                       */
   27.23 +/***********************************************************************/
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/c/xml/template_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    28.3 @@ -0,0 +1,320 @@
    28.4 +/*************************************************/
    28.5 +/*  interos Standard Document Header - CGI in C  */
    28.6 +/*************************************************/
    28.7 +/*         URIs:  https://interos.com/xml/_      */
    28.8 +/*                https://www.interos.com/xml/_  */
    28.9 +/*       Source:  xml/_.c                        */
   28.10 +/*  Description:  FastCGI for interos _ XML      */
   28.11 +/*       Author:  Brent Angeline                 */
   28.12 +/*          CGI:  FastCGI in ISO/ANSI C          */
   28.13 +/*************************************************/
   28.14 +
   28.15 +/* PREPROCESSOR DIRECTIVES */
   28.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                      */
   28.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   28.18 +#include <ctype.h>          /*  tolower()                                                                */
   28.19 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
   28.20 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
   28.21 +#include <unistd.h>         /*  F_OK, access()                                                           */
   28.22 +
   28.23 +/* FUNCTION PROTOTYPE DECLARATION */
   28.24 +static void OutputErrorXML(const char* errorMessage);
   28.25 +
   28.26 +/* BEGIN MAIN PROGRAM */
   28.27 +int main(void) {
   28.28 +
   28.29 +  /* BEGIN FASTCGI */
   28.30 +  while (FCGI_Accept() >= 0) {
   28.31 +
   28.32 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
   28.33 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
   28.34 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > OUTPUT ERROR XML **/
   28.35 +      OutputErrorXML("No cookie data was received by the web server.");
   28.36 +
   28.37 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   28.38 +    } else {
   28.39 +
   28.40 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
   28.41 +      char *cookie;
   28.42 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
   28.43 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
   28.44 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > OUTPUT ERROR XML **/
   28.45 +        OutputErrorXML("The length of the cookie data string received by the web server was indicated to be less than 1 byte.");
   28.46 +      } else {
   28.47 +        char *variableName;
   28.48 +        if (!(variableName = malloc(cookieLength + 1))) {
   28.49 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > OUTPUT ERROR XML **/
   28.50 +          OutputErrorXML("Sufficient memory could not be allocated on the server for cookie variable names.");
   28.51 +        } else {
   28.52 +          char *variableValue;
   28.53 +          if (!(variableValue = malloc(cookieLength + 1))) {
   28.54 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > OUTPUT ERROR XML **/
   28.55 +            OutputErrorXML("Sufficient memory could not be allocated on the server for cookie variable values.");
   28.56 +
   28.57 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
   28.58 +          } else {
   28.59 +
   28.60 +            /* PROCESS COOKIE DATA */
   28.61 +            char *login, *password;
   28.62 +            INT i, c;
   28.63 +            login = password = NULL;
   28.64 +            c = 0;
   28.65 +            strcpy(cookie, getenv("HTTP_COOKIE"));
   28.66 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
   28.67 +              i = 0;
   28.68 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
   28.69 +                variableName[i] = cookie[c];
   28.70 +                ++c;
   28.71 +                ++i;
   28.72 +              }
   28.73 +              variableName[i] = '\0';
   28.74 +              ++c;
   28.75 +              i = 0;
   28.76 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
   28.77 +                variableValue[i] = cookie[c];
   28.78 +                ++c;
   28.79 +                ++i;
   28.80 +              }
   28.81 +              variableValue[i] = '\0';
   28.82 +              ++c;
   28.83 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
   28.84 +                ++c;
   28.85 +              }
   28.86 +              if (!login && !strcmp(variableName, "login")) {
   28.87 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
   28.88 +                  strcpy(login, variableValue);
   28.89 +                }
   28.90 +              } else if (!password && !strcmp(variableName, "password")) {
   28.91 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
   28.92 +                  strcpy(password, variableValue);
   28.93 +                }
   28.94 +              }
   28.95 +            }
   28.96 +
   28.97 +            /* IF LOGIN VALUE IS MISSING... */
   28.98 +            if (!login) {
   28.99 +              /** ERROR | LOGIN VALUE IS MISSING > OUTPUT ERROR XML **/
  28.100 +              OutputErrorXML("No login value was received.");
  28.101 +
  28.102 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
  28.103 +            } else {
  28.104 +
  28.105 +              /* VERIFY LOGIN AND PASSWORD */
  28.106 +              char *directory;
  28.107 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
  28.108 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > OUTPUT ERROR XML **/
  28.109 +                OutputErrorXML("Sufficient memory could not be allocated on the server for the user's home directory name.");
  28.110 +              } else {
  28.111 +                char *systemDirectory;
  28.112 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
  28.113 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > OUTPUT ERROR XML **/
  28.114 +                  OutputErrorXML("Sufficient memory could not be allocated on the server for the user's system directory name.");
  28.115 +                } else {
  28.116 +                  strcpy(directory, DIRECTORY);
  28.117 +                  strcat(directory, login);
  28.118 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
  28.119 +                  strcat(systemDirectory, login);
  28.120 +
  28.121 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
  28.122 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
  28.123 +                    /** ERROR | CANNOT ACCESS DIRECTORY > OUTPUT ERROR XML **/
  28.124 +                    OutputErrorXML("The user's home directory on the server could not be accessed.");
  28.125 +
  28.126 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
  28.127 +                  } else {
  28.128 +
  28.129 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
  28.130 +                    char *passwordFileName;
  28.131 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
  28.132 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > OUTPUT ERROR XML **/
  28.133 +                      OutputErrorXML("Sufficient memory could not be allocated on the server for the name of the user's password file.");
  28.134 +                    } else {
  28.135 +                      strcpy(passwordFileName, systemDirectory);
  28.136 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
  28.137 +
  28.138 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
  28.139 +                      if (access(passwordFileName, F_OK)) {
  28.140 +                        /** ERROR | CANNOT ACCESS FILE > OUTPUT ERROR XML **/
  28.141 +                        OutputErrorXML("The user's password file on the server cannot be accessed.");
  28.142 +
  28.143 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
  28.144 +                      } else {
  28.145 +
  28.146 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
  28.147 +                        FILE *passwordFile;
  28.148 +
  28.149 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
  28.150 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
  28.151 +                          /** ERROR | CANNOT READ FILE > OUTPUT ERROR XML **/
  28.152 +                          OutputErrorXML("The user's password file on the server cannot be opened for reading.");
  28.153 +
  28.154 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
  28.155 +                        } else {
  28.156 +                          char *filePassword;
  28.157 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
  28.158 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > OUTPUT ERROR XML **/
  28.159 +                            OutputErrorXML("Sufficient memory could not be allocated on the server for reading the user's password.");
  28.160 +                          } else {
  28.161 +                            char c;
  28.162 +                            i = 0;
  28.163 +
  28.164 +                            /* READ PASSWORD FROM PASSWORD FILE */
  28.165 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
  28.166 +                              filePassword[i] = c;
  28.167 +                              ++i;
  28.168 +                            }
  28.169 +                            filePassword[i] = '\0';
  28.170 +                            fclose(passwordFile);
  28.171 +
  28.172 +                            /* IF PASSWORD FAILS COMPARISON... */
  28.173 +                            if (strcmp(filePassword, password)) {
  28.174 +                              /** ERROR | PASSWORD FAILED > OUTPUT ERROR XML **/
  28.175 +                              OutputErrorXML("The password provided failed comparison with the password stored on the server.");
  28.176 +
  28.177 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
  28.178 +                            } else {
  28.179 +
  28.180 +                              /* IF POST DATA DOESN'T EXIST OR IS TOO LONG... */
  28.181 +                              if (!getenv("CONTENT_LENGTH") || (sizeof(STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10)) > sizeof(INT))) {
  28.182 +                                /** ERROR | POST DATA DOES NOT EXIST OR IS TOO LONG > OUTPUT ERROR XML **/
  28.183 +                                OutputErrorXML("No post data was received by the web server.");
  28.184 +
  28.185 +                              /* OTHERWISE, IF POST DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  28.186 +                              } else {
  28.187 +
  28.188 +                                /* ATTEMPT TO ALLOCATE MEMORY FOR POST VARIABLES */
  28.189 +                                char *post;
  28.190 +                                INT postLength = STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10);
  28.191 +                                if ((postLength < 1) || !(post = malloc(postLength + 1))) {
  28.192 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR POST DATA! > OUTPUT ERROR XML **/
  28.193 +                                  OutputErrorXML("The length of the post data string received by the web server was indicated to be less than 1 byte.");
  28.194 +                                } else {
  28.195 +                                  free(variableName);
  28.196 +                                  if (!(variableName = malloc(postLength + 1))) {
  28.197 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR POST VARIABLE NAME > OUTPUT ERROR XML **/
  28.198 +                                    OutputErrorXML("Sufficient memory could not be allocated on the server for post variable names.");
  28.199 +                                  } else {
  28.200 +                                    free(variableValue);
  28.201 +                                    if (!(variableValue = malloc(postLength + 1))) {
  28.202 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR POST VARIABLE VALUE > OUTPUT ERROR XML **/
  28.203 +                                      OutputErrorXML("Sufficient memory could not be allocated on the server for post variable values.");
  28.204 +
  28.205 +                                    /* IF SUFFICIENT MEMORY FOR POST VARIABLES... */
  28.206 +                                    } else {
  28.207 +
  28.208 +                                      /* PROCESS POST DATA */
  28.209 +                                      char *postVariableOne, *postVariableTwo;
  28.210 +                                      INT p;
  28.211 +                                      postVariableOne = postVariableTwo = NULL;
  28.212 +                                      p = i = 0;
  28.213 +                                      fread(post, postLength, 1, stdin);
  28.214 +                                      post[postLength] = '\0';
  28.215 +                                      while ((p < postLength) && (post[p] != '\0')) {
  28.216 +                                        i = 0;
  28.217 +                                        while ((p < postLength) && (post[p] != '=') && (post[p] != '\0')) {
  28.218 +                                          variableName[i] = post[p];
  28.219 +                                          ++p;
  28.220 +                                          ++i;
  28.221 +                                        }
  28.222 +                                        variableName[i] = '\0';
  28.223 +                                        ++p;
  28.224 +                                        i = 0;
  28.225 +                                        while ((p < postLength) && (post[p] != '&') && (post[p] != '\0')) {
  28.226 +                                          variableValue[i] = post[p];
  28.227 +                                          ++p;
  28.228 +                                          ++i;
  28.229 +                                        }
  28.230 +                                        variableValue[i] = '\0';
  28.231 +                                        if (post[p] != '\0') {
  28.232 +                                          ++p;
  28.233 +                                        }
  28.234 +                                        if (!postVariableOne && !strcmp(variableName, "postVariableOne")) {
  28.235 +                                          if ((postVariableOne = malloc(strlen(variableValue) + 1)) != 0) {
  28.236 +                                            strcpy(postVariableOne, variableValue);
  28.237 +                                            for (i = 0; i < strlen(login); ++i) {
  28.238 +                                              postVariableOne[i] = tolower(postVariableOne[i]);
  28.239 +                                            }
  28.240 +                                          }
  28.241 +                                        } else if (!postVariableTwo && !strcmp(variableName, "postVariableTwo")) {
  28.242 +                                          if ((postVariableTwo = malloc(strlen(variableValue) + 1)) != 0) {
  28.243 +                                            strcpy(postVariableTwo, variableValue);
  28.244 +                                          }
  28.245 +                                        }
  28.246 +                                      }
  28.247 +                                      free(variableValue);
  28.248 +                                      variableValue = NULL;
  28.249 +
  28.250 +                                      /* new code begins here */
  28.251 +
  28.252 +                                      printf("Content-Type: text/xml\r\n\r\n");
  28.253 +                                      printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
  28.254 +                                      printf("<_container_>\n");
  28.255 +                                      printf("  <errorCode error=\"false\">\n");
  28.256 +                                      printf("    <description>none</description>\n");
  28.257 +                                      printf("  </errorCode>\n");
  28.258 +                                      printf("  <_confirmation_>_confirmationData_</_confirmation_>\n");
  28.259 +                                      printf("</_container_>");
  28.260 +
  28.261 +                                      free(postVariableTwo);
  28.262 +                                      free(postVariableOne);
  28.263 +                                    }
  28.264 +                                    free(variableName);
  28.265 +                                  }
  28.266 +                                  free(post);
  28.267 +			        }
  28.268 +                              }
  28.269 +                            }
  28.270 +                            free(filePassword);
  28.271 +                          }
  28.272 +                        }
  28.273 +                      }
  28.274 +                      free(passwordFileName);
  28.275 +                    }
  28.276 +                  }
  28.277 +                  free(systemDirectory);
  28.278 +                }
  28.279 +                free(directory);
  28.280 +              }
  28.281 +              free(login);
  28.282 +            }
  28.283 +            free(password);
  28.284 +            free(variableValue);
  28.285 +          }
  28.286 +          free(variableName);
  28.287 +        }
  28.288 +        free(cookie);
  28.289 +      }
  28.290 +    }
  28.291 +  }
  28.292 +  return 0;
  28.293 +}
  28.294 +
  28.295 +/* FUNCTION | OUTPUT ERROR XML */
  28.296 +static void OutputErrorXML(const char *errorMessage) {
  28.297 +  printf("Content-Type: text/xml\r\n\r\n");
  28.298 +  printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
  28.299 +  printf("<_container_>\n");
  28.300 +  printf("  <errorCode error=\"true\">\n");
  28.301 +  printf("    <description>%s</description>\n", errorMessage);
  28.302 +  printf("  </errorCode>\n");
  28.303 +  printf("</_container_>");
  28.304 +}
  28.305 +
  28.306 +/***********************************************************************/
  28.307 +/*                  Copyright and Trademark Statement                  */
  28.308 +/***********************************************************************/
  28.309 +/*                                                                     */
  28.310 +/*          All original textual and graphical site content:           */
  28.311 +/*                                                                     */
  28.312 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
  28.313 +/*  reserved.  Reproduction in whole or in part without written        */
  28.314 +/*  permission is prohibited.  interos and the interos logos are       */
  28.315 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  28.316 +/*  product, and service names mentioned herein may be the properties  */
  28.317 +/*  of their respective owners.  Comments in the interos.org forums    */
  28.318 +/*  are the properties of their respective authors.  All software      */
  28.319 +/*  developed in the forums is open source and belongs to everyone.    */
  28.320 +/*                                                                     */
  28.321 +/***********************************************************************/
  28.322 +/*                      e-mail: info@interos.com                       */
  28.323 +/***********************************************************************/
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/c/xml/user_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
    29.3 @@ -0,0 +1,237 @@
    29.4 +/****************************************************/
    29.5 +/*   interos Standard Document Header - CGI in C    */
    29.6 +/****************************************************/
    29.7 +/*         URIs:  https://interos.com/xml/user      */
    29.8 +/*                https://www.interos.com/xml/user  */
    29.9 +/*       Source:  xml/user.c                        */
   29.10 +/*  Description:  FastCGI for interos user XML      */
   29.11 +/*       Author:  Brent Angeline                    */
   29.12 +/*          CGI:  FastCGI in ISO/ANSI C             */
   29.13 +/****************************************************/
   29.14 +
   29.15 +/* PREPROCESSOR DIRECTIVES */
   29.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                      */
   29.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
   29.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
   29.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
   29.20 +#include <unistd.h>         /*  F_OK, access()                                                           */
   29.21 +
   29.22 +/* FUNCTION PROTOTYPE DECLARATION */
   29.23 +static void OutputErrorXML(const char* errorMessage);
   29.24 +
   29.25 +/* BEGIN MAIN PROGRAM */
   29.26 +int main(void) {
   29.27 +
   29.28 +  /* BEGIN FASTCGI */
   29.29 +  while (FCGI_Accept() >= 0) {
   29.30 +
   29.31 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
   29.32 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
   29.33 +      /** ERROR | COOKIE DATA DOES NOT EXIST > OUTPUT ERROR XML **/
   29.34 +      OutputErrorXML("No cookie data was received by the web server.");
   29.35 +
   29.36 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
   29.37 +    } else {
   29.38 +
   29.39 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
   29.40 +      char *cookie;
   29.41 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
   29.42 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
   29.43 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > OUTPUT ERROR XML **/
   29.44 +        OutputErrorXML("The length of the cookie data string received by the web server was indicated to be less than 1 byte.");
   29.45 +      } else {
   29.46 +        char *variableName;
   29.47 +        if (!(variableName = malloc(cookieLength + 1))) {
   29.48 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > OUTPUT ERROR XML **/
   29.49 +          OutputErrorXML("Sufficient memory could not be allocated on the server for cookie variable names.");
   29.50 +        } else {
   29.51 +          char *variableValue;
   29.52 +          if (!(variableValue = malloc(cookieLength + 1))) {
   29.53 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > OUTPUT ERROR XML **/
   29.54 +            OutputErrorXML("Sufficient memory could not be allocated on the server for cookie variable values.");
   29.55 +
   29.56 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
   29.57 +          } else {
   29.58 +
   29.59 +            /* PROCESS COOKIE DATA */
   29.60 +            char *login, *password;
   29.61 +            INT i, c;
   29.62 +            login = password = NULL;
   29.63 +            c = 0;
   29.64 +            strcpy(cookie, getenv("HTTP_COOKIE"));
   29.65 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
   29.66 +              i = 0;
   29.67 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
   29.68 +                variableName[i] = cookie[c];
   29.69 +                ++c;
   29.70 +                ++i;
   29.71 +              }
   29.72 +              variableName[i] = '\0';
   29.73 +              ++c;
   29.74 +              i = 0;
   29.75 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
   29.76 +                variableValue[i] = cookie[c];
   29.77 +                ++c;
   29.78 +                ++i;
   29.79 +              }
   29.80 +              variableValue[i] = '\0';
   29.81 +              ++c;
   29.82 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
   29.83 +                ++c;
   29.84 +              }
   29.85 +              if (!login && !strcmp(variableName, "login")) {
   29.86 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
   29.87 +                  strcpy(login, variableValue);
   29.88 +                }
   29.89 +              } else if (!password && !strcmp(variableName, "password")) {
   29.90 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
   29.91 +                  strcpy(password, variableValue);
   29.92 +                }
   29.93 +              }
   29.94 +            }
   29.95 +
   29.96 +            /* IF LOGIN VALUE IS MISSING... */
   29.97 +            if (!login) {
   29.98 +              /** ERROR | LOGIN VALUE IS MISSING > OUTPUT ERROR XML **/
   29.99 +              OutputErrorXML("No login value was received.");
  29.100 +
  29.101 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
  29.102 +            } else {
  29.103 +
  29.104 +              /* VERIFY LOGIN AND PASSWORD */
  29.105 +              char *directory;
  29.106 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
  29.107 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > OUTPUT ERROR XML **/
  29.108 +                OutputErrorXML("Sufficient memory could not be allocated on the server for the user's home directory name.");
  29.109 +              } else {
  29.110 +                char *systemDirectory;
  29.111 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
  29.112 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > OUTPUT ERROR XML **/
  29.113 +                  OutputErrorXML("Sufficient memory could not be allocated on the server for the user's system directory name.");
  29.114 +                } else {
  29.115 +                  strcpy(directory, DIRECTORY);
  29.116 +                  strcat(directory, login);
  29.117 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
  29.118 +                  strcat(systemDirectory, login);
  29.119 +
  29.120 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
  29.121 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
  29.122 +                    /** ERROR | CANNOT ACCESS DIRECTORY > OUTPUT ERROR XML **/
  29.123 +                    OutputErrorXML("The user's home directory on the server could not be accessed.");
  29.124 +
  29.125 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
  29.126 +                  } else {
  29.127 +
  29.128 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
  29.129 +                    char *passwordFileName;
  29.130 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
  29.131 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > OUTPUT ERROR XML **/
  29.132 +                      OutputErrorXML("Sufficient memory could not be allocated on the server for the name of the user's password file.");
  29.133 +                    } else {
  29.134 +                      strcpy(passwordFileName, systemDirectory);
  29.135 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
  29.136 +
  29.137 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
  29.138 +                      if (access(passwordFileName, F_OK)) {
  29.139 +                        /** ERROR | CANNOT ACCESS FILE > OUTPUT ERROR XML **/
  29.140 +                        OutputErrorXML("The user's password file on the server cannot be accessed.");
  29.141 +
  29.142 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
  29.143 +                      } else {
  29.144 +
  29.145 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
  29.146 +                        FILE *passwordFile;
  29.147 +
  29.148 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
  29.149 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
  29.150 +                          /** ERROR | CANNOT READ FILE > OUTPUT ERROR XML **/
  29.151 +                          OutputErrorXML("The user's password file on the server cannot be opened for reading.");
  29.152 +
  29.153 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
  29.154 +                        } else {
  29.155 +                          char *filePassword;
  29.156 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
  29.157 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > OUTPUT ERROR XML **/
  29.158 +                            OutputErrorXML("Sufficient memory could not be allocated on the server for reading the user's password.");
  29.159 +                          } else {
  29.160 +                            char c;
  29.161 +                            i = 0;
  29.162 +
  29.163 +                            /* READ PASSWORD FROM PASSWORD FILE */
  29.164 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
  29.165 +                              filePassword[i] = c;
  29.166 +                              ++i;
  29.167 +                            }
  29.168 +                            filePassword[i] = '\0';
  29.169 +                            fclose(passwordFile);
  29.170 +
  29.171 +                            /* IF PASSWORD FAILS COMPARISON... */
  29.172 +                            if (strcmp(filePassword, password)) {
  29.173 +                              /** ERROR | PASSWORD FAILED > OUTPUT ERROR XML **/
  29.174 +                              OutputErrorXML("The password provided failed comparison with the password stored on the server.");
  29.175 +
  29.176 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
  29.177 +                            } else {
  29.178 +                              printf("Content-Type: text/xml\r\n\r\n"
  29.179 +                                     "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
  29.180 +                                     "<user>\n"
  29.181 +                                     "  <errorCode error=\"false\">\n"
  29.182 +                                     "    <description>none</description>\n"
  29.183 +                                     "  </errorCode>\n"
  29.184 +                                     "  <userName>%s</userName>\n"
  29.185 +                                     "</user>", login);
  29.186 +                            }
  29.187 +                            free(filePassword);
  29.188 +                          }
  29.189 +                        }
  29.190 +                      }
  29.191 +                      free(passwordFileName);
  29.192 +                    }
  29.193 +                  }
  29.194 +                  free(systemDirectory);
  29.195 +                }
  29.196 +                free(directory);
  29.197 +              }
  29.198 +              free(login);
  29.199 +            }
  29.200 +            free(password);
  29.201 +            free(variableValue);
  29.202 +          }
  29.203 +          free(variableName);
  29.204 +        }
  29.205 +        free(cookie);
  29.206 +      }
  29.207 +    }
  29.208 +  }
  29.209 +  return 0;
  29.210 +}
  29.211 +
  29.212 +/* FUNCTION | OUTPUT ERROR XML */
  29.213 +static void OutputErrorXML(const char *errorMessage) {
  29.214 +  printf("Content-Type: text/xml\r\n\r\n"
  29.215 +         "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
  29.216 +         "<user>\n"
  29.217 +         "  <errorCode error=\"true\">\n"
  29.218 +         "    <description>%s</description>\n"
  29.219 +         "  </errorCode>\n"
  29.220 +         "</user>", errorMessage);
  29.221 +}
  29.222 +
  29.223 +/***********************************************************************/
  29.224 +/*                  Copyright and Trademark Statement                  */
  29.225 +/***********************************************************************/
  29.226 +/*                                                                     */
  29.227 +/*          All original textual and graphical site content:           */
  29.228 +/*                                                                     */
  29.229 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
  29.230 +/*  reserved.  Reproduction in whole or in part without written        */
  29.231 +/*  permission is prohibited.  interos and the interos logos are       */
  29.232 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  29.233 +/*  product, and service names mentioned herein may be the properties  */
  29.234 +/*  of their respective owners.  Comments in the interos.org forums    */
  29.235 +/*  are the properties of their respective authors.  All software      */
  29.236 +/*  developed in the forums is open source and belongs to everyone.    */
  29.237 +/*                                                                     */
  29.238 +/***********************************************************************/
  29.239 +/*                      e-mail: info@interos.com                       */
  29.240 +/***********************************************************************/
    30.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2 +++ b/conf/httpd.conf	Sat May 01 16:19:36 2010 -0400
    30.3 @@ -0,0 +1,2055 @@
    30.4 +ServerType standalone
    30.5 +
    30.6 +ServerRoot "/usr/local"
    30.7 +
    30.8 +PidFile /var/run/httpd.pid
    30.9 +ScoreBoardFile /var/run/httpd.scoreboard
   30.10 +
   30.11 +ResourceConfig /dev/null
   30.12 +AccessConfig   /dev/null
   30.13 +
   30.14 +Timeout 300
   30.15 +KeepAlive On
   30.16 +MaxKeepAliveRequests 100
   30.17 +KeepAliveTimeout 15
   30.18 +
   30.19 +MinSpareServers 5
   30.20 +MaxSpareServers 10
   30.21 +
   30.22 +StartServers 5
   30.23 +MaxClients 150
   30.24 +MaxRequestsPerChild 0
   30.25 +
   30.26 +LoadModule mmap_static_module  libexec/apache/mod_mmap_static.so
   30.27 +LoadModule vhost_alias_module  libexec/apache/mod_vhost_alias.so
   30.28 +LoadModule env_module          libexec/apache/mod_env.so
   30.29 +LoadModule define_module       libexec/apache/mod_define.so
   30.30 +LoadModule config_log_module   libexec/apache/mod_log_config.so
   30.31 +LoadModule mime_magic_module   libexec/apache/mod_mime_magic.so
   30.32 +LoadModule mime_module         libexec/apache/mod_mime.so
   30.33 +LoadModule negotiation_module  libexec/apache/mod_negotiation.so
   30.34 +LoadModule status_module       libexec/apache/mod_status.so
   30.35 +LoadModule info_module         libexec/apache/mod_info.so
   30.36 +LoadModule includes_module     libexec/apache/mod_include.so
   30.37 +LoadModule autoindex_module    libexec/apache/mod_autoindex.so
   30.38 +LoadModule dir_module          libexec/apache/mod_dir.so
   30.39 +LoadModule cgi_module          libexec/apache/mod_cgi.so
   30.40 +LoadModule asis_module         libexec/apache/mod_asis.so
   30.41 +LoadModule imap_module         libexec/apache/mod_imap.so
   30.42 +LoadModule action_module       libexec/apache/mod_actions.so
   30.43 +LoadModule speling_module      libexec/apache/mod_speling.so
   30.44 +LoadModule userdir_module      libexec/apache/mod_userdir.so
   30.45 +LoadModule alias_module        libexec/apache/mod_alias.so
   30.46 +LoadModule rewrite_module      libexec/apache/mod_rewrite.so
   30.47 +LoadModule access_module       libexec/apache/mod_access.so
   30.48 +LoadModule auth_module         libexec/apache/mod_auth.so
   30.49 +LoadModule anon_auth_module    libexec/apache/mod_auth_anon.so
   30.50 +LoadModule db_auth_module      libexec/apache/mod_auth_db.so
   30.51 +LoadModule digest_module       libexec/apache/mod_digest.so
   30.52 +LoadModule proxy_module        libexec/apache/libproxy.so
   30.53 +LoadModule cern_meta_module    libexec/apache/mod_cern_meta.so
   30.54 +LoadModule expires_module      libexec/apache/mod_expires.so
   30.55 +LoadModule headers_module      libexec/apache/mod_headers.so
   30.56 +LoadModule usertrack_module    libexec/apache/mod_usertrack.so
   30.57 +LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
   30.58 +LoadModule unique_id_module    libexec/apache/mod_unique_id.so
   30.59 +LoadModule setenvif_module     libexec/apache/mod_setenvif.so
   30.60 +LoadModule php5_module         libexec/apache/libphp5.so
   30.61 +LoadModule fastcgi_module      libexec/apache/mod_fastcgi.so
   30.62 +
   30.63 +<IfDefine SSL>
   30.64 +  LoadModule ssl_module        libexec/apache/libssl.so
   30.65 +</IfDefine>
   30.66 +LoadModule gzip_module         libexec/apache/mod_gzip.so
   30.67 +
   30.68 +ClearModuleList
   30.69 +AddModule mod_mmap_static.c
   30.70 +AddModule mod_vhost_alias.c
   30.71 +AddModule mod_env.c
   30.72 +AddModule mod_define.c
   30.73 +AddModule mod_log_config.c
   30.74 +AddModule mod_mime_magic.c
   30.75 +AddModule mod_mime.c
   30.76 +AddModule mod_negotiation.c
   30.77 +AddModule mod_status.c
   30.78 +AddModule mod_info.c
   30.79 +AddModule mod_include.c
   30.80 +AddModule mod_autoindex.c
   30.81 +AddModule mod_dir.c
   30.82 +AddModule mod_cgi.c
   30.83 +AddModule mod_asis.c
   30.84 +AddModule mod_imap.c
   30.85 +AddModule mod_actions.c
   30.86 +AddModule mod_speling.c
   30.87 +AddModule mod_userdir.c
   30.88 +AddModule mod_alias.c
   30.89 +AddModule mod_rewrite.c
   30.90 +AddModule mod_access.c
   30.91 +AddModule mod_auth.c
   30.92 +AddModule mod_auth_anon.c
   30.93 +AddModule mod_auth_db.c
   30.94 +AddModule mod_digest.c
   30.95 +AddModule mod_proxy.c
   30.96 +AddModule mod_cern_meta.c
   30.97 +AddModule mod_expires.c
   30.98 +AddModule mod_headers.c
   30.99 +AddModule mod_usertrack.c
  30.100 +AddModule mod_log_forensic.c
  30.101 +AddModule mod_unique_id.c
  30.102 +AddModule mod_so.c
  30.103 +AddModule mod_setenvif.c
  30.104 +AddModule mod_php5.c
  30.105 +AddModule mod_fastcgi.c
  30.106 +
  30.107 +<IfDefine SSL>
  30.108 +  AddModule mod_ssl.c
  30.109 +</IfDefine>
  30.110 +AddModule mod_gzip.c
  30.111 +
  30.112 +Port 80
  30.113 +
  30.114 +<IfDefine SSL>
  30.115 +  Listen 80
  30.116 +  Listen 443
  30.117 +</IfDefine>
  30.118 +
  30.119 +User www
  30.120 +Group www
  30.121 +
  30.122 +ServerAdmin sys@interos.com
  30.123 +DocumentRoot "/srv/http/www_default"
  30.124 +ServerName interos
  30.125 +
  30.126 +<Directory />
  30.127 +  Options None
  30.128 +  AllowOverride None
  30.129 +  Order allow,deny
  30.130 +  Allow from all
  30.131 +</Directory>
  30.132 +
  30.133 +<Directory /srv/*/www_default>
  30.134 +  Options FollowSymLinks
  30.135 +</Directory>
  30.136 +<Directory /srv/*/www_default/sys/markup>
  30.137 +  Options +MultiViews
  30.138 +</Directory>
  30.139 +
  30.140 +<Directory /srv/*/interos.*/sys/markup>
  30.141 +  Options +Multiviews
  30.142 +</Directory>
  30.143 +
  30.144 +<Directory /srv/*/about.interos.*>
  30.145 +  Options FollowSymLinks
  30.146 +</Directory>
  30.147 +<Directory /srv/*/about.interos.*/sys/markup>
  30.148 +  Options +MultiViews
  30.149 +</Directory>
  30.150 +
  30.151 +<Directory /srv/*/blog.interos.*>
  30.152 +  Options FollowSymLinks
  30.153 +</Directory>
  30.154 +<Directory /srv/*/blog.interos.*/sys/markup>
  30.155 +  Options +MultiViews
  30.156 +</Directory>
  30.157 +
  30.158 +<Directory /srv/*/code.interos.*>
  30.159 +  Options FollowSymLinks
  30.160 +</Directory>
  30.161 +<Directory /srv/*/code.interos.*/sys/markup>
  30.162 +  Options +MultiViews
  30.163 +</Directory>
  30.164 +
  30.165 +<Directory /srv/*/demo.interos.com>
  30.166 +  Options FollowSymLinks
  30.167 +</Directory>
  30.168 +<Directory /srv/*/demo.interos.com/sys/markup>
  30.169 +  Options +MultiViews
  30.170 +</Directory>
  30.171 +
  30.172 +<Directory /srv/*/e-mail.interos.*>
  30.173 +  Options FollowSymLinks
  30.174 +</Directory>
  30.175 +<Directory /srv/*/e-mail.interos.*/sys/markup>
  30.176 +  Options +MultiViews
  30.177 +</Directory>
  30.178 +
  30.179 +<Directory /srv/*/faq.interos.*>
  30.180 +  Options FollowSymLinks
  30.181 +</Directory>
  30.182 +<Directory /srv/*/faq.interos.*/sys/markup>
  30.183 +  Options +MultiViews
  30.184 +</Directory>
  30.185 +
  30.186 +<Directory /srv/*/gear.interos.*>
  30.187 +  Options FollowSymLinks
  30.188 +</Directory>
  30.189 +<Directory /srv/*/gear.interos.*/sys/markup>
  30.190 +  Options +MultiViews
  30.191 +</Directory>
  30.192 +
  30.193 +<Directory /srv/*/help.interos.*>
  30.194 +  Options FollowSymLinks
  30.195 +</Directory>
  30.196 +<Directory /srv/*/help.interos.*/sys/markup>
  30.197 +  Options +MultiViews
  30.198 +</Directory>
  30.199 +
  30.200 +<Directory /srv/*/home.interos.*>
  30.201 +  Options FollowSymLinks
  30.202 +</Directory>
  30.203 +<Directory /srv/*/home.interos.*/sys/markup>
  30.204 +  Options +MultiViews
  30.205 +</Directory>
  30.206 +
  30.207 +<Directory /srv/*/login.interos.*>
  30.208 +  Options FollowSymLinks
  30.209 +</Directory>
  30.210 +<Directory /srv/*/login.interos.*/sys/markup>
  30.211 +  Options +MultiViews
  30.212 +</Directory>
  30.213 +<Directory /srv/http/planet.interos.org>
  30.214 +  Options FollowSymLinks
  30.215 +</Directory>
  30.216 +
  30.217 +<IfModule mod_dir.c>
  30.218 +  DirectoryIndex index.html
  30.219 +</IfModule>
  30.220 +
  30.221 +UseCanonicalName On
  30.222 +
  30.223 +<IfModule mod_mime.c>
  30.224 +  TypesConfig /usr/local/etc/apache/mime.types
  30.225 +</IfModule>
  30.226 +
  30.227 +DefaultType text/plain
  30.228 +
  30.229 +<IfModule mod_mime_magic.c>
  30.230 +  MIMEMagicFile /usr/local/etc/apache/magic
  30.231 +</IfModule>
  30.232 +
  30.233 +HostnameLookups Off
  30.234 +
  30.235 +ErrorLog /var/log/httpd-error.log
  30.236 +
  30.237 +LogLevel warn
  30.238 +
  30.239 +LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  30.240 +LogFormat "%h %l %u %t \"%r\" %>s %b" common
  30.241 +LogFormat "%{Referer}i -> %U" referer
  30.242 +LogFormat "%{User-agent}i" agent
  30.243 +
  30.244 +CustomLog /var/log/httpd-access.log combined
  30.245 +ServerSignature On
  30.246 +
  30.247 +<IfModule mod_mime.c>
  30.248 +  AddLanguage da .dk
  30.249 +  AddLanguage nl .nl
  30.250 +  AddLanguage en .en
  30.251 +  AddLanguage et .ee
  30.252 +  AddLanguage fr .fr
  30.253 +  AddLanguage de .de
  30.254 +  AddLanguage el .el
  30.255 +  AddLanguage he .he
  30.256 +  AddCharset ISO-8859-8 .iso8859-8
  30.257 +  AddLanguage it .it
  30.258 +  AddLanguage ja .ja
  30.259 +  AddCharset ISO-2022-JP .jis
  30.260 +  AddLanguage kr .kr
  30.261 +  AddCharset ISO-2022-KR .iso-kr
  30.262 +  AddLanguage nn .nn
  30.263 +  AddLanguage no .no
  30.264 +  AddLanguage pl .po
  30.265 +  AddCharset ISO-8859-2 .iso-pl
  30.266 +  AddLanguage pt .pt
  30.267 +  AddLanguage pt-br .pt-br
  30.268 +  AddLanguage ltz .lu
  30.269 +  AddLanguage ca .ca
  30.270 +  AddLanguage es .es
  30.271 +  AddLanguage sv .sv
  30.272 +  AddLanguage cs .cz .cs
  30.273 +  AddLanguage ru .ru
  30.274 +  AddLanguage zh-TW .zh-tw
  30.275 +  AddCharset Big5         .Big5    .big5
  30.276 +  AddCharset WINDOWS-1251 .cp-1251
  30.277 +  AddCharset CP866        .cp866
  30.278 +  AddCharset ISO-8859-5   .iso-ru
  30.279 +  AddCharset KOI8-R       .koi8-r
  30.280 +  AddCharset UCS-2        .ucs2
  30.281 +  AddCharset UCS-4        .ucs4
  30.282 +  AddCharset UTF-8        .utf8
  30.283 +  <IfModule mod_negotiation.c>
  30.284 +    LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
  30.285 +  </IfModule>
  30.286 +  AddType application/x-tar .tgz
  30.287 +  AddEncoding x-compress .Z
  30.288 +  AddEncoding x-gzip .gz .tgz
  30.289 +  AddType application/xhtml+xml;qs=0.95 .xhtml
  30.290 +  AddType application/x-httpd-php .php
  30.291 +  AddType application/x-httpd-php-source .phps
  30.292 +</IfModule>
  30.293 +
  30.294 +ErrorDocument 500 /
  30.295 +ErrorDocument 404 /
  30.296 +ErrorDocument 403 /
  30.297 +
  30.298 +<IfModule mod_setenvif.c>
  30.299 +  BrowserMatch "Mozilla/2" nokeepalive
  30.300 +  BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
  30.301 +  BrowserMatch "RealPlayer 4\.0" force-response-1.0
  30.302 +  BrowserMatch "Java/1\.0" force-response-1.0
  30.303 +  BrowserMatch "JDK/1\.0" force-response-1.0
  30.304 +</IfModule>
  30.305 +
  30.306 +NameVirtualHost *:80
  30.307 +
  30.308 +<VirtualHost *:80>
  30.309 +  ServerAdmin sys@interos.org
  30.310 +</VirtualHost>
  30.311 +
  30.312 +<VirtualHost *:80>
  30.313 +  ServerAdmin sys@interos.org
  30.314 +  DocumentRoot /srv/http/interos.org
  30.315 +  ServerName interos.org
  30.316 +  ServerAlias www.interos.org
  30.317 +
  30.318 +  RewriteEngine on
  30.319 +
  30.320 +  RewriteRule ^/favicon\.ico$ /sys/images/favicon.ico
  30.321 +  RewriteRule ^/index\.html$ /sys/markup/home
  30.322 +
  30.323 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.324 +  RewriteRule ^/docs/(.*) /sys/docs/$1
  30.325 +  RewriteRule ^/dtd/(.*) /sys/dtd/$1
  30.326 +  RewriteRule ^/flash/(.*) /sys/flash/$1
  30.327 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.328 +  RewriteRule ^/java/(.*) /sys/java/$1
  30.329 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.330 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.331 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.332 +  RewriteRule ^/xml/(.*) /sys/xml/$1
  30.333 +
  30.334 +  RewriteRule ^(/sys(/markup)?)?/about/?$ /sys/markup/about
  30.335 +  RewriteRule ^(/sys(/markup)?)?/blog/?$ /sys/markup/blog
  30.336 +  RewriteRule ^(/sys(/markup)?)?/code/?$ /sys/markup/code
  30.337 +  RewriteRule ^(/sys(/markup)?)?/e-?mail/?$ /sys/markup/e-mail
  30.338 +  RewriteRule ^(/sys(/markup)?)?/f(\.a\.q\.|aq)/?$ /sys/markup/faq
  30.339 +  RewriteRule ^(/sys(/markup)?)?/gear/?$ /sys/markup/gear
  30.340 +  RewriteRule ^(/sys(/markup)?)?/help/?$ /sys/markup/help
  30.341 +  RewriteRule ^(/sys(/markup)?)?/home/?$ /sys/markup/home
  30.342 +
  30.343 +  <Directory /srv/http/interos.org/sys>
  30.344 +    Options FollowSymLinks
  30.345 +  </Directory>
  30.346 +
  30.347 +  <Directory /srv/http/interos.org/sys/docs>
  30.348 +    Options +MultiViews
  30.349 +  </Directory>
  30.350 +</VirtualHost>
  30.351 +
  30.352 +<VirtualHost *:80>
  30.353 +  DocumentRoot /srv/http/interos.com
  30.354 +  ServerName interos.com
  30.355 +  ServerAlias www.interos.com
  30.356 +
  30.357 +  RewriteEngine on
  30.358 +
  30.359 +  RewriteRule ^/favicon\.ico$ /sys/images/favicon.ico
  30.360 +  RewriteRule ^/index\.html$ /sys/markup/home
  30.361 +
  30.362 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.363 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.364 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.365 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.366 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.367 +
  30.368 +  RewriteRule ^(/sys(/markup)?)?/about/?$ /sys/markup/about
  30.369 +  RewriteRule ^(/sys(/markup)?)?/blog/?$ /sys/markup/blog
  30.370 +  RewriteRule ^(/sys(/markup)?)?/code/?$ /sys/markup/code
  30.371 +  RewriteRule ^(/sys(/markup)?)?/demo/?$ /sys/markup/demo
  30.372 +  RewriteRule ^(/sys(/markup)?)?/e-?mail/?$ /sys/markup/e-mail
  30.373 +  RewriteRule ^(/sys(/markup)?)?/f(\.a\.q\.|aq)/?$ /sys/markup/faq
  30.374 +  RewriteRule ^(/sys(/markup)?)?/gear/?$ /sys/markup/gear
  30.375 +  RewriteRule ^(/sys(/markup)?)?/help/?$ /sys/markup/help
  30.376 +  RewriteRule ^(/sys(/markup)?)?/home/?$ /sys/markup/home
  30.377 +
  30.378 +  <Directory /srv/http/interos.com/sys>
  30.379 +    Options FollowSymLinks
  30.380 +  </Directory>
  30.381 +</VirtualHost>
  30.382 +
  30.383 +<VirtualHost *:80>
  30.384 +  ServerAdmin sys@interos.org
  30.385 +  DocumentRoot /srv/http/about.interos.org
  30.386 +  ServerName about.interos.org
  30.387 +
  30.388 +  RewriteEngine on
  30.389 +
  30.390 +  RewriteRule ^/index\.html$ /sys/markup/about
  30.391 +
  30.392 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.393 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.394 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.395 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.396 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.397 +
  30.398 +  Redirect /about/ http://about.interos.org/
  30.399 +  Redirect /about http://about.interos.org/
  30.400 +
  30.401 +  Redirect /blog/ http://blog.interos.org/
  30.402 +  Redirect /blog http://blog.interos.org/
  30.403 +
  30.404 +  Redirect /code/ http://code.interos.org/
  30.405 +  Redirect /code http://code.interos.org/
  30.406 +
  30.407 +  Redirect /e-mail/ http://e-mail.interos.org/
  30.408 +  Redirect /e-mail http://e-mail.interos.org/
  30.409 +
  30.410 +  Redirect /faq/ http://faq.interos.org/
  30.411 +  Redirect /faq http://faq.interos.org/
  30.412 +
  30.413 +  Redirect /gear/ http://gear.interos.org/
  30.414 +  Redirect /gear http://gear.interos.org/
  30.415 +</VirtualHost>
  30.416 +
  30.417 +<VirtualHost *:80>
  30.418 +  DocumentRoot /srv/http/about.interos.com
  30.419 +  ServerName about.interos.com
  30.420 +
  30.421 +  RewriteEngine on
  30.422 +
  30.423 +  RewriteRule ^/index\.html$ /sys/markup/about
  30.424 +
  30.425 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.426 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.427 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.428 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.429 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.430 +
  30.431 +  Redirect /about/ http://about.interos.com/
  30.432 +  Redirect /about http://about.interos.com/
  30.433 +
  30.434 +  Redirect /blog/ http://blog.interos.com/
  30.435 +  Redirect /blog http://blog.interos.com/
  30.436 +
  30.437 +  Redirect /code/ http://code.interos.com/
  30.438 +  Redirect /code http://code.interos.com/
  30.439 +
  30.440 +  Redirect /demo/ http://demo.interos.com/
  30.441 +  Redirect /demo http://demo.interos.com/
  30.442 +
  30.443 +  Redirect /e-mail/ http://e-mail.interos.com/
  30.444 +  Redirect /e-mail http://e-mail.interos.com/
  30.445 +
  30.446 +  Redirect /faq/ http://faq.interos.com/
  30.447 +  Redirect /faq http://faq.interos.com/
  30.448 +
  30.449 +  Redirect /gear/ http://gear.interos.com/
  30.450 +  Redirect /gear http://gear.interos.com/
  30.451 +
  30.452 +  Redirect /help/ http://help.interos.com/
  30.453 +  Redirect /help http://help.interos.com/
  30.454 +</VirtualHost>
  30.455 +
  30.456 +<VirtualHost *:80>
  30.457 +  ServerAdmin sys@interos.org
  30.458 +  DocumentRoot /srv/http/blog.interos.org
  30.459 +  ServerName blog.interos.org
  30.460 +
  30.461 +  RewriteEngine on
  30.462 +
  30.463 +  RewriteRule ^/index\.html$ /sys/markup/blog
  30.464 +
  30.465 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.466 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.467 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.468 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.469 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.470 +
  30.471 +  Redirect /about/ http://about.interos.org/
  30.472 +  Redirect /about http://about.interos.org/
  30.473 +
  30.474 +  Redirect /blog/ http://blog.interos.org/
  30.475 +  Redirect /blog http://blog.interos.org/
  30.476 +
  30.477 +  Redirect /code/ http://code.interos.org/
  30.478 +  Redirect /code http://code.interos.org/
  30.479 +
  30.480 +  Redirect /e-mail/ http://e-mail.interos.org/
  30.481 +  Redirect /e-mail http://e-mail.interos.org/
  30.482 +
  30.483 +  Redirect /faq/ http://faq.interos.org/
  30.484 +  Redirect /faq http://faq.interos.org/
  30.485 +
  30.486 +  Redirect /gear/ http://gear.interos.org/
  30.487 +  Redirect /gear http://gear.interos.org/
  30.488 +</VirtualHost>
  30.489 +
  30.490 +<VirtualHost *:80>
  30.491 +  DocumentRoot /srv/http/blog.interos.com
  30.492 +  ServerName blog.interos.com
  30.493 +
  30.494 +  RewriteEngine on
  30.495 +
  30.496 +  RewriteRule ^/index\.html$ /sys/markup/blog
  30.497 +
  30.498 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.499 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.500 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.501 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.502 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.503 +
  30.504 +  Redirect /about/ http://about.interos.com/
  30.505 +  Redirect /about http://about.interos.com/
  30.506 +
  30.507 +  Redirect /blog/ http://blog.interos.com/
  30.508 +  Redirect /blog http://blog.interos.com/
  30.509 +
  30.510 +  Redirect /code/ http://code.interos.com/
  30.511 +  Redirect /code http://code.interos.com/
  30.512 +
  30.513 +  Redirect /demo/ http://demo.interos.com/
  30.514 +  Redirect /demo http://demo.interos.com/
  30.515 +
  30.516 +  Redirect /e-mail/ http://e-mail.interos.com/
  30.517 +  Redirect /e-mail http://e-mail.interos.com/
  30.518 +
  30.519 +  Redirect /faq/ http://faq.interos.com/
  30.520 +  Redirect /faq http://faq.interos.com/
  30.521 +
  30.522 +  Redirect /gear/ http://gear.interos.com/
  30.523 +  Redirect /gear http://gear.interos.com/
  30.524 +
  30.525 +  Redirect /help/ http://help.interos.com/
  30.526 +  Redirect /help http://help.interos.com/
  30.527 +</VirtualHost>
  30.528 +
  30.529 +<VirtualHost *:80>
  30.530 +  ServerAdmin sys@interos.org
  30.531 +  DocumentRoot /srv/http/code.interos.org
  30.532 +  ServerName code.interos.org
  30.533 +
  30.534 +  RewriteEngine on
  30.535 +
  30.536 +  RewriteRule ^/index\.html$ /sys/markup/code
  30.537 +
  30.538 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.539 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.540 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.541 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.542 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.543 +
  30.544 +  Redirect /about/ http://about.interos.org/
  30.545 +  Redirect /about http://about.interos.org/
  30.546 +
  30.547 +  Redirect /blog/ http://blog.interos.org/
  30.548 +  Redirect /blog http://blog.interos.org/
  30.549 +
  30.550 +  Redirect /code/ http://code.interos.org/
  30.551 +  Redirect /code http://code.interos.org/
  30.552 +
  30.553 +  Redirect /e-mail/ http://e-mail.interos.org/
  30.554 +  Redirect /e-mail http://e-mail.interos.org/
  30.555 +
  30.556 +  Redirect /faq/ http://faq.interos.org/
  30.557 +  Redirect /faq http://faq.interos.org/
  30.558 +</VirtualHost>
  30.559 +
  30.560 +<VirtualHost *:80>
  30.561 +  DocumentRoot /srv/http/code.interos.com
  30.562 +  ServerName code.interos.com
  30.563 +
  30.564 +  RewriteEngine on
  30.565 +
  30.566 +  RewriteRule ^/index\.html$ /sys/markup/code
  30.567 +
  30.568 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.569 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.570 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.571 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.572 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.573 +
  30.574 +  Redirect /about/ http://about.interos.com/
  30.575 +  Redirect /about http://about.interos.com/
  30.576 +
  30.577 +  Redirect /blog/ http://blog.interos.com/
  30.578 +  Redirect /blog http://blog.interos.com/
  30.579 +
  30.580 +  Redirect /code/ http://code.interos.com/
  30.581 +  Redirect /code http://code.interos.com/
  30.582 +
  30.583 +  Redirect /demo/ http://demo.interos.com/
  30.584 +  Redirect /demo http://demo.interos.com/
  30.585 +
  30.586 +  Redirect /e-mail/ http://e-mail.interos.com/
  30.587 +  Redirect /e-mail http://e-mail.interos.com/
  30.588 +
  30.589 +  Redirect /faq/ http://faq.interos.com/
  30.590 +  Redirect /faq http://faq.interos.com/
  30.591 +
  30.592 +  Redirect /gear/ http://gear.interos.com/
  30.593 +  Redirect /gear http://gear.interos.com/
  30.594 +
  30.595 +  Redirect /help/ http://help.interos.com/
  30.596 +  Redirect /help http://help.interos.com/
  30.597 +</VirtualHost>
  30.598 +
  30.599 +<VirtualHost *:80>
  30.600 +  DocumentRoot /srv/http/demo.interos.com
  30.601 +  ServerName demo.interos.com
  30.602 +
  30.603 +  RewriteEngine on
  30.604 +
  30.605 +  RewriteRule ^/index\.html$ /sys/markup/demo
  30.606 +
  30.607 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.608 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.609 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.610 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.611 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.612 +
  30.613 +  Redirect /about/ http://about.interos.com/
  30.614 +  Redirect /about http://about.interos.com/
  30.615 +
  30.616 +  Redirect /blog/ http://blog.interos.com/
  30.617 +  Redirect /blog http://blog.interos.com/
  30.618 +
  30.619 +  Redirect /code/ http://code.interos.com/
  30.620 +  Redirect /code http://code.interos.com/
  30.621 +
  30.622 +  Redirect /demo/ http://demo.interos.com/
  30.623 +  Redirect /demo http://demo.interos.com/
  30.624 +
  30.625 +  Redirect /e-mail/ http://e-mail.interos.com/
  30.626 +  Redirect /e-mail http://e-mail.interos.com/
  30.627 +
  30.628 +  Redirect /faq/ http://faq.interos.com/
  30.629 +  Redirect /faq http://faq.interos.com/
  30.630 +
  30.631 +  Redirect /gear/ http://gear.interos.com/
  30.632 +  Redirect /gear http://gear.interos.com/
  30.633 +
  30.634 +  Redirect /help/ http://help.interos.com/
  30.635 +  Redirect /help http://help.interos.com/
  30.636 +</VirtualHost>
  30.637 +
  30.638 +<VirtualHost *:80>
  30.639 +  ServerAdmin sys@interos.org
  30.640 +  DocumentRoot /srv/http/e-mail.interos.org
  30.641 +  ServerName e-mail.interos.org
  30.642 +
  30.643 +  RewriteEngine on
  30.644 +
  30.645 +  RewriteRule ^/index\.html$ /sys/markup/e-mail
  30.646 +
  30.647 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.648 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.649 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.650 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.651 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.652 +
  30.653 +  Redirect /about/ http://about.interos.org/
  30.654 +  Redirect /about http://about.interos.org/
  30.655 +
  30.656 +  Redirect /blog/ http://blog.interos.org/
  30.657 +  Redirect /blog http://blog.interos.org/
  30.658 +
  30.659 +  Redirect /code/ http://code.interos.org/
  30.660 +  Redirect /code http://code.interos.org/
  30.661 +
  30.662 +  Redirect /e-mail/ http://e-mail.interos.org/
  30.663 +  Redirect /e-mail http://e-mail.interos.org/
  30.664 +
  30.665 +  Redirect /faq/ http://faq.interos.org/
  30.666 +  Redirect /faq http://faq.interos.org/
  30.667 +
  30.668 +  Redirect /gear/ http://gear.interos.org/
  30.669 +  Redirect /gear http://gear.interos.org/
  30.670 +</VirtualHost>
  30.671 +
  30.672 +<VirtualHost *:80>
  30.673 +  DocumentRoot /srv/http/e-mail.interos.com
  30.674 +  ServerName e-mail.interos.com
  30.675 +
  30.676 +  RewriteEngine on
  30.677 +
  30.678 +  RewriteRule ^/index\.html$ /sys/markup/e-mail
  30.679 +
  30.680 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.681 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.682 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.683 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.684 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.685 +
  30.686 +  Redirect /about/ http://about.interos.com/
  30.687 +  Redirect /about http://about.interos.com/
  30.688 +
  30.689 +  Redirect /blog/ http://blog.interos.com/
  30.690 +  Redirect /blog http://blog.interos.com/
  30.691 +
  30.692 +  Redirect /code/ http://code.interos.com/
  30.693 +  Redirect /code http://code.interos.com/
  30.694 +
  30.695 +  Redirect /demo/ http://demo.interos.com/
  30.696 +  Redirect /demo http://demo.interos.com/
  30.697 +
  30.698 +  Redirect /e-mail/ http://e-mail.interos.com/
  30.699 +  Redirect /e-mail http://e-mail.interos.com/
  30.700 +
  30.701 +  Redirect /faq/ http://faq.interos.com/
  30.702 +  Redirect /faq http://faq.interos.com/
  30.703 +
  30.704 +  Redirect /gear/ http://gear.interos.com/
  30.705 +  Redirect /gear http://gear.interos.com/
  30.706 +
  30.707 +  Redirect /help/ http://help.interos.com/
  30.708 +  Redirect /help http://help.interos.com/
  30.709 +</VirtualHost>
  30.710 +
  30.711 +<VirtualHost *:80>
  30.712 +  ServerAdmin sys@interos.org
  30.713 +  DocumentRoot /srv/http/faq.interos.org
  30.714 +  ServerName faq.interos.org
  30.715 +
  30.716 +  RewriteEngine on
  30.717 +
  30.718 +  RewriteRule ^/index\.html$ /sys/markup/faq
  30.719 +
  30.720 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.721 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.722 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.723 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.724 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.725 +
  30.726 +  Redirect /about/ http://about.interos.org/
  30.727 +  Redirect /about http://about.interos.org/
  30.728 +
  30.729 +  Redirect /blog/ http://blog.interos.org/
  30.730 +  Redirect /blog http://blog.interos.org/
  30.731 +
  30.732 +  Redirect /code/ http://code.interos.org/
  30.733 +  Redirect /code http://code.interos.org/
  30.734 +
  30.735 +  Redirect /e-mail/ http://e-mail.interos.org/
  30.736 +  Redirect /e-mail http://e-mail.interos.org/
  30.737 +
  30.738 +  Redirect /faq/ http://faq.interos.org/
  30.739 +  Redirect /faq http://faq.interos.org/
  30.740 +
  30.741 +  Redirect /gear/ http://gear.interos.org/
  30.742 +  Redirect /gear http://gear.interos.org/
  30.743 +</VirtualHost>
  30.744 +
  30.745 +<VirtualHost *:80>
  30.746 +  DocumentRoot /srv/http/faq.interos.com
  30.747 +  ServerName faq.interos.com
  30.748 +
  30.749 +  RewriteEngine on
  30.750 +
  30.751 +  RewriteRule ^/index\.html$ /sys/markup/faq
  30.752 +
  30.753 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.754 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.755 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.756 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.757 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.758 +
  30.759 +  Redirect /about/ http://about.interos.com/
  30.760 +  Redirect /about http://about.interos.com/
  30.761 +
  30.762 +  Redirect /blog/ http://blog.interos.com/
  30.763 +  Redirect /blog http://blog.interos.com/
  30.764 +
  30.765 +  Redirect /code/ http://code.interos.com/
  30.766 +  Redirect /code http://code.interos.com/
  30.767 +
  30.768 +  Redirect /demo/ http://demo.interos.com/
  30.769 +  Redirect /demo http://demo.interos.com/
  30.770 +
  30.771 +  Redirect /e-mail/ http://e-mail.interos.com/
  30.772 +  Redirect /e-mail http://e-mail.interos.com/
  30.773 +
  30.774 +  Redirect /faq/ http://faq.interos.com/
  30.775 +  Redirect /faq http://faq.interos.com/
  30.776 +
  30.777 +  Redirect /gear/ http://gear.interos.com/
  30.778 +  Redirect /gear http://gear.interos.com/
  30.779 +
  30.780 +  Redirect /help/ http://help.interos.com/
  30.781 +  Redirect /help http://help.interos.com/
  30.782 +</VirtualHost>
  30.783 +
  30.784 +<VirtualHost *:80>
  30.785 +  DocumentRoot /srv/http/gear.interos.org
  30.786 +  ServerName gear.interos.org
  30.787 +
  30.788 +  RewriteEngine on
  30.789 +
  30.790 +  RewriteRule ^/index\.html$ /sys/markup/gear
  30.791 +
  30.792 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.793 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.794 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.795 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.796 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.797 +
  30.798 +  Redirect /about/ http://about.interos.org/
  30.799 +  Redirect /about http://about.interos.org/
  30.800 +
  30.801 +  Redirect /blog/ http://blog.interos.org/
  30.802 +  Redirect /blog http://blog.interos.org/
  30.803 +
  30.804 +  Redirect /code/ http://code.interos.org/
  30.805 +  Redirect /code http://code.interos.org/
  30.806 +
  30.807 +  Redirect /e-mail/ http://e-mail.interos.org/
  30.808 +  Redirect /e-mail http://e-mail.interos.org/
  30.809 +
  30.810 +  Redirect /faq/ http://faq.interos.org/
  30.811 +  Redirect /faq http://faq.interos.org/
  30.812 +
  30.813 +  Redirect /gear/ http://gear.interos.org/
  30.814 +  Redirect /gear http://gear.interos.org/
  30.815 +</VirtualHost>
  30.816 +
  30.817 +<VirtualHost *:80>
  30.818 +  DocumentRoot /srv/http/gear.interos.com
  30.819 +  ServerName gear.interos.com
  30.820 +
  30.821 +  RewriteEngine on
  30.822 +
  30.823 +  RewriteRule ^/index\.html$ /sys/markup/gear
  30.824 +
  30.825 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.826 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.827 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.828 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.829 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.830 +
  30.831 +  Redirect /about/ http://about.interos.com/
  30.832 +  Redirect /about http://about.interos.com/
  30.833 +
  30.834 +  Redirect /blog/ http://blog.interos.com/
  30.835 +  Redirect /blog http://blog.interos.com/
  30.836 +
  30.837 +  Redirect /code/ http://code.interos.com/
  30.838 +  Redirect /code http://code.interos.com/
  30.839 +
  30.840 +  Redirect /demo/ http://demo.interos.com/
  30.841 +  Redirect /demo http://demo.interos.com/
  30.842 +
  30.843 +  Redirect /e-mail/ http://e-mail.interos.com/
  30.844 +  Redirect /e-mail http://e-mail.interos.com/
  30.845 +
  30.846 +  Redirect /faq/ http://faq.interos.com/
  30.847 +  Redirect /faq http://faq.interos.com/
  30.848 +
  30.849 +  Redirect /gear/ http://gear.interos.com/
  30.850 +  Redirect /gear http://gear.interos.com/
  30.851 +
  30.852 +  Redirect /help/ http://help.interos.com/
  30.853 +  Redirect /help http://help.interos.com/
  30.854 +</VirtualHost>
  30.855 +
  30.856 +<VirtualHost *:80>
  30.857 +  DocumentRoot /srv/http/help.interos.com
  30.858 +  ServerName help.interos.com
  30.859 +
  30.860 +  RewriteEngine on
  30.861 +
  30.862 +  RewriteRule ^/index\.html$ /sys/markup/help
  30.863 +
  30.864 +  RewriteRule ^/css/(.*) /sys/style/$1
  30.865 +  RewriteRule ^/images/(.*) /sys/images/$1
  30.866 +  RewriteRule ^/js/(.*) /sys/js/$1
  30.867 +  RewriteRule ^/markup/(.*) /sys/markup/$1
  30.868 +  RewriteRule ^/style/(.*) /sys/style/$1
  30.869 +
  30.870 +  Redirect /about/ http://about.interos.com/
  30.871 +  Redirect /about http://about.interos.com/
  30.872 +
  30.873 +  Redirect /blog/ http://blog.interos.com/
  30.874 +  Redirect /blog http://blog.interos.com/
  30.875 +
  30.876 +  Redirect /code/ http://code.interos.com/
  30.877 +  Redirect /code http://code.interos.com/
  30.878 +
  30.879 +  Redirect /demo/ http://demo.interos.com/
  30.880 +  Redirect /demo http://demo.interos.com/
  30.881 +
  30.882 +  Redirect /e-mail/ http://e-mail.interos.com/
  30.883 +  Redirect /e-mail http://e-mail.interos.com/
  30.884 +
  30.885 +  Redirect /faq/ http://faq.interos.com/
  30.886 +  Redirect /faq http://faq.interos.com/
  30.887 +
  30.888 +  Redirect /help/ http://help.interos.com/
  30.889 +  Redirect /help http://help.interos.com/
  30.890 +</VirtualHost>
  30.891 +
  30.892 +<VirtualHost *:80>
  30.893 +  DocumentRoot /srv/http/doku.interos.org
  30.894 +  ServerName doc.interos.org
  30.895 +  ServerAlias docu.interos.org
  30.896 +  ServerAlias docuwiki.interos.org
  30.897 +  ServerAlias docs.interos.org
  30.898 +  ServerAlias documentation.interos.org
  30.899 +  ServerAlias doku.interos.org
  30.900 +  ServerAlias dokuwiki.interos.org
  30.901 +  AddType application/x-httpd-php .php .php5 .phtml  
  30.902 +
  30.903 +  RewriteEngine on
  30.904 +
  30.905 +  RewriteRule ^/_media/(.*)                             /lib/exe/fetch.php?media=$1  [QSA,L]
  30.906 +  RewriteRule ^/_detail/(.*)                            /lib/exe/detail.php?media=$1  [QSA,L]
  30.907 +  RewriteRule ^/_export/([^/]+)/(.*)                    /doku.php?do=export_$1&id=$2  [QSA,L]
  30.908 +  RewriteRule ^/$                                       /doku.php  [L]
  30.909 +  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}	!-f
  30.910 +  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}       !-d
  30.911 +  RewriteRule (.*)                                      /doku.php?id=$1  [QSA,L]
  30.912 +
  30.913 +</VirtualHost>
  30.914 +
  30.915 +<VirtualHost *:80>
  30.916 +  DocumentRoot /srv/http/git.interos.org
  30.917 +  ServerName git.interos.org
  30.918 +  ServerAdmin info@interos.org
  30.919 +  ErrorLog "/var/log/git_daemon-error.log"
  30.920 +  CustomLog "/var/log/git_daemon-access.log" combined
  30.921 +
  30.922 +  <Directory "/srv/http/git.interos.org">
  30.923 +    Options ExecCGI
  30.924 +    Order allow,deny
  30.925 +    Allow from all
  30.926 +
  30.927 +    DirectoryIndex gitweb.cgi
  30.928 +    AddHandler cgi-script .cgi
  30.929 +  </Directory>
  30.930 +</VirtualHost>
  30.931 +
  30.932 +<VirtualHost *:80>
  30.933 +  DocumentRoot /srv/http/forums.interos.org
  30.934 +  ServerName forums.interos.org
  30.935 +  ServerAlias forum.interos.org
  30.936 +  ServerAlias boards.interos.org
  30.937 +  ServerAlias board.interos.org
  30.938 +  ServerAlias bbs.interos.org
  30.939 +  ServerAlias bb.interos.org
  30.940 +  ServerAlias phpbb.interos.org
  30.941 +  ServerAlias phpbb3.interos.org
  30.942 +  AddType application/x-httpd-php .php .php5 .phtml  
  30.943 +
  30.944 +  <IfModule mod_dir.c>
  30.945 +    DirectoryIndex index.php
  30.946 +  </IfModule>
  30.947 +
  30.948 +</VirtualHost>
  30.949 +
  30.950 +<VirtualHost *:80>
  30.951 +  DocumentRoot /srv/http/planet.interos.org
  30.952 +  ServerName planet.interos.org
  30.953 +</VirtualHost>
  30.954 +
  30.955 +<VirtualHost *:80>
  30.956 +  DocumentRoot /srv/http/webchat.interos.org
  30.957 +  ServerName webchat.interos.org
  30.958 +</VirtualHost>
  30.959 +
  30.960 +<VirtualHost *:80>
  30.961 +  DocumentRoot /srv/http/wiki.interos.org
  30.962 +  ServerName wiki.interos.org
  30.963 +  AddType application/x-httpd-php .php .php5 .phtml
  30.964 +
  30.965 +  <IfModule mod_dir.c>
  30.966 +    DirectoryIndex index.php
  30.967 +  </IfModule>
  30.968 +
  30.969 +  Alias /view      /srv/http/wiki.interos.org/wiki/index.php
  30.970 +  Alias /index.php /srv/http/wiki.interos.org/wiki/index.php
  30.971 +</VirtualHost>
  30.972 +
  30.973 +<VirtualHost *:80>
  30.974 +  DocumentRoot /srv/http/brent.interos.org
  30.975 +  ServerName brent.interos.org
  30.976 +  ServerAlias wiki.brent.interos.org
  30.977 +  AddType application/x-httpd-php .php .php5 .phtml
  30.978 +
  30.979 +  <Directory /srv/http/brent.interos.org/w>
  30.980 +    <IfModule mod_dir.c>
  30.981 +      DirectoryIndex index.php
  30.982 +    </IfModule>
  30.983 +  </Directory>
  30.984 +
  30.985 +  Alias /wiki      /srv/http/brent.interos.org/w/index.php
  30.986 +</VirtualHost>
  30.987 +
  30.988 +<VirtualHost *:80>
  30.989 +  DocumentRoot /srv/http/kunal.interos.org
  30.990 +  ServerName kunal.interos.org
  30.991 +  ServerAlias wiki.kunal.interos.org
  30.992 +  AddType application/x-httpd-php .php .php5 .phtml
  30.993 +
  30.994 +  <Directory /srv/http/kunal.interos.org/w>
  30.995 +    <IfModule mod_dir.c>
  30.996 +      DirectoryIndex index.php
  30.997 +    </IfModule>
  30.998 +  </Directory>
  30.999 +
 30.1000 +  Alias /wiki      /srv/http/kunal.interos.org/w/index.php
 30.1001 +</VirtualHost>
 30.1002 +
 30.1003 +<VirtualHost *:80>
 30.1004 +  DocumentRoot /srv/http/peter.interos.org
 30.1005 +  ServerName peter.interos.org
 30.1006 +  ServerAlias wiki.peter.interos.org
 30.1007 +  AddType application/x-httpd-php .php .php5 .phtml
 30.1008 +
 30.1009 +  <Directory /srv/http/peter.interos.org/w>
 30.1010 +    <IfModule mod_dir.c>
 30.1011 +      DirectoryIndex index.php
 30.1012 +    </IfModule>
 30.1013 +  </Directory>
 30.1014 +
 30.1015 +  Alias /wiki      /srv/http/peter.interos.org/w/index.php
 30.1016 +</VirtualHost>
 30.1017 +
 30.1018 +<VirtualHost *:80>
 30.1019 +  DocumentRoot /srv/http/lurie2010.org
 30.1020 +  ServerName lurie2010.org
 30.1021 +  ServerAlias lurie2010.interos.org
 30.1022 +  AddType application/x-httpd-php .php .php5 .phtml
 30.1023 +
 30.1024 +  <IfModule mod_dir.c>
 30.1025 +    DirectoryIndex index.php
 30.1026 +  </IfModule>
 30.1027 +
 30.1028 +</VirtualHost>
 30.1029 +
 30.1030 +<VirtualHost *:80>
 30.1031 +  DocumentRoot /srv/http/forums.lurie2010.org
 30.1032 +  ServerName forums.lurie2010.org
 30.1033 +  ServerAlias forums.lurie2010.interos.org
 30.1034 +  AddType application/x-httpd-php .php .php5 .phtml
 30.1035 +
 30.1036 +  <IfModule mod_dir.c>
 30.1037 +    DirectoryIndex index.php
 30.1038 +  </IfModule>
 30.1039 +
 30.1040 +</VirtualHost>
 30.1041 +
 30.1042 +<VirtualHost *:80>
 30.1043 +  DocumentRoot /srv/http/forums.stnylug.interos.org
 30.1044 +  ServerName forums.stnylug.interos.org
 30.1045 +#  ServerAlias forums.stnylug.org
 30.1046 +  AddType application/x-httpd-php .php .php5 .phtml
 30.1047 +
 30.1048 +  <IfModule mod_dir.c>
 30.1049 +    DirectoryIndex index.php
 30.1050 +  </IfModule>
 30.1051 +
 30.1052 +</VirtualHost>
 30.1053 +
 30.1054 +<VirtualHost *:80>
 30.1055 +  DocumentRoot /srv/http/wiki.stnylug.interos.org
 30.1056 +  ServerName wiki.stnylug.interos.org
 30.1057 +  ServerAlias wiki.stnylug.org
 30.1058 +  ServerAlias forums.stnylug.org
 30.1059 +  AddType application/x-httpd-php .php .php5 .phtml
 30.1060 +
 30.1061 +  <IfModule mod_dir.c>
 30.1062 +    DirectoryIndex index.php
 30.1063 +  </IfModule>
 30.1064 +
 30.1065 +  Alias /view      /srv/http/wiki.stnylug.interos.org/wiki/index.php
 30.1066 +  Alias /index.php /srv/http/wiki.stnylug.interos.org/wiki/index.php
 30.1067 +</VirtualHost>
 30.1068 +
 30.1069 +<VirtualHost *:80>
 30.1070 +  DocumentRoot /srv/http/gbte.interos.org
 30.1071 +  ServerName gbte.interos.org
 30.1072 +  ServerAlias girls.interos.org
 30.1073 +</VirtualHost>
 30.1074 +
 30.1075 +<VirtualHost *:80>
 30.1076 +  DocumentRoot /srv/http/wiki.gbte.interos.org
 30.1077 +  ServerName wiki.gbte.interos.org
 30.1078 +  ServerAlias wiki.girls.interos.org
 30.1079 +  ServerAlias wiki.girlsbalancetheequation.interos.org
 30.1080 +  ServerAlias wiki.girlsbalancetheequation.org
 30.1081 +  AddType application/x-httpd-php .php .php5 .phtml
 30.1082 +
 30.1083 +  <IfModule mod_dir.c>
 30.1084 +    DirectoryIndex index.php
 30.1085 +  </IfModule>
 30.1086 +
 30.1087 +  Alias /view        /srv/http/wiki.gbte.interos.org/wiki/index.php
 30.1088 +  Alias /index.php /srv/http/wiki.gbte.interos.org/wiki/index.php
 30.1089 +</VirtualHost>
 30.1090 +
 30.1091 +<IfDefine SSL>
 30.1092 +  AddType application/x-x509-ca-cert .crt
 30.1093 +  AddType application/x-pkcs7-crl    .crl
 30.1094 +</IfDefine>
 30.1095 +
 30.1096 +<IfModule mod_ssl.c>
 30.1097 +  SSLPassPhraseDialog  builtin
 30.1098 +  SSLSessionCache         dbm:/var/run/ssl_scache
 30.1099 +  SSLSessionCacheTimeout  300
 30.1100 +  SSLMutex  file:/var/run/ssl_mutex
 30.1101 +  SSLRandomSeed startup builtin
 30.1102 +  SSLRandomSeed connect builtin
 30.1103 +  SSLLog      /var/log/ssl_engine_log
 30.1104 +  SSLLogLevel info
 30.1105 +</IfModule>
 30.1106 +
 30.1107 +<IfDefine SSL>
 30.1108 +  NameVirtualHost 208.86.227.235:443
 30.1109 +
 30.1110 +  <VirtualHost 208.86.227.235:443>
 30.1111 +    DocumentRoot "/srv/https/www_default"
 30.1112 +    ServerAdmin sys@interos.org
 30.1113 +    ErrorLog /var/log/httpd-error.log
 30.1114 +    TransferLog /var/log/httpd-access.log
 30.1115 +
 30.1116 +    <Directory /srv/https/www_default>
 30.1117 +      Options FollowSymLinks
 30.1118 +    </Directory>
 30.1119 +
 30.1120 +    SSLEngine on
 30.1121 +    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
 30.1122 +    SSLCertificateFile /usr/local/etc/apache/ssl.crt/interos.crt
 30.1123 +    SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/interos.key
 30.1124 +
 30.1125 +    SetEnvIf User-Agent ".*MSIE.*" \
 30.1126 +             nokeepalive ssl-unclean-shutdown \
 30.1127 +             downgrade-1.0 force-response-1.0
 30.1128 +    CustomLog /var/log/ssl_request_log \
 30.1129 +              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 30.1130 +  </VirtualHost>
 30.1131 +
 30.1132 +  <VirtualHost 208.86.227.228:443>
 30.1133 +    DocumentRoot "/srv/https/interos.org"
 30.1134 +    ServerName interos.org
 30.1135 +    ServerAlias www.interos.org
 30.1136 +    ServerAdmin sys@interos.org
 30.1137 +    ErrorLog /var/log/httpd-error.log
 30.1138 +    TransferLog /var/log/httpd-access.log
 30.1139 +
 30.1140 +    #ErrorDocument 500 /login
 30.1141 +    #ErrorDocument 404 /login
 30.1142 +    #ErrorDocument 403 /login
 30.1143 +
 30.1144 +    SSLEngine on
 30.1145 +    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
 30.1146 +    SSLCertificateFile /usr/local/etc/apache/ssl.crt/www.interos.org.crt
 30.1147 +    SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/www.interos.org.key
 30.1148 +    SSLCertificateChainFile /usr/local/etc/apache/ssl.crt/sub.class1.server.ca.pem
 30.1149 +    SSLCACertificateFile /usr/local/etc/apache/ssl.crt/ca.pem
 30.1150 +
 30.1151 +    RewriteEngine on
 30.1152 +
 30.1153 +    RewriteRule ^/favicon\.ico$ /sys/images/favicon.ico
 30.1154 +    RewriteRule ^/index\.html$ /sys/markup/home
 30.1155 +
 30.1156 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1157 +    RewriteRule ^/docs/(.*) /sys/docs/$1
 30.1158 +    RewriteRule ^/dtd/(.*) /sys/dtd/$1
 30.1159 +    RewriteRule ^/flash/(.*) /sys/flash/$1
 30.1160 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1161 +    RewriteRule ^/java/(.*) /sys/java/$1
 30.1162 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1163 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1164 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1165 +    RewriteRule ^/xml/(.*) /sys/xml/$1
 30.1166 +
 30.1167 +    RewriteRule ^(/sys(/markup)?)?/about/?$ /sys/markup/about
 30.1168 +    RewriteRule ^(/sys(/markup)?)?/blog/?$ /sys/markup/blog
 30.1169 +    RewriteRule ^(/sys(/markup)?)?/code/?$ /sys/markup/code
 30.1170 +    RewriteRule ^(/sys(/markup)?)?/e-?mail/?$ /sys/markup/e-mail
 30.1171 +    RewriteRule ^(/sys(/markup)?)?/f(\.a\.q\.|aq)/?$ /sys/markup/faq
 30.1172 +    RewriteRule ^(/sys(/markup)?)?/gear/?$ /sys/markup/gear
 30.1173 +    RewriteRule ^(/sys(/markup)?)?/help/?$ /sys/markup/help
 30.1174 +    RewriteRule ^(/sys(/markup)?)?/home/?$ /sys/markup/home
 30.1175 +
 30.1176 +    <Directory /srv/https/interos.org/sys>
 30.1177 +      Options FollowSymLinks
 30.1178 +    </Directory>
 30.1179 +  </VirtualHost>
 30.1180 +
 30.1181 +  <VirtualHost 208.86.227.235:443>
 30.1182 +    DocumentRoot "/srv/https/old.interos.com"
 30.1183 +    ServerName old.interos.com
 30.1184 +    ServerAdmin sys@interos.com
 30.1185 +    ErrorLog /var/log/httpd-error.log
 30.1186 +    TransferLog /var/log/httpd-access.log
 30.1187 +
 30.1188 +    ErrorDocument 500 /login
 30.1189 +    ErrorDocument 404 /login
 30.1190 +    ErrorDocument 403 /login
 30.1191 +
 30.1192 +    RewriteEngine on
 30.1193 +
 30.1194 +    RewriteRule ^/favicon\.ico$ /sys/images/favicon.ico
 30.1195 +    RewriteRule ^/index\.html$ /sys/markup/home
 30.1196 +
 30.1197 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1198 +    RewriteRule ^/flash/(.*) /sys/flash/$1
 30.1199 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1200 +    RewriteRule ^/java/(.*) /sys/java/$1
 30.1201 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1202 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1203 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1204 +    RewriteRule ^/xml/(.*) /sys/xml/$1
 30.1205 +
 30.1206 +    RewriteRule ^(/sys(/markup)?)?/about/?$ /sys/markup/about
 30.1207 +    RewriteRule ^(/sys(/markup)?)?/blog/?$ /sys/markup/blog
 30.1208 +    RewriteRule ^(/sys(/markup)?)?/code/?$ /sys/markup/code
 30.1209 +    RewriteRule ^(/sys(/markup)?)?/demo/?$ /sys/markup/demo
 30.1210 +    RewriteRule ^(/sys(/markup)?)?/e-?mail/?$ /sys/markup/e-mail
 30.1211 +    RewriteRule ^(/sys(/markup)?)?/f(\.a\.q\.|aq)/?$ /sys/markup/faq
 30.1212 +    RewriteRule ^(/sys(/markup)?)?/gear/?$ /sys/markup/gear
 30.1213 +    RewriteRule ^(/sys(/markup)?)?/help/?$ /sys/markup/help
 30.1214 +    RewriteRule ^(/sys(/markup)?)?/home/?$ /sys/markup/home
 30.1215 +
 30.1216 +    RewriteRule ^(/sys)?/(main|interos)/?$ /sys/main
 30.1217 +    RewriteRule ^(/sys)?/login/?$ /sys/login
 30.1218 +    RewriteRule ^(/sys)?/new_?user/?$ /sys/new_user
 30.1219 +    RewriteRule ^(/sys)?/welcome/?$ /sys/welcome
 30.1220 +    RewriteRule ^(/sys)?/welcome_?back/?$ /sys/welcome_back
 30.1221 +    RewriteRule ^(/sys)?/top/?$ /sys/top
 30.1222 +    RewriteRule ^(/sys)?/content/?$ /sys/content
 30.1223 +    RewriteRule ^(/sys)?/bottom/?$ /sys/bottom
 30.1224 +    RewriteRule ^(/sys)?/new/?$ /sys/new
 30.1225 +    RewriteRule ^(/sys)?/open/?$ /sys/open
 30.1226 +    RewriteRule ^(/sys)?/next/?$ /sys/next
 30.1227 +    RewriteRule ^(/sys)?/settings/?$ /sys/settings
 30.1228 +    RewriteRule ^(/sys)?/menu/?$ /sys/menu
 30.1229 +    RewriteRule ^(/sys)?/user/?$ /sys/user
 30.1230 +    RewriteRule ^(/sys)?/logout/?$ /sys/logout
 30.1231 +
 30.1232 +    RewriteRule ^(/sys)?/xml/append/?$ /sys/xml/append
 30.1233 +    RewriteRule ^(/sys)?/xml/copy/?$ /sys/xml/copy
 30.1234 +    RewriteRule ^(/sys)?/xml/delete/?$ /sys/xml/delete
 30.1235 +    RewriteRule ^(/sys)?/xml/exist/?$ /sys/xml/exist
 30.1236 +    RewriteRule ^(/sys)?/xml/files/?$ /sys/xml/files
 30.1237 +    RewriteRule ^(/sys)?/xml/move/?$ /sys/xml/move
 30.1238 +    RewriteRule ^(/sys)?/xml/new_folder/?$ /sys/xml/new_folder
 30.1239 +    RewriteRule ^(/sys)?/xml/open/?$ /sys/xml/open
 30.1240 +    RewriteRule ^(/sys)?/xml/persist/?$ /sys/xml/persist
 30.1241 +    RewriteRule ^(/sys)?/xml/save/?$ /sys/xml/save
 30.1242 +    RewriteRule ^(/sys)?/xml/test/?$ /sys/xml/test
 30.1243 +    RewriteRule ^(/sys)?/xml/user/?$ /sys/xml/user
 30.1244 +
 30.1245 +    <Directory /srv/https/old.interos.com>
 30.1246 +      AllowOverride FileInfo Limit
 30.1247 +      #FastCgiAccessChecker /srv/data/interos/sys/access
 30.1248 +    </Directory>
 30.1249 +
 30.1250 +    <Directory /srv/https/old.interos.com/sys>
 30.1251 +      AllowOverride Options
 30.1252 +      Options ExecCGI FollowSymLinks
 30.1253 +      <FilesMatch "^(main|login|new_user|welcome|welcome_back|top|content|bottom|new|open|next|settings|menu|browse|user|logout|interos)$">
 30.1254 +        SetHandler fastcgi-script
 30.1255 +      </FilesMatch>
 30.1256 +    </Directory>
 30.1257 +
 30.1258 +    <Directory /srv/https/old.interos.com/sys/markup>
 30.1259 +      Options +MultiViews
 30.1260 +    </Directory>
 30.1261 +
 30.1262 +    <Directory /srv/https/old.interos.com/sys/xml>
 30.1263 +      <FilesMatch "^(append|copy|delete|exist|files|move|new_folder|open|persist|save|test|user)$">
 30.1264 +        SetHandler fastcgi-script
 30.1265 +      </FilesMatch>
 30.1266 +    </Directory>
 30.1267 +  </VirtualHost>
 30.1268 +
 30.1269 +  <VirtualHost 208.86.227.229:443>
 30.1270 +    DocumentRoot "/srv/https/interos.com"
 30.1271 +    ServerName interos.com
 30.1272 +    ServerAlias www.interos.com
 30.1273 +    ServerAdmin sys@interos.com
 30.1274 +    ErrorLog /var/log/httpd-error.log
 30.1275 +    TransferLog /var/log/httpd-access.log
 30.1276 +
 30.1277 +    SSLEngine on
 30.1278 +    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
 30.1279 +    SSLCertificateFile /usr/local/etc/apache/ssl.crt/www.interos.com.crt
 30.1280 +    SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/www.interos.com.key
 30.1281 +    SSLCertificateChainFile /usr/local/etc/apache/ssl.crt/sub.class1.server.ca.pem
 30.1282 +    SSLCACertificateFile /usr/local/etc/apache/ssl.crt/ca.pem
 30.1283 +
 30.1284 +    ErrorDocument 500 /login
 30.1285 +    ErrorDocument 404 /login
 30.1286 +    ErrorDocument 403 /login
 30.1287 +
 30.1288 +    AliasMatch ^/favicon.ico$ /srv/master/link/favicon.ico
 30.1289 +
 30.1290 +#    AliasMatch ^/index.html$ /srv/https/interos.com/sys/home.html
 30.1291 +    AliasMatch ^/index.html$ /srv/https/interos.com/sys/login
 30.1292 +
 30.1293 +    AliasMatch ^/apps(.*) /srv/https/interos.com/sys/apps$1
 30.1294 +    AliasMatch ^/css(.*) /srv/https/interos.com/sys/css$1
 30.1295 +    AliasMatch ^/flash(.*) /srv/https/interos.com/sys/flash$1
 30.1296 +    AliasMatch ^/gif(.*) /srv/https/interos.com/sys/gif$1
 30.1297 +    AliasMatch ^/images(.*) /srv/https/interos.com/sys/images$1
 30.1298 +    AliasMatch ^/java(.*) /srv/https/interos.com/sys/java$1
 30.1299 +    AliasMatch ^/js(.*) /srv/https/interos.com/sys/js$1
 30.1300 +    AliasMatch ^/png(.*) /srv/https/interos.com/sys/png$1
 30.1301 +    AliasMatch ^/style(.*) /srv/https/interos.com/sys/style$1
 30.1302 +    AliasMatch ^/svg(.*) /srv/https/interos.com/sys/svg$1
 30.1303 +    AliasMatch ^/xml(.*) /srv/https/interos.com/sys/xml$1
 30.1304 +
 30.1305 +    AliasMatch ^/sys/about/$ /srv/https/about.interos.com/index.html
 30.1306 +    AliasMatch ^/sys/about$ /srv/https/about.interos.com/index.html
 30.1307 +    AliasMatch ^/about/$ /srv/https/about.interos.com/index.html
 30.1308 +    AliasMatch ^/about$ /srv/https/about.interos.com/index.html
 30.1309 +
 30.1310 +    AliasMatch ^/sys/blog/$ /srv/https/blog.interos.com/index.html
 30.1311 +    AliasMatch ^/sys/blog$ /srv/https/blog.interos.com/index.html
 30.1312 +    AliasMatch ^/blog/$ /srv/https/blog.interos.com/index.html
 30.1313 +    AliasMatch ^/blog$ /srv/https/blog.interos.com/index.html
 30.1314 +
 30.1315 +    AliasMatch ^/sys/code/$ /srv/https/code.interos.com/index.html
 30.1316 +    AliasMatch ^/sys/code$ /srv/https/code.interos.com/index.html
 30.1317 +    AliasMatch ^/code/$ /srv/https/code.interos.com/index.html
 30.1318 +    AliasMatch ^/code$ /srv/https/code.interos.com/index.html
 30.1319 +
 30.1320 +    AliasMatch ^/sys/demo/$ /srv/https/demo.interos.com/index.html
 30.1321 +    AliasMatch ^/sys/demo$ /srv/https/demo.interos.com/index.html
 30.1322 +    AliasMatch ^/demo/$ /srv/https/demo.interos.com/index.html
 30.1323 +    AliasMatch ^/demo$ /srv/https/demo.interos.com/index.html
 30.1324 +
 30.1325 +    AliasMatch ^/sys/e-mail/$ /srv/https/e-mail.interos.com/index.html
 30.1326 +    AliasMatch ^/sys/e-mail$ /srv/https/e-mail.interos.com/index.html
 30.1327 +    AliasMatch ^/e-mail/$ /srv/https/e-mail.interos.com/index.html
 30.1328 +    AliasMatch ^/e-mail$ /srv/https/e-mail.interos.com/index.html
 30.1329 +
 30.1330 +    AliasMatch ^/sys/faq/$ /srv/https/faq.interos.com/index.html
 30.1331 +    AliasMatch ^/sys/faq$ /srv/https/faq.interos.com/index.html
 30.1332 +    AliasMatch ^/faq/$ /srv/https/faq.interos.com/index.html
 30.1333 +    AliasMatch ^/faq$ /srv/https/faq.interos.com/index.html
 30.1334 +
 30.1335 +    AliasMatch ^/sys/gear/$ /srv/https/gear.interos.com/index.html
 30.1336 +    AliasMatch ^/sys/gear$ /srv/https/gear.interos.com/index.html
 30.1337 +    AliasMatch ^/gear/$ /srv/https/gear.interos.com/index.html
 30.1338 +    AliasMatch ^/gear$ /srv/https/gear.interos.com/index.html
 30.1339 +
 30.1340 +    AliasMatch ^/sys/help/$ /srv/https/help.interos.com/index.html
 30.1341 +    AliasMatch ^/sys/help$ /srv/https/help.interos.com/index.html
 30.1342 +    AliasMatch ^/help/$ /srv/https/help.interos.com/index.html
 30.1343 +    AliasMatch ^/help$ /srv/https/help.interos.com/index.html
 30.1344 +
 30.1345 +    AliasMatch ^/sys/main/$ /srv/https/interos.com/sys/main
 30.1346 +    AliasMatch ^/main/$ /srv/https/interos.com/sys/main
 30.1347 +    AliasMatch ^/main$ /srv/https/interos.com/sys/main
 30.1348 +
 30.1349 +    AliasMatch ^/sys/login/$ /srv/https/interos.com/sys/login
 30.1350 +    AliasMatch ^/login/$ /srv/https/interos.com/sys/login
 30.1351 +    AliasMatch ^/login$ /srv/https/interos.com/sys/login
 30.1352 +
 30.1353 +    AliasMatch ^/sys/new_user/$ /srv/https/interos.com/sys/new_user
 30.1354 +    AliasMatch ^/new_user/$ /srv/https/interos.com/sys/new_user
 30.1355 +    AliasMatch ^/new_user$ /srv/https/interos.com/sys/new_user
 30.1356 +
 30.1357 +    AliasMatch ^/sys/welcome/$ /srv/https/interos.com/sys/welcome
 30.1358 +    AliasMatch ^/welcome/$ /srv/https/interos.com/sys/welcome
 30.1359 +    AliasMatch ^/welcome$ /srv/https/interos.com/sys/welcome
 30.1360 +
 30.1361 +    AliasMatch ^/sys/welcome_back/$ /srv/https/interos.com/sys/welcome_back
 30.1362 +    AliasMatch ^/welcome_back/$ /srv/https/interos.com/sys/welcome_back
 30.1363 +    AliasMatch ^/welcome_back$ /srv/https/interos.com/sys/welcome_back
 30.1364 +
 30.1365 +    AliasMatch ^/sys/top/$ /srv/https/interos.com/sys/top
 30.1366 +    AliasMatch ^/top/$ /srv/https/interos.com/sys/top
 30.1367 +    AliasMatch ^/top$ /srv/https/interos.com/sys/top
 30.1368 +
 30.1369 +    AliasMatch ^/sys/content/$ /srv/https/interos.com/sys/content
 30.1370 +    AliasMatch ^/content/$ /srv/https/interos.com/sys/content
 30.1371 +    AliasMatch ^/content$ /srv/https/interos.com/sys/content
 30.1372 +
 30.1373 +    AliasMatch ^/sys/bottom/$ /srv/https/interos.com/sys/bottom
 30.1374 +    AliasMatch ^/bottom/$ /srv/https/interos.com/sys/bottom
 30.1375 +    AliasMatch ^/bottom$ /srv/https/interos.com/sys/bottom
 30.1376 +
 30.1377 +    AliasMatch ^/sys/new/$ /srv/https/interos.com/sys/new
 30.1378 +    AliasMatch ^/new/$ /srv/https/interos.com/sys/new
 30.1379 +    AliasMatch ^/new$ /srv/https/interos.com/sys/new
 30.1380 +
 30.1381 +    AliasMatch ^/sys/open/$ /srv/https/interos.com/sys/open
 30.1382 +    AliasMatch ^/open/$ /srv/https/interos.com/sys/open
 30.1383 +    AliasMatch ^/open$ /srv/https/interos.com/sys/open
 30.1384 +
 30.1385 +    AliasMatch ^/sys/next/$ /srv/https/interos.com/sys/next
 30.1386 +    AliasMatch ^/next/$ /srv/https/interos.com/sys/next
 30.1387 +    AliasMatch ^/next$ /srv/https/interos.com/sys/next
 30.1388 +
 30.1389 +    AliasMatch ^/sys/settings/$ /srv/https/interos.com/sys/settings
 30.1390 +    AliasMatch ^/settings/$ /srv/https/interos.com/sys/settings
 30.1391 +    AliasMatch ^/settings$ /srv/https/interos.com/sys/settings
 30.1392 +
 30.1393 +    AliasMatch ^/sys/menu/$ /srv/https/interos.com/sys/menu
 30.1394 +    AliasMatch ^/menu/$ /srv/https/interos.com/sys/menu
 30.1395 +    AliasMatch ^/menu$ /srv/https/interos.com/sys/menu
 30.1396 +
 30.1397 +    AliasMatch ^/sys/user/$ /srv/https/interos.com/sys/user
 30.1398 +    AliasMatch ^/user/$ /srv/https/interos.com/sys/user
 30.1399 +    AliasMatch ^/user$ /srv/https/interos.com/sys/user
 30.1400 +
 30.1401 +    AliasMatch ^/sys/logout/$ /srv/https/interos.com/sys/logout
 30.1402 +    AliasMatch ^/logout/$ /srv/https/interos.com/sys/logout
 30.1403 +    AliasMatch ^/logout$ /srv/https/interos.com/sys/logout
 30.1404 +
 30.1405 +    AliasMatch ^/sys/interos/$ /srv/https/interos.com/sys/interos
 30.1406 +    AliasMatch ^/interos/$ /srv/https/interos.com/sys/interos
 30.1407 +    AliasMatch ^/interos$ /srv/https/interos.com/sys/interos
 30.1408 +
 30.1409 +    AliasMatch ^/sys/middle/$ /srv/https/interos.com/sys/middle
 30.1410 +    AliasMatch ^/middle/$ /srv/https/interos.com/sys/middle
 30.1411 +    AliasMatch ^/middle$ /srv/https/interos.com/sys/middle
 30.1412 +
 30.1413 +    AliasMatch ^/sys/xml/files/$ /srv/https/interos.com/sys/xml/files
 30.1414 +    AliasMatch ^/xml/files/$ /srv/https/interos.com/sys/xml/files
 30.1415 +    AliasMatch ^/xml/files$ /srv/https/interos.com/sys/xml/files
 30.1416 +
 30.1417 +    AliasMatch ^/sys/xml/user/$ /srv/https/interos.com/sys/xml/user
 30.1418 +    AliasMatch ^/xml/user/$ /srv/https/interos.com/sys/xml/user
 30.1419 +    AliasMatch ^/xml/user$ /srv/https/interos.com/sys/xml/user
 30.1420 +
 30.1421 +    <Directory /srv/https/interos.com>
 30.1422 +      AllowOverride FileInfo Limit
 30.1423 +      #FastCgiAccessChecker /srv/data/sys/access
 30.1424 +    </Directory>
 30.1425 +
 30.1426 +    <Directory /srv/https/interos.com/sys>
 30.1427 +      AllowOverride FileInfo Options
 30.1428 +      Options ExecCGI FollowSymLinks
 30.1429 +      <FilesMatch ^(login|new_user|welcome|welcome_back|main|top|content|bottom|new|open|next|settings|menu|user|logout|interos|left|middle|right)$>
 30.1430 +        SetHandler fastcgi-script
 30.1431 +      </FilesMatch>
 30.1432 +    </Directory>
 30.1433 +
 30.1434 +    <Directory /srv/https/interos.com/sys/xml>
 30.1435 +      <FilesMatch ^(exist|files|open|save|test|user)$>
 30.1436 +        SetHandler fastcgi-script
 30.1437 +      </FilesMatch>
 30.1438 +    </Directory>
 30.1439 +  </VirtualHost>
 30.1440 +
 30.1441 +  <VirtualHost 208.86.227.235:443>
 30.1442 +    DocumentRoot "/srv/https/about.interos.org"
 30.1443 +    ServerName about.interos.org
 30.1444 +    ServerAdmin sys@interos.org
 30.1445 +    ErrorLog /var/log/httpd-error.log
 30.1446 +    TransferLog /var/log/httpd-access.log
 30.1447 +
 30.1448 +    RewriteEngine on
 30.1449 +
 30.1450 +    RewriteRule ^/index\.html$ /sys/markup/about
 30.1451 +
 30.1452 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1453 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1454 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1455 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1456 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1457 +
 30.1458 +    Redirect /about https://about.interos.org/
 30.1459 +    Redirect /about/ https://about.interos.org/
 30.1460 +
 30.1461 +    Redirect /blog https://blog.interos.org/
 30.1462 +    Redirect /blog/ https://blog.interos.org/
 30.1463 +
 30.1464 +    Redirect /code/ https://code.interos.org/
 30.1465 +    Redirect /code https://code.interos.org/
 30.1466 +
 30.1467 +    Redirect /e-mail/ https://e-mail.interos.org/
 30.1468 +    Redirect /e-mail https://e-mail.interos.org/
 30.1469 +
 30.1470 +    Redirect /faq/ https://faq.interos.org/
 30.1471 +    Redirect /faq https://faq.interos.org/
 30.1472 +
 30.1473 +    Redirect /gear/ https://gear.interos.org/
 30.1474 +    Redirect /gear https://gear.interos.org/
 30.1475 +  </VirtualHost>
 30.1476 +
 30.1477 +  <VirtualHost 208.86.227.235:443>
 30.1478 +    DocumentRoot "/srv/https/about.interos.com"
 30.1479 +    ServerName about.interos.com
 30.1480 +    ErrorLog /var/log/httpd-error.log
 30.1481 +    TransferLog /var/log/httpd-access.log
 30.1482 +
 30.1483 +    RewriteEngine on
 30.1484 +
 30.1485 +    RewriteRule ^/index\.html$ /sys/markup/about
 30.1486 +
 30.1487 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1488 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1489 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1490 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1491 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1492 +
 30.1493 +    Redirect /about https://about.interos.com/
 30.1494 +    Redirect /about/ https://about.interos.com/
 30.1495 +
 30.1496 +    Redirect /blog https://blog.interos.com/
 30.1497 +    Redirect /blog/ https://blog.interos.com/
 30.1498 +
 30.1499 +    Redirect /code/ https://code.interos.com/
 30.1500 +    Redirect /code https://code.interos.com/
 30.1501 +
 30.1502 +    Redirect /demo/ https://demo.interos.com/
 30.1503 +    Redirect /demo https://demo.interos.com/
 30.1504 +
 30.1505 +    Redirect /e-mail/ https://e-mail.interos.com/
 30.1506 +    Redirect /e-mail https://e-mail.interos.com/
 30.1507 +
 30.1508 +    Redirect /faq/ https://faq.interos.com/
 30.1509 +    Redirect /faq https://faq.interos.com/
 30.1510 +
 30.1511 +    Redirect /gear/ https://gear.interos.com/
 30.1512 +    Redirect /gear https://gear.interos.com/
 30.1513 +
 30.1514 +    Redirect /help/ https://help.interos.com/
 30.1515 +    Redirect /help https://help.interos.com/
 30.1516 +
 30.1517 +    Redirect /login/ https://login.interos.com/
 30.1518 +    Redirect /login https://login.interos.com/
 30.1519 +  </VirtualHost>
 30.1520 +
 30.1521 +  <VirtualHost 208.86.227.235:443>
 30.1522 +    DocumentRoot "/srv/https/blog.interos.org"
 30.1523 +    ServerName blog.interos.org
 30.1524 +    ServerAdmin sys@interos.org
 30.1525 +    ErrorLog /var/log/httpd-error.log
 30.1526 +    TransferLog /var/log/httpd-access.log
 30.1527 +
 30.1528 +    RewriteEngine on
 30.1529 +
 30.1530 +    RewriteRule ^/index\.html$ /sys/markup/blog
 30.1531 +
 30.1532 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1533 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1534 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1535 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1536 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1537 +
 30.1538 +    Redirect /about https://about.interos.org/
 30.1539 +    Redirect /about/ https://about.interos.org/
 30.1540 +
 30.1541 +    Redirect /blog https://blog.interos.org/
 30.1542 +    Redirect /blog/ https://blog.interos.org/
 30.1543 +
 30.1544 +    Redirect /code/ https://code.interos.org/
 30.1545 +    Redirect /code https://code.interos.org/
 30.1546 +
 30.1547 +    Redirect /e-mail/ https://e-mail.interos.org/
 30.1548 +    Redirect /e-mail https://e-mail.interos.org/
 30.1549 +
 30.1550 +    Redirect /faq/ https://faq.interos.org/
 30.1551 +    Redirect /faq https://faq.interos.org/
 30.1552 +  </VirtualHost>
 30.1553 +
 30.1554 +  <VirtualHost 208.86.227.235:443>
 30.1555 +    DocumentRoot "/srv/https/blog.interos.com"
 30.1556 +    ServerName blog.interos.com
 30.1557 +    ErrorLog /var/log/httpd-error.log
 30.1558 +    TransferLog /var/log/httpd-access.log
 30.1559 +
 30.1560 +    RewriteEngine on
 30.1561 +
 30.1562 +    RewriteRule ^/index\.html$ /sys/markup/blog
 30.1563 +
 30.1564 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1565 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1566 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1567 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1568 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1569 +
 30.1570 +    Redirect /about/ https://about.interos.com/
 30.1571 +    Redirect /about https://about.interos.com/
 30.1572 +
 30.1573 +    Redirect /blog/ https://blog.interos.com/
 30.1574 +    Redirect /blog https://blog.interos.com/
 30.1575 +
 30.1576 +    Redirect /code/ https://code.interos.com/
 30.1577 +    Redirect /code https://code.interos.com/
 30.1578 +
 30.1579 +    Redirect /demo/ https://demo.interos.com/
 30.1580 +    Redirect /demo https://demo.interos.com/
 30.1581 +
 30.1582 +    Redirect /e-mail/ https://e-mail.interos.com/
 30.1583 +    Redirect /e-mail https://e-mail.interos.com/
 30.1584 +
 30.1585 +    Redirect /faq/ https://faq.interos.com/
 30.1586 +    Redirect /faq https://faq.interos.com/
 30.1587 +
 30.1588 +    Redirect /gear/ https://gear.interos.com/
 30.1589 +    Redirect /gear https://gear.interos.com/
 30.1590 +
 30.1591 +    Redirect /help/ https://help.interos.com/
 30.1592 +    Redirect /help https://help.interos.com/
 30.1593 +
 30.1594 +    Redirect /login/ https://login.interos.com/
 30.1595 +    Redirect /login https://login.interos.com/
 30.1596 +  </VirtualHost>
 30.1597 +
 30.1598 +  <VirtualHost 208.86.227.235:443>
 30.1599 +    DocumentRoot "/srv/https/code.interos.org"
 30.1600 +    ServerName code.interos.org
 30.1601 +    ServerAdmin sys@interos.org
 30.1602 +    ErrorLog /var/log/httpd-error.log
 30.1603 +    TransferLog /var/log/httpd-access.log
 30.1604 +
 30.1605 +    RewriteEngine on
 30.1606 +
 30.1607 +    RewriteRule ^/index\.html$ /sys/markup/code
 30.1608 +
 30.1609 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1610 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1611 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1612 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1613 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1614 +
 30.1615 +    Redirect /about https://about.interos.org/
 30.1616 +    Redirect /about/ https://about.interos.org/
 30.1617 +
 30.1618 +    Redirect /blog https://blog.interos.org/
 30.1619 +    Redirect /blog/ https://blog.interos.org/
 30.1620 +
 30.1621 +    Redirect /code/ https://code.interos.org/
 30.1622 +    Redirect /code https://code.interos.org/
 30.1623 +
 30.1624 +    Redirect /e-mail/ https://e-mail.interos.org/
 30.1625 +    Redirect /e-mail https://e-mail.interos.org/
 30.1626 +
 30.1627 +    Redirect /faq/ https://faq.interos.org/
 30.1628 +    Redirect /faq https://faq.interos.org/
 30.1629 +  </VirtualHost>
 30.1630 +
 30.1631 +  <VirtualHost 208.86.227.235:443>
 30.1632 +    DocumentRoot "/srv/https/code.interos.com"
 30.1633 +    ServerName code.interos.com
 30.1634 +    ErrorLog /var/log/httpd-error.log
 30.1635 +    TransferLog /var/log/httpd-access.log
 30.1636 +
 30.1637 +    RewriteEngine on
 30.1638 +
 30.1639 +    RewriteRule ^/index\.html$ /sys/markup/code
 30.1640 +
 30.1641 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1642 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1643 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1644 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1645 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1646 +
 30.1647 +    Redirect /about/ https://about.interos.com/
 30.1648 +    Redirect /about https://about.interos.com/
 30.1649 +
 30.1650 +    Redirect /blog/ https://blog.interos.com/
 30.1651 +    Redirect /blog https://blog.interos.com/
 30.1652 +
 30.1653 +    Redirect /code/ https://code.interos.com/
 30.1654 +    Redirect /code https://code.interos.com/
 30.1655 +
 30.1656 +    Redirect /demo/ https://demo.interos.com/
 30.1657 +    Redirect /demo https://demo.interos.com/
 30.1658 +
 30.1659 +    Redirect /e-mail/ https://e-mail.interos.com/
 30.1660 +    Redirect /e-mail https://e-mail.interos.com/
 30.1661 +
 30.1662 +    Redirect /faq/ https://faq.interos.com/
 30.1663 +    Redirect /faq https://faq.interos.com/
 30.1664 +
 30.1665 +    Redirect /gear/ https://gear.interos.com/
 30.1666 +    Redirect /gear https://gear.interos.com/
 30.1667 +
 30.1668 +    Redirect /help/ https://help.interos.com/
 30.1669 +    Redirect /help https://help.interos.com/
 30.1670 +
 30.1671 +    Redirect /login/ https://login.interos.com/
 30.1672 +    Redirect /login https://login.interos.com/
 30.1673 +  </VirtualHost>
 30.1674 +
 30.1675 +  <VirtualHost 208.86.227.235:443>
 30.1676 +    DocumentRoot "/srv/https/demo.interos.com"
 30.1677 +    ServerName demo.interos.com
 30.1678 +    ErrorLog /var/log/httpd-error.log
 30.1679 +    TransferLog /var/log/httpd-access.log
 30.1680 +
 30.1681 +    RewriteEngine on
 30.1682 +
 30.1683 +    RewriteRule ^/index\.html$ /sys/markup/demo
 30.1684 +
 30.1685 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1686 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1687 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1688 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1689 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1690 +
 30.1691 +    Redirect /about/ https://about.interos.com/
 30.1692 +    Redirect /about https://about.interos.com/
 30.1693 +
 30.1694 +    Redirect /blog/ https://blog.interos.com/
 30.1695 +    Redirect /blog https://blog.interos.com/
 30.1696 +
 30.1697 +    Redirect /code/ https://code.interos.com/
 30.1698 +    Redirect /code https://code.interos.com/
 30.1699 +
 30.1700 +    Redirect /demo/ https://demo.interos.com/
 30.1701 +    Redirect /demo https://demo.interos.com/
 30.1702 +
 30.1703 +    Redirect /e-mail/ https://e-mail.interos.com/
 30.1704 +    Redirect /e-mail https://e-mail.interos.com/
 30.1705 +
 30.1706 +    Redirect /faq/ https://faq.interos.com/
 30.1707 +    Redirect /faq https://faq.interos.com/
 30.1708 +
 30.1709 +    Redirect /gear/ https://gear.interos.com/
 30.1710 +    Redirect /gear https://gear.interos.com/
 30.1711 +
 30.1712 +    Redirect /help/ https://help.interos.com/
 30.1713 +    Redirect /help https://help.interos.com/
 30.1714 +
 30.1715 +    Redirect /login/ https://login.interos.com/
 30.1716 +    Redirect /login https://login.interos.com/
 30.1717 +  </VirtualHost>
 30.1718 +
 30.1719 +  <VirtualHost 208.86.227.235:443>
 30.1720 +    DocumentRoot "/srv/https/e-mail.interos.org"
 30.1721 +    ServerName e-mail.interos.org
 30.1722 +    ServerAdmin sys@interos.org
 30.1723 +    ErrorLog /var/log/httpd-error.log
 30.1724 +    TransferLog /var/log/httpd-access.log
 30.1725 +
 30.1726 +    RewriteEngine on
 30.1727 +
 30.1728 +    RewriteRule ^/index\.html$ /sys/markup/e-mail
 30.1729 +
 30.1730 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1731 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1732 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1733 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1734 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1735 +
 30.1736 +    Redirect /about https://about.interos.org/
 30.1737 +    Redirect /about/ https://about.interos.org/
 30.1738 +
 30.1739 +    Redirect /blog https://blog.interos.org/
 30.1740 +    Redirect /blog/ https://blog.interos.org/
 30.1741 +
 30.1742 +    Redirect /code/ https://code.interos.org/
 30.1743 +    Redirect /code https://code.interos.org/
 30.1744 +
 30.1745 +    Redirect /e-mail/ https://e-mail.interos.org/
 30.1746 +    Redirect /e-mail https://e-mail.interos.org/
 30.1747 +
 30.1748 +    Redirect /faq/ https://faq.interos.org/
 30.1749 +    Redirect /faq https://faq.interos.org/
 30.1750 +
 30.1751 +    Redirect /gear/ https://gear.interos.org/
 30.1752 +    Redirect /gear https://gear.interos.org/
 30.1753 +  </VirtualHost>
 30.1754 +
 30.1755 +  <VirtualHost 208.86.227.235:443>
 30.1756 +    DocumentRoot "/srv/https/e-mail.interos.com"
 30.1757 +    ServerName e-mail.interos.com
 30.1758 +    ErrorLog /var/log/httpd-error.log
 30.1759 +    TransferLog /var/log/httpd-access.log
 30.1760 +
 30.1761 +    RewriteEngine on
 30.1762 +
 30.1763 +    RewriteRule ^/index\.html$ /sys/markup/e-mail
 30.1764 +
 30.1765 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1766 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1767 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1768 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1769 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1770 +
 30.1771 +    Redirect /about/ https://about.interos.com/
 30.1772 +    Redirect /about https://about.interos.com/
 30.1773 +
 30.1774 +    Redirect /blog/ https://blog.interos.com/
 30.1775 +    Redirect /blog https://blog.interos.com/
 30.1776 +
 30.1777 +    Redirect /code/ https://code.interos.com/
 30.1778 +    Redirect /code https://code.interos.com/
 30.1779 +
 30.1780 +    Redirect /demo/ https://demo.interos.com/
 30.1781 +    Redirect /demo https://demo.interos.com/
 30.1782 +
 30.1783 +    Redirect /e-mail/ https://e-mail.interos.com/
 30.1784 +    Redirect /e-mail https://e-mail.interos.com/
 30.1785 +
 30.1786 +    Redirect /faq/ https://faq.interos.com/
 30.1787 +    Redirect /faq https://faq.interos.com/
 30.1788 +
 30.1789 +    Redirect /gear/ https://gear.interos.com/
 30.1790 +    Redirect /gear https://gear.interos.com/
 30.1791 +
 30.1792 +    Redirect /help/ https://help.interos.com/
 30.1793 +    Redirect /help https://help.interos.com/
 30.1794 +
 30.1795 +    Redirect /login/ https://login.interos.com/
 30.1796 +    Redirect /login https://login.interos.com/
 30.1797 +  </VirtualHost>
 30.1798 +
 30.1799 +  <VirtualHost 208.86.227.235:443>
 30.1800 +    DocumentRoot "/srv/https/faq.interos.org"
 30.1801 +    ServerName faq.interos.org
 30.1802 +    ServerAdmin sys@interos.org
 30.1803 +    ErrorLog /var/log/httpd-error.log
 30.1804 +    TransferLog /var/log/httpd-access.log
 30.1805 +
 30.1806 +    RewriteEngine on
 30.1807 +
 30.1808 +    RewriteRule ^/index\.html$ /sys/markup/faq
 30.1809 +
 30.1810 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1811 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1812 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1813 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1814 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1815 +
 30.1816 +    Redirect /about https://about.interos.org/
 30.1817 +    Redirect /about/ https://about.interos.org/
 30.1818 +
 30.1819 +    Redirect /blog https://blog.interos.org/
 30.1820 +    Redirect /blog/ https://blog.interos.org/
 30.1821 +
 30.1822 +    Redirect /code/ https://code.interos.org/
 30.1823 +    Redirect /code https://code.interos.org/
 30.1824 +
 30.1825 +    Redirect /e-mail/ https://e-mail.interos.org/
 30.1826 +    Redirect /e-mail https://e-mail.interos.org/
 30.1827 +
 30.1828 +    Redirect /faq/ https://faq.interos.org/
 30.1829 +    Redirect /faq https://faq.interos.org/
 30.1830 +
 30.1831 +    Redirect /gear/ https://gear.interos.org/
 30.1832 +    Redirect /gear https://gear.interos.org/
 30.1833 +  </VirtualHost>
 30.1834 +
 30.1835 +  <VirtualHost 208.86.227.235:443>
 30.1836 +    DocumentRoot "/srv/https/faq.interos.com"
 30.1837 +    ServerName faq.interos.com
 30.1838 +    ErrorLog /var/log/httpd-error.log
 30.1839 +    TransferLog /var/log/httpd-access.log
 30.1840 +
 30.1841 +    RewriteEngine on
 30.1842 +
 30.1843 +    RewriteRule ^/index\.html$ /sys/markup/faq
 30.1844 +
 30.1845 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1846 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1847 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1848 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1849 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1850 +
 30.1851 +    Redirect /about/ https://about.interos.com/
 30.1852 +    Redirect /about https://about.interos.com/
 30.1853 +
 30.1854 +    Redirect /blog/ https://blog.interos.com/
 30.1855 +    Redirect /blog https://blog.interos.com/
 30.1856 +
 30.1857 +    Redirect /code/ https://code.interos.com/
 30.1858 +    Redirect /code https://code.interos.com/
 30.1859 +
 30.1860 +    Redirect /demo/ https://demo.interos.com/
 30.1861 +    Redirect /demo https://demo.interos.com/
 30.1862 +
 30.1863 +    Redirect /e-mail/ https://e-mail.interos.com/
 30.1864 +    Redirect /e-mail https://e-mail.interos.com/
 30.1865 +
 30.1866 +    Redirect /faq/ https://faq.interos.com/
 30.1867 +    Redirect /faq https://faq.interos.com/
 30.1868 +
 30.1869 +    Redirect /gear/ https://gear.interos.com/
 30.1870 +    Redirect /gear https://gear.interos.com/
 30.1871 +
 30.1872 +    Redirect /help/ https://help.interos.com/
 30.1873 +    Redirect /help https://help.interos.com/
 30.1874 +
 30.1875 +    Redirect /login/ https://login.interos.com/
 30.1876 +    Redirect /login https://login.interos.com/
 30.1877 +  </VirtualHost>
 30.1878 +
 30.1879 +  <VirtualHost 208.86.227.235:443>
 30.1880 +    DocumentRoot "/srv/https/gear.interos.org"
 30.1881 +    ServerName gear.interos.org
 30.1882 +    ServerAdmin sys@interos.org
 30.1883 +    ErrorLog /var/log/httpd-error.log
 30.1884 +    TransferLog /var/log/httpd-access.log
 30.1885 +
 30.1886 +    RewriteEngine on
 30.1887 +
 30.1888 +    RewriteRule ^/index\.html$ /sys/markup/gear
 30.1889 +
 30.1890 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1891 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1892 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1893 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1894 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1895 +
 30.1896 +    Redirect /about https://about.interos.org/
 30.1897 +    Redirect /about/ https://about.interos.org/
 30.1898 +
 30.1899 +    Redirect /blog https://blog.interos.org/
 30.1900 +    Redirect /blog/ https://blog.interos.org/
 30.1901 +
 30.1902 +    Redirect /code/ https://code.interos.org/
 30.1903 +    Redirect /code https://code.interos.org/
 30.1904 +
 30.1905 +    Redirect /e-mail/ https://e-mail.interos.org/
 30.1906 +    Redirect /e-mail https://e-mail.interos.org/
 30.1907 +
 30.1908 +    Redirect /faq/ https://faq.interos.org/
 30.1909 +    Redirect /faq https://faq.interos.org/
 30.1910 +
 30.1911 +    Redirect /gear/ https://gear.interos.org/
 30.1912 +    Redirect /gear https://gear.interos.org/
 30.1913 +  </VirtualHost>
 30.1914 +
 30.1915 +  <VirtualHost 208.86.227.235:443>
 30.1916 +    DocumentRoot "/srv/https/gear.interos.com"
 30.1917 +    ServerName gear.interos.com
 30.1918 +    ErrorLog /var/log/httpd-error.log
 30.1919 +    TransferLog /var/log/httpd-access.log
 30.1920 +
 30.1921 +    RewriteEngine on
 30.1922 +
 30.1923 +    RewriteRule ^/index\.html$ /sys/markup/gear
 30.1924 +
 30.1925 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1926 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1927 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1928 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1929 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1930 +
 30.1931 +    Redirect /about/ https://about.interos.com/
 30.1932 +    Redirect /about https://about.interos.com/
 30.1933 +
 30.1934 +    Redirect /blog/ https://blog.interos.com/
 30.1935 +    Redirect /blog https://blog.interos.com/
 30.1936 +
 30.1937 +    Redirect /code/ https://code.interos.com/
 30.1938 +    Redirect /code https://code.interos.com/
 30.1939 +
 30.1940 +    Redirect /demo/ https://demo.interos.com/
 30.1941 +    Redirect /demo https://demo.interos.com/
 30.1942 +
 30.1943 +    Redirect /e-mail/ https://e-mail.interos.com/
 30.1944 +    Redirect /e-mail https://e-mail.interos.com/
 30.1945 +
 30.1946 +    Redirect /faq/ https://faq.interos.com/
 30.1947 +    Redirect /faq https://faq.interos.com/
 30.1948 +
 30.1949 +    Redirect /gear/ https://gear.interos.com/
 30.1950 +    Redirect /gear https://gear.interos.com/
 30.1951 +
 30.1952 +    Redirect /help/ https://help.interos.com/
 30.1953 +    Redirect /help https://help.interos.com/
 30.1954 +
 30.1955 +    Redirect /login/ https://login.interos.com/
 30.1956 +    Redirect /login https://login.interos.com/
 30.1957 +  </VirtualHost>
 30.1958 +
 30.1959 +  <VirtualHost 208.86.227.235:443>
 30.1960 +    DocumentRoot "/srv/https/help.interos.com"
 30.1961 +    ServerName help.interos.com
 30.1962 +    ErrorLog /var/log/httpd-error.log
 30.1963 +    TransferLog /var/log/httpd-access.log
 30.1964 +
 30.1965 +    RewriteEngine on
 30.1966 +
 30.1967 +    RewriteRule ^/index\.html$ /sys/markup/help
 30.1968 +
 30.1969 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.1970 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.1971 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.1972 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.1973 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.1974 +
 30.1975 +    Redirect /about/ https://about.interos.com/
 30.1976 +    Redirect /about https://about.interos.com/
 30.1977 +
 30.1978 +    Redirect /blog/ https://blog.interos.com/
 30.1979 +    Redirect /blog https://blog.interos.com/
 30.1980 +
 30.1981 +    Redirect /code/ https://code.interos.com/
 30.1982 +    Redirect /code https://code.interos.com/
 30.1983 +
 30.1984 +    Redirect /demo/ https://demo.interos.com/
 30.1985 +    Redirect /demo https://demo.interos.com/
 30.1986 +
 30.1987 +    Redirect /e-mail/ https://e-mail.interos.com/
 30.1988 +    Redirect /e-mail https://e-mail.interos.com/
 30.1989 +
 30.1990 +    Redirect /faq/ https://faq.interos.com/
 30.1991 +    Redirect /faq https://faq.interos.com/
 30.1992 +
 30.1993 +    Redirect /gear/ https://gear.interos.com/
 30.1994 +    Redirect /gear https://gear.interos.com/
 30.1995 +
 30.1996 +    Redirect /help/ https://help.interos.com/
 30.1997 +    Redirect /help https://help.interos.com/
 30.1998 +
 30.1999 +    Redirect /login/ https://login.interos.com/
 30.2000 +    Redirect /login https://login.interos.com/
 30.2001 +  </VirtualHost>
 30.2002 +
 30.2003 +  <VirtualHost 208.86.227.235:443>
 30.2004 +    DocumentRoot "/srv/https/login.interos.com"
 30.2005 +    ServerName login.interos.com
 30.2006 +    ErrorLog /var/log/httpd-error.log
 30.2007 +    TransferLog /var/log/httpd-access.log
 30.2008 +
 30.2009 +    RewriteEngine on
 30.2010 +
 30.2011 +    RewriteRule ^/index\.html$ https://www.interos.com/login
 30.2012 +
 30.2013 +    RewriteRule ^/css/(.*) /sys/style/$1
 30.2014 +    RewriteRule ^/images/(.*) /sys/images/$1
 30.2015 +    RewriteRule ^/js/(.*) /sys/js/$1
 30.2016 +    RewriteRule ^/markup/(.*) /sys/markup/$1
 30.2017 +    RewriteRule ^/style/(.*) /sys/style/$1
 30.2018 +
 30.2019 +    Redirect /about/ https://about.interos.com/
 30.2020 +    Redirect /about https://about.interos.com/
 30.2021 +
 30.2022 +    Redirect /blog/ https://blog.interos.com/
 30.2023 +    Redirect /blog https://blog.interos.com/
 30.2024 +
 30.2025 +    Redirect /code/ https://code.interos.com/
 30.2026 +    Redirect /code https://code.interos.com/
 30.2027 +
 30.2028 +    Redirect /demo/ https://demo.interos.com/
 30.2029 +    Redirect /demo https://demo.interos.com/
 30.2030 +
 30.2031 +    Redirect /e-mail/ https://e-mail.interos.com/
 30.2032 +    Redirect /e-mail https://e-mail.interos.com/
 30.2033 +
 30.2034 +    Redirect /faq/ https://faq.interos.com/
 30.2035 +    Redirect /faq https://faq.interos.com/
 30.2036 +
 30.2037 +    Redirect /gear/ https://gear.interos.com/
 30.2038 +    Redirect /gear https://gear.interos.com/
 30.2039 +
 30.2040 +    Redirect /help/ https://help.interos.com/
 30.2041 +    Redirect /help https://help.interos.com/
 30.2042 +
 30.2043 +    Redirect /login/ https://www.interos.com/login
 30.2044 +    Redirect /login https://www.interos.com/login
 30.2045 +  </VirtualHost>
 30.2046 +</IfDefine>
 30.2047 +
 30.2048 +<IfModule mod_gzip.c>
 30.2049 +    mod_gzip_on       Yes
 30.2050 +    mod_gzip_dechunk  Yes
 30.2051 +    mod_gzip_item_include file      \.(html?|txt|css|js|php|pl)$
 30.2052 +    mod_gzip_item_include handler   ^cgi-script$
 30.2053 +    mod_gzip_item_include handler   ^fastcgi-script$
 30.2054 +    mod_gzip_item_include mime      ^text/.*
 30.2055 +    mod_gzip_item_include mime      ^application/x-javascript.*
 30.2056 +    mod_gzip_item_exclude mime      ^image/.*
 30.2057 +    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
 30.2058 +</IfModule>
    31.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2 +++ b/dtd/xhtml1-borderless-frameset.dtd	Sat May 01 16:19:36 2010 -0400
    31.3 @@ -0,0 +1,1246 @@
    31.4 +<!--
    31.5 +   Extensible HTML version 1.0 Borderless Frameset DTD
    31.6 +
    31.7 +   This is the same as Extensible HTML version 1.0 Frameset except for
    31.8 +   chamges indicating for framesets to be displayed borderless.
    31.9 +
   31.10 +-->
   31.11 +
   31.12 +<!--
   31.13 +   Extensible HTML version 1.0 Frameset DTD
   31.14 +
   31.15 +   This is the same as HTML 4 Frameset except for
   31.16 +   changes due to the differences between XML and SGML.
   31.17 +
   31.18 +   Namespace = http://www.w3.org/1999/xhtml
   31.19 +
   31.20 +   For further information, see: http://www.w3.org/TR/xhtml1
   31.21 +
   31.22 +   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
   31.23 +   All Rights Reserved. 
   31.24 +
   31.25 +   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
   31.26 +
   31.27 +   PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
   31.28 +   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
   31.29 +
   31.30 +   $Revision: 1.2 $
   31.31 +   $Date: 2002/08/01 18:37:55 $
   31.32 +
   31.33 +-->
   31.34 +
   31.35 +<!--================ Character mnemonic entities =========================-->
   31.36 +
   31.37 +<!ENTITY % HTMLlat1 PUBLIC
   31.38 +   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
   31.39 +   "xhtml-lat1.ent">
   31.40 +%HTMLlat1;
   31.41 +
   31.42 +<!ENTITY % HTMLsymbol PUBLIC
   31.43 +   "-//W3C//ENTITIES Symbols for XHTML//EN"
   31.44 +   "xhtml-symbol.ent">
   31.45 +%HTMLsymbol;
   31.46 +
   31.47 +<!ENTITY % HTMLspecial PUBLIC
   31.48 +   "-//W3C//ENTITIES Special for XHTML//EN"
   31.49 +   "xhtml-special.ent">
   31.50 +%HTMLspecial;
   31.51 +
   31.52 +<!--================== Imported Names ====================================-->
   31.53 +
   31.54 +<!ENTITY % ContentType "CDATA">
   31.55 +    <!-- media type, as per [RFC2045] -->
   31.56 +
   31.57 +<!ENTITY % ContentTypes "CDATA">
   31.58 +    <!-- comma-separated list of media types, as per [RFC2045] -->
   31.59 +
   31.60 +<!ENTITY % Charset "CDATA">
   31.61 +    <!-- a character encoding, as per [RFC2045] -->
   31.62 +
   31.63 +<!ENTITY % Charsets "CDATA">
   31.64 +    <!-- a space separated list of character encodings, as per [RFC2045] -->
   31.65 +
   31.66 +<!ENTITY % LanguageCode "NMTOKEN">
   31.67 +    <!-- a language code, as per [RFC3066] -->
   31.68 +
   31.69 +<!ENTITY % Character "CDATA">
   31.70 +    <!-- a single character, as per section 2.2 of [XML] -->
   31.71 +
   31.72 +<!ENTITY % Number "CDATA">
   31.73 +    <!-- one or more digits -->
   31.74 +
   31.75 +<!ENTITY % LinkTypes "CDATA">
   31.76 +    <!-- space-separated list of link types -->
   31.77 +
   31.78 +<!ENTITY % MediaDesc "CDATA">
   31.79 +    <!-- single or comma-separated list of media descriptors -->
   31.80 +
   31.81 +<!ENTITY % URI "CDATA">
   31.82 +    <!-- a Uniform Resource Identifier, see [RFC2396] -->
   31.83 +
   31.84 +<!ENTITY % UriList "CDATA">
   31.85 +    <!-- a space separated list of Uniform Resource Identifiers -->
   31.86 +
   31.87 +<!ENTITY % Datetime "CDATA">
   31.88 +    <!-- date and time information. ISO date format -->
   31.89 +
   31.90 +<!ENTITY % Script "CDATA">
   31.91 +    <!-- script expression -->
   31.92 +
   31.93 +<!ENTITY % StyleSheet "CDATA">
   31.94 +    <!-- style sheet data -->
   31.95 +
   31.96 +<!ENTITY % Text "CDATA">
   31.97 +    <!-- used for titles etc. -->
   31.98 +
   31.99 +<!ENTITY % FrameTarget "NMTOKEN">
  31.100 +    <!-- render in this frame -->
  31.101 +
  31.102 +<!ENTITY % Length "CDATA">
  31.103 +    <!-- nn for pixels or nn% for percentage length -->
  31.104 +
  31.105 +<!ENTITY % MultiLength "CDATA">
  31.106 +    <!-- pixel, percentage, or relative -->
  31.107 +
  31.108 +<!ENTITY % MultiLengths "CDATA">
  31.109 +    <!-- comma-separated list of MultiLength -->
  31.110 +
  31.111 +<!ENTITY % Pixels "CDATA">
  31.112 +    <!-- integer representing length in pixels -->
  31.113 +
  31.114 +<!-- these are used for image maps -->
  31.115 +
  31.116 +<!ENTITY % Shape "(rect|circle|poly|default)">
  31.117 +
  31.118 +<!ENTITY % Coords "CDATA">
  31.119 +    <!-- comma separated list of lengths -->
  31.120 +
  31.121 +<!-- used for object, applet, img, input and iframe -->
  31.122 +<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
  31.123 +
  31.124 +<!-- a color using sRGB: #RRGGBB as Hex values -->
  31.125 +<!ENTITY % Color "CDATA">
  31.126 +
  31.127 +<!-- There are also 16 widely known color names with their sRGB values:
  31.128 +
  31.129 +    Black  = #000000    Green  = #008000
  31.130 +    Silver = #C0C0C0    Lime   = #00FF00
  31.131 +    Gray   = #808080    Olive  = #808000
  31.132 +    White  = #FFFFFF    Yellow = #FFFF00
  31.133 +    Maroon = #800000    Navy   = #000080
  31.134 +    Red    = #FF0000    Blue   = #0000FF
  31.135 +    Purple = #800080    Teal   = #008080
  31.136 +    Fuchsia= #FF00FF    Aqua   = #00FFFF
  31.137 +-->
  31.138 +
  31.139 +<!--=================== Generic Attributes ===============================-->
  31.140 +
  31.141 +<!-- core attributes common to most elements
  31.142 +  id       document-wide unique id
  31.143 +  class    space separated list of classes
  31.144 +  style    associated style info
  31.145 +  title    advisory title/amplification
  31.146 +-->
  31.147 +<!ENTITY % coreattrs
  31.148 + "id          ID             #IMPLIED
  31.149 +  class       CDATA          #IMPLIED
  31.150 +  style       %StyleSheet;   #IMPLIED
  31.151 +  title       %Text;         #IMPLIED"
  31.152 +  >
  31.153 +
  31.154 +<!-- internationalization attributes
  31.155 +  lang        language code (backwards compatible)
  31.156 +  xml:lang    language code (as per XML 1.0 spec)
  31.157 +  dir         direction for weak/neutral text
  31.158 +-->
  31.159 +<!ENTITY % i18n
  31.160 + "lang        %LanguageCode; #IMPLIED
  31.161 +  xml:lang    %LanguageCode; #IMPLIED
  31.162 +  dir         (ltr|rtl)      #IMPLIED"
  31.163 +  >
  31.164 +
  31.165 +<!-- attributes for common UI events
  31.166 +  onclick     a pointer button was clicked
  31.167 +  ondblclick  a pointer button was double clicked
  31.168 +  onmousedown a pointer button was pressed down
  31.169 +  onmouseup   a pointer button was released
  31.170 +  onmousemove a pointer was moved onto the element
  31.171 +  onmouseout  a pointer was moved away from the element
  31.172 +  onkeypress  a key was pressed and released
  31.173 +  onkeydown   a key was pressed down
  31.174 +  onkeyup     a key was released
  31.175 +-->
  31.176 +<!ENTITY % events
  31.177 + "onclick     %Script;       #IMPLIED
  31.178 +  ondblclick  %Script;       #IMPLIED
  31.179 +  onmousedown %Script;       #IMPLIED
  31.180 +  onmouseup   %Script;       #IMPLIED
  31.181 +  onmouseover %Script;       #IMPLIED
  31.182 +  onmousemove %Script;       #IMPLIED
  31.183 +  onmouseout  %Script;       #IMPLIED
  31.184 +  onkeypress  %Script;       #IMPLIED
  31.185 +  onkeydown   %Script;       #IMPLIED
  31.186 +  onkeyup     %Script;       #IMPLIED"
  31.187 +  >
  31.188 +
  31.189 +<!-- attributes for elements that can get the focus
  31.190 +  accesskey   accessibility key character
  31.191 +  tabindex    position in tabbing order
  31.192 +  onfocus     the element got the focus
  31.193 +  onblur      the element lost the focus
  31.194 +-->
  31.195 +<!ENTITY % focus
  31.196 + "accesskey   %Character;    #IMPLIED
  31.197 +  tabindex    %Number;       #IMPLIED
  31.198 +  onfocus     %Script;       #IMPLIED
  31.199 +  onblur      %Script;       #IMPLIED"
  31.200 +  >
  31.201 +
  31.202 +<!ENTITY % attrs "%coreattrs; %i18n; %events;">
  31.203 +
  31.204 +<!-- text alignment for p, div, h1-h6. The default is
  31.205 +     align="left" for ltr headings, "right" for rtl -->
  31.206 +
  31.207 +<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
  31.208 +
  31.209 +<!--=================== Text Elements ====================================-->
  31.210 +
  31.211 +<!ENTITY % special.extra
  31.212 +   "object | applet | img | map | iframe">
  31.213 +	
  31.214 +<!ENTITY % special.basic
  31.215 +	"br | span | bdo">
  31.216 +
  31.217 +<!ENTITY % special
  31.218 +   "%special.basic; | %special.extra;">
  31.219 +
  31.220 +<!ENTITY % fontstyle.extra "big | small | font | basefont">
  31.221 +
  31.222 +<!ENTITY % fontstyle.basic "tt | i | b | u
  31.223 +                      | s | strike ">
  31.224 +
  31.225 +<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
  31.226 +
  31.227 +<!ENTITY % phrase.extra "sub | sup">
  31.228 +<!ENTITY % phrase.basic "em | strong | dfn | code | q |
  31.229 +                   samp | kbd | var | cite | abbr | acronym">
  31.230 +
  31.231 +<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
  31.232 +
  31.233 +<!ENTITY % inline.forms "input | select | textarea | label | button">
  31.234 +
  31.235 +<!-- these can occur at block or inline level -->
  31.236 +<!ENTITY % misc.inline "ins | del | script">
  31.237 +
  31.238 +<!-- these can only occur at block level -->
  31.239 +<!ENTITY % misc "noscript | %misc.inline;">
  31.240 +
  31.241 +
  31.242 +<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
  31.243 +
  31.244 +<!-- %Inline; covers inline or "text-level" elements -->
  31.245 +<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
  31.246 +
  31.247 +<!--================== Block level elements ==============================-->
  31.248 +
  31.249 +<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
  31.250 +<!ENTITY % lists "ul | ol | dl | menu | dir">
  31.251 +<!ENTITY % blocktext "pre | hr | blockquote | address | center">
  31.252 +
  31.253 +<!ENTITY % block
  31.254 +    "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">
  31.255 +
  31.256 +<!-- %Flow; mixes block and inline and is used for list items etc. -->
  31.257 +<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
  31.258 +
  31.259 +<!--================== Content models for exclusions =====================-->
  31.260 +
  31.261 +<!-- a elements use %Inline; excluding a -->
  31.262 +
  31.263 +<!ENTITY % a.content
  31.264 +   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
  31.265 +
  31.266 +<!-- pre uses %Inline excluding img, object, applet, big, small,
  31.267 +     sub, sup, font, or basefont -->
  31.268 +
  31.269 +<!ENTITY % pre.content
  31.270 +   "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
  31.271 +	   %inline.forms; | %misc.inline;)*">
  31.272 +
  31.273 +
  31.274 +<!-- form uses %Flow; excluding form -->
  31.275 +
  31.276 +<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
  31.277 +
  31.278 +<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
  31.279 +
  31.280 +<!ENTITY % button.content
  31.281 +   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
  31.282 +      table | br | span | bdo | object | applet | img | map |
  31.283 +      %fontstyle; | %phrase; | %misc;)*">
  31.284 +
  31.285 +<!--================ Document Structure ==================================-->
  31.286 +
  31.287 +<!-- the namespace URI designates the document profile -->
  31.288 +
  31.289 +<!ELEMENT html (head, frameset)>
  31.290 +<!ATTLIST html
  31.291 +  %i18n;
  31.292 +  id          ID             #IMPLIED
  31.293 +  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
  31.294 +  >
  31.295 +
  31.296 +<!--================ Document Head =======================================-->
  31.297 +
  31.298 +<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
  31.299 +
  31.300 +<!-- content model is %head.misc; combined with a single
  31.301 +     title and an optional base element in any order -->
  31.302 +
  31.303 +<!ELEMENT head (%head.misc;,
  31.304 +     ((title, %head.misc;, (base, %head.misc;)?) |
  31.305 +      (base, %head.misc;, (title, %head.misc;))))>
  31.306 +
  31.307 +<!ATTLIST head
  31.308 +  %i18n;
  31.309 +  id          ID             #IMPLIED
  31.310 +  profile     %URI;          #IMPLIED
  31.311 +  >
  31.312 +
  31.313 +<!-- The title element is not considered part of the flow of text.
  31.314 +       It should be displayed, for example as the page header or
  31.315 +       window title. Exactly one title is required per document.
  31.316 +    -->
  31.317 +<!ELEMENT title (#PCDATA)>
  31.318 +<!ATTLIST title 
  31.319 +  %i18n;
  31.320 +  id          ID             #IMPLIED
  31.321 +  >
  31.322 +
  31.323 +<!-- document base URI -->
  31.324 +
  31.325 +<!ELEMENT base EMPTY>
  31.326 +<!ATTLIST base
  31.327 +  id          ID             #IMPLIED
  31.328 +  href        %URI;          #IMPLIED
  31.329 +  target      %FrameTarget;  #IMPLIED
  31.330 +  >
  31.331 +
  31.332 +<!-- generic metainformation -->
  31.333 +<!ELEMENT meta EMPTY>
  31.334 +<!ATTLIST meta
  31.335 +  %i18n;
  31.336 +  id          ID             #IMPLIED
  31.337 +  http-equiv  CDATA          #IMPLIED
  31.338 +  name        CDATA          #IMPLIED
  31.339 +  content     CDATA          #REQUIRED
  31.340 +  scheme      CDATA          #IMPLIED
  31.341 +  >
  31.342 +
  31.343 +<!--
  31.344 +  Relationship values can be used in principle:
  31.345 +
  31.346 +   a) for document specific toolbars/menus when used
  31.347 +      with the link element in document head e.g.
  31.348 +        start, contents, previous, next, index, end, help
  31.349 +   b) to link to a separate style sheet (rel="stylesheet")
  31.350 +   c) to make a link to a script (rel="script")
  31.351 +   d) by stylesheets to control how collections of
  31.352 +      html nodes are rendered into printed documents
  31.353 +   e) to make a link to a printable version of this document
  31.354 +      e.g. a PostScript or PDF version (rel="alternate" media="print")
  31.355 +-->
  31.356 +
  31.357 +<!ELEMENT link EMPTY>
  31.358 +<!ATTLIST link
  31.359 +  %attrs;
  31.360 +  charset     %Charset;      #IMPLIED
  31.361 +  href        %URI;          #IMPLIED
  31.362 +  hreflang    %LanguageCode; #IMPLIED
  31.363 +  type        %ContentType;  #IMPLIED
  31.364 +  rel         %LinkTypes;    #IMPLIED
  31.365 +  rev         %LinkTypes;    #IMPLIED
  31.366 +  media       %MediaDesc;    #IMPLIED
  31.367 +  target      %FrameTarget;  #IMPLIED
  31.368 +  >
  31.369 +
  31.370 +<!-- style info, which may include CDATA sections -->
  31.371 +<!ELEMENT style (#PCDATA)>
  31.372 +<!ATTLIST style
  31.373 +  %i18n;
  31.374 +  id          ID             #IMPLIED
  31.375 +  type        %ContentType;  #REQUIRED
  31.376 +  media       %MediaDesc;    #IMPLIED
  31.377 +  title       %Text;         #IMPLIED
  31.378 +  xml:space   (preserve)     #FIXED 'preserve'
  31.379 +  >
  31.380 +
  31.381 +<!-- script statements, which may include CDATA sections -->
  31.382 +<!ELEMENT script (#PCDATA)>
  31.383 +<!ATTLIST script
  31.384 +  id          ID             #IMPLIED
  31.385 +  charset     %Charset;      #IMPLIED
  31.386 +  type        %ContentType;  #REQUIRED
  31.387 +  language    CDATA          #IMPLIED
  31.388 +  src         %URI;          #IMPLIED
  31.389 +  defer       (defer)        #IMPLIED
  31.390 +  xml:space   (preserve)     #FIXED 'preserve'
  31.391 +  >
  31.392 +
  31.393 +<!-- alternate content container for non script-based rendering -->
  31.394 +
  31.395 +<!ELEMENT noscript %Flow;>
  31.396 +<!ATTLIST noscript
  31.397 +  %attrs;
  31.398 +  >
  31.399 +
  31.400 +<!--======================= Frames =======================================-->
  31.401 +
  31.402 +<!-- only one noframes element permitted per document -->
  31.403 +
  31.404 +<!ELEMENT frameset (frameset|frame|noframes)*>
  31.405 +<!ATTLIST frameset
  31.406 +  %coreattrs;
  31.407 +  rows        %MultiLengths; #IMPLIED
  31.408 +  cols        %MultiLengths; #IMPLIED
  31.409 +  onload      %Script;       #IMPLIED
  31.410 +  onunload    %Script;       #IMPLIED
  31.411 +  border      %Pixels;       #IMPLIED
  31.412 +  frameborder %Pixels;       #IMPLIED
  31.413 +  framespacing %Pixels;      #IMPLIED
  31.414 +  >
  31.415 +
  31.416 +<!-- reserved frame names start with "_" otherwise starts with letter -->
  31.417 +
  31.418 +<!-- tiled window within frameset -->
  31.419 +
  31.420 +<!ELEMENT frame EMPTY>
  31.421 +<!ATTLIST frame
  31.422 +  %coreattrs;
  31.423 +  longdesc    %URI;          #IMPLIED
  31.424 +  name        NMTOKEN        #IMPLIED
  31.425 +  src         %URI;          #IMPLIED
  31.426 +  frameborder (1|0)          "1"
  31.427 +  marginwidth %Pixels;       #IMPLIED
  31.428 +  marginheight %Pixels;      #IMPLIED
  31.429 +  noresize    (noresize)     #IMPLIED
  31.430 +  scrolling   (yes|no|auto)  "auto"
  31.431 +  >
  31.432 +
  31.433 +<!-- inline subwindow -->
  31.434 +
  31.435 +<!ELEMENT iframe %Flow;>
  31.436 +<!ATTLIST iframe
  31.437 +  %coreattrs;
  31.438 +  longdesc    %URI;          #IMPLIED
  31.439 +  name        NMTOKEN        #IMPLIED
  31.440 +  src         %URI;          #IMPLIED
  31.441 +  frameborder (1|0)          "1"
  31.442 +  marginwidth %Pixels;       #IMPLIED
  31.443 +  marginheight %Pixels;      #IMPLIED
  31.444 +  scrolling   (yes|no|auto)  "auto"
  31.445 +  align       %ImgAlign;     #IMPLIED
  31.446 +  height      %Length;       #IMPLIED
  31.447 +  width       %Length;       #IMPLIED
  31.448 +  >
  31.449 +
  31.450 +<!-- alternate content container for non frame-based rendering -->
  31.451 +
  31.452 +<!ELEMENT noframes (body)>
  31.453 +<!ATTLIST noframes
  31.454 +  %attrs;
  31.455 +  >
  31.456 +
  31.457 +<!--=================== Document Body ====================================-->
  31.458 +
  31.459 +<!ELEMENT body %Flow;>
  31.460 +<!ATTLIST body
  31.461 +  %attrs;
  31.462 +  onload      %Script;       #IMPLIED
  31.463 +  onunload    %Script;       #IMPLIED
  31.464 +  background  %URI;          #IMPLIED
  31.465 +  bgcolor     %Color;        #IMPLIED
  31.466 +  text        %Color;        #IMPLIED
  31.467 +  link        %Color;        #IMPLIED
  31.468 +  vlink       %Color;        #IMPLIED
  31.469 +  alink       %Color;        #IMPLIED
  31.470 +  >
  31.471 +
  31.472 +<!ELEMENT div %Flow;>  <!-- generic language/style container -->
  31.473 +<!ATTLIST div
  31.474 +  %attrs;
  31.475 +  %TextAlign;
  31.476 +  >
  31.477 +
  31.478 +<!--=================== Paragraphs =======================================-->
  31.479 +
  31.480 +<!ELEMENT p %Inline;>
  31.481 +<!ATTLIST p
  31.482 +  %attrs;
  31.483 +  %TextAlign;
  31.484 +  >
  31.485 +
  31.486 +<!--=================== Headings =========================================-->
  31.487 +
  31.488 +<!--
  31.489 +  There are six levels of headings from h1 (the most important)
  31.490 +  to h6 (the least important).
  31.491 +-->
  31.492 +
  31.493 +<!ELEMENT h1  %Inline;>
  31.494 +<!ATTLIST h1
  31.495 +  %attrs;
  31.496 +  %TextAlign;
  31.497 +  >
  31.498 +
  31.499 +<!ELEMENT h2 %Inline;>
  31.500 +<!ATTLIST h2
  31.501 +  %attrs;
  31.502 +  %TextAlign;
  31.503 +  >
  31.504 +
  31.505 +<!ELEMENT h3 %Inline;>
  31.506 +<!ATTLIST h3
  31.507 +  %attrs;
  31.508 +  %TextAlign;
  31.509 +  >
  31.510 +
  31.511 +<!ELEMENT h4 %Inline;>
  31.512 +<!ATTLIST h4
  31.513 +  %attrs;
  31.514 +  %TextAlign;
  31.515 +  >
  31.516 +
  31.517 +<!ELEMENT h5 %Inline;>
  31.518 +<!ATTLIST h5
  31.519 +  %attrs;
  31.520 +  %TextAlign;
  31.521 +  >
  31.522 +
  31.523 +<!ELEMENT h6 %Inline;>
  31.524 +<!ATTLIST h6
  31.525 +  %attrs;
  31.526 +  %TextAlign;
  31.527 +  >
  31.528 +
  31.529 +<!--=================== Lists ============================================-->
  31.530 +
  31.531 +<!-- Unordered list bullet styles -->
  31.532 +
  31.533 +<!ENTITY % ULStyle "(disc|square|circle)">
  31.534 +
  31.535 +<!-- Unordered list -->
  31.536 +
  31.537 +<!ELEMENT ul (li)+>
  31.538 +<!ATTLIST ul
  31.539 +  %attrs;
  31.540 +  type        %ULStyle;     #IMPLIED
  31.541 +  compact     (compact)     #IMPLIED
  31.542 +  >
  31.543 +
  31.544 +<!-- Ordered list numbering style
  31.545 +
  31.546 +    1   arabic numbers      1, 2, 3, ...
  31.547 +    a   lower alpha         a, b, c, ...
  31.548 +    A   upper alpha         A, B, C, ...
  31.549 +    i   lower roman         i, ii, iii, ...
  31.550 +    I   upper roman         I, II, III, ...
  31.551 +
  31.552 +    The style is applied to the sequence number which by default
  31.553 +    is reset to 1 for the first list item in an ordered list.
  31.554 +-->
  31.555 +<!ENTITY % OLStyle "CDATA">
  31.556 +
  31.557 +<!-- Ordered (numbered) list -->
  31.558 +
  31.559 +<!ELEMENT ol (li)+>
  31.560 +<!ATTLIST ol
  31.561 +  %attrs;
  31.562 +  type        %OLStyle;      #IMPLIED
  31.563 +  compact     (compact)      #IMPLIED
  31.564 +  start       %Number;       #IMPLIED
  31.565 +  >
  31.566 +
  31.567 +<!-- single column list (DEPRECATED) --> 
  31.568 +<!ELEMENT menu (li)+>
  31.569 +<!ATTLIST menu
  31.570 +  %attrs;
  31.571 +  compact     (compact)     #IMPLIED
  31.572 +  >
  31.573 +
  31.574 +<!-- multiple column list (DEPRECATED) --> 
  31.575 +<!ELEMENT dir (li)+>
  31.576 +<!ATTLIST dir
  31.577 +  %attrs;
  31.578 +  compact     (compact)     #IMPLIED
  31.579 +  >
  31.580 +
  31.581 +<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
  31.582 +<!ENTITY % LIStyle "CDATA">
  31.583 +
  31.584 +<!-- list item -->
  31.585 +
  31.586 +<!ELEMENT li %Flow;>
  31.587 +<!ATTLIST li
  31.588 +  %attrs;
  31.589 +  type        %LIStyle;      #IMPLIED
  31.590 +  value       %Number;       #IMPLIED
  31.591 +  >
  31.592 +
  31.593 +<!-- definition lists - dt for term, dd for its definition -->
  31.594 +
  31.595 +<!ELEMENT dl (dt|dd)+>
  31.596 +<!ATTLIST dl
  31.597 +  %attrs;
  31.598 +  compact     (compact)      #IMPLIED
  31.599 +  >
  31.600 +
  31.601 +<!ELEMENT dt %Inline;>
  31.602 +<!ATTLIST dt
  31.603 +  %attrs;
  31.604 +  >
  31.605 +
  31.606 +<!ELEMENT dd %Flow;>
  31.607 +<!ATTLIST dd
  31.608 +  %attrs;
  31.609 +  >
  31.610 +
  31.611 +<!--=================== Address ==========================================-->
  31.612 +
  31.613 +<!-- information on author -->
  31.614 +
  31.615 +<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
  31.616 +<!ATTLIST address
  31.617 +  %attrs;
  31.618 +  >
  31.619 +
  31.620 +<!--=================== Horizontal Rule ==================================-->
  31.621 +
  31.622 +<!ELEMENT hr EMPTY>
  31.623 +<!ATTLIST hr
  31.624 +  %attrs;
  31.625 +  align       (left|center|right) #IMPLIED
  31.626 +  noshade     (noshade)      #IMPLIED
  31.627 +  size        %Pixels;       #IMPLIED
  31.628 +  width       %Length;       #IMPLIED
  31.629 +  >
  31.630 +
  31.631 +<!--=================== Preformatted Text ================================-->
  31.632 +
  31.633 +<!-- content is %Inline; excluding 
  31.634 +        "img|object|applet|big|small|sub|sup|font|basefont" -->
  31.635 +
  31.636 +<!ELEMENT pre %pre.content;>
  31.637 +<!ATTLIST pre
  31.638 +  %attrs;
  31.639 +  width       %Number;      #IMPLIED
  31.640 +  xml:space   (preserve)    #FIXED 'preserve'
  31.641 +  >
  31.642 +
  31.643 +<!--=================== Block-like Quotes ================================-->
  31.644 +
  31.645 +<!ELEMENT blockquote %Flow;>
  31.646 +<!ATTLIST blockquote
  31.647 +  %attrs;
  31.648 +  cite        %URI;          #IMPLIED
  31.649 +  >
  31.650 +
  31.651 +<!--=================== Text alignment ===================================-->
  31.652 +
  31.653 +<!-- center content -->
  31.654 +<!ELEMENT center %Flow;>
  31.655 +<!ATTLIST center
  31.656 +  %attrs;
  31.657 +  >
  31.658 +
  31.659 +<!--=================== Inserted/Deleted Text ============================-->
  31.660 +
  31.661 +
  31.662 +<!--
  31.663 +  ins/del are allowed in block and inline content, but its
  31.664 +  inappropriate to include block content within an ins element
  31.665 +  occurring in inline content.
  31.666 +-->
  31.667 +<!ELEMENT ins %Flow;>
  31.668 +<!ATTLIST ins
  31.669 +  %attrs;
  31.670 +  cite        %URI;          #IMPLIED
  31.671 +  datetime    %Datetime;     #IMPLIED
  31.672 +  >
  31.673 +
  31.674 +<!ELEMENT del %Flow;>
  31.675 +<!ATTLIST del
  31.676 +  %attrs;
  31.677 +  cite        %URI;          #IMPLIED
  31.678 +  datetime    %Datetime;     #IMPLIED
  31.679 +  >
  31.680 +
  31.681 +<!--================== The Anchor Element ================================-->
  31.682 +
  31.683 +<!-- content is %Inline; except that anchors shouldn't be nested -->
  31.684 +
  31.685 +<!ELEMENT a %a.content;>
  31.686 +<!ATTLIST a
  31.687 +  %attrs;
  31.688 +  %focus;
  31.689 +  charset     %Charset;      #IMPLIED
  31.690 +  type        %ContentType;  #IMPLIED
  31.691 +  name        NMTOKEN        #IMPLIED
  31.692 +  href        %URI;          #IMPLIED
  31.693 +  hreflang    %LanguageCode; #IMPLIED
  31.694 +  rel         %LinkTypes;    #IMPLIED
  31.695 +  rev         %LinkTypes;    #IMPLIED
  31.696 +  shape       %Shape;        "rect"
  31.697 +  coords      %Coords;       #IMPLIED
  31.698 +  target      %FrameTarget;  #IMPLIED
  31.699 +  >
  31.700 +
  31.701 +<!--===================== Inline Elements ================================-->
  31.702 +
  31.703 +<!ELEMENT span %Inline;> <!-- generic language/style container -->
  31.704 +<!ATTLIST span
  31.705 +  %attrs;
  31.706 +  >
  31.707 +
  31.708 +<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
  31.709 +<!ATTLIST bdo
  31.710 +  %coreattrs;
  31.711 +  %events;
  31.712 +  lang        %LanguageCode; #IMPLIED
  31.713 +  xml:lang    %LanguageCode; #IMPLIED
  31.714 +  dir         (ltr|rtl)      #REQUIRED
  31.715 +  >
  31.716 +
  31.717 +<!ELEMENT br EMPTY>   <!-- forced line break -->
  31.718 +<!ATTLIST br
  31.719 +  %coreattrs;
  31.720 +  clear       (left|all|right|none) "none"
  31.721 +  >
  31.722 +
  31.723 +<!ELEMENT em %Inline;>   <!-- emphasis -->
  31.724 +<!ATTLIST em %attrs;>
  31.725 +
  31.726 +<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
  31.727 +<!ATTLIST strong %attrs;>
  31.728 +
  31.729 +<!ELEMENT dfn %Inline;>   <!-- definitional -->
  31.730 +<!ATTLIST dfn %attrs;>
  31.731 +
  31.732 +<!ELEMENT code %Inline;>   <!-- program code -->
  31.733 +<!ATTLIST code %attrs;>
  31.734 +
  31.735 +<!ELEMENT samp %Inline;>   <!-- sample -->
  31.736 +<!ATTLIST samp %attrs;>
  31.737 +
  31.738 +<!ELEMENT kbd %Inline;>  <!-- something user would type -->
  31.739 +<!ATTLIST kbd %attrs;>
  31.740 +
  31.741 +<!ELEMENT var %Inline;>   <!-- variable -->
  31.742 +<!ATTLIST var %attrs;>
  31.743 +
  31.744 +<!ELEMENT cite %Inline;>   <!-- citation -->
  31.745 +<!ATTLIST cite %attrs;>
  31.746 +
  31.747 +<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
  31.748 +<!ATTLIST abbr %attrs;>
  31.749 +
  31.750 +<!ELEMENT acronym %Inline;>   <!-- acronym -->
  31.751 +<!ATTLIST acronym %attrs;>
  31.752 +
  31.753 +<!ELEMENT q %Inline;>   <!-- inlined quote -->
  31.754 +<!ATTLIST q
  31.755 +  %attrs;
  31.756 +  cite        %URI;          #IMPLIED
  31.757 +  >
  31.758 +
  31.759 +<!ELEMENT sub %Inline;> <!-- subscript -->
  31.760 +<!ATTLIST sub %attrs;>
  31.761 +
  31.762 +<!ELEMENT sup %Inline;> <!-- superscript -->
  31.763 +<!ATTLIST sup %attrs;>
  31.764 +
  31.765 +<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
  31.766 +<!ATTLIST tt %attrs;>
  31.767 +
  31.768 +<!ELEMENT i %Inline;>   <!-- italic font -->
  31.769 +<!ATTLIST i %attrs;>
  31.770 +
  31.771 +<!ELEMENT b %Inline;>   <!-- bold font -->
  31.772 +<!ATTLIST b %attrs;>
  31.773 +
  31.774 +<!ELEMENT big %Inline;>   <!-- bigger font -->
  31.775 +<!ATTLIST big %attrs;>
  31.776 +
  31.777 +<!ELEMENT small %Inline;>   <!-- smaller font -->
  31.778 +<!ATTLIST small %attrs;>
  31.779 +
  31.780 +<!ELEMENT u %Inline;>   <!-- underline -->
  31.781 +<!ATTLIST u %attrs;>
  31.782 +
  31.783 +<!ELEMENT s %Inline;>   <!-- strike-through -->
  31.784 +<!ATTLIST s %attrs;>
  31.785 +
  31.786 +<!ELEMENT strike %Inline;>   <!-- strike-through -->
  31.787 +<!ATTLIST strike %attrs;>
  31.788 +
  31.789 +<!ELEMENT basefont EMPTY>  <!-- base font size -->
  31.790 +<!ATTLIST basefont
  31.791 +  id          ID             #IMPLIED
  31.792 +  size        CDATA          #REQUIRED
  31.793 +  color       %Color;        #IMPLIED
  31.794 +  face        CDATA          #IMPLIED
  31.795 +  >
  31.796 +
  31.797 +<!ELEMENT font %Inline;> <!-- local change to font -->
  31.798 +<!ATTLIST font
  31.799 +  %coreattrs;
  31.800 +  %i18n;
  31.801 +  size        CDATA          #IMPLIED
  31.802 +  color       %Color;        #IMPLIED
  31.803 +  face        CDATA          #IMPLIED
  31.804 +  >
  31.805 +
  31.806 +<!--==================== Object ======================================-->
  31.807 +<!--
  31.808 +  object is used to embed objects as part of HTML pages.
  31.809 +  param elements should precede other content. Parameters
  31.810 +  can also be expressed as attribute/value pairs on the
  31.811 +  object element itself when brevity is desired.
  31.812 +-->
  31.813 +
  31.814 +<!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>
  31.815 +<!ATTLIST object
  31.816 +  %attrs;
  31.817 +  declare     (declare)      #IMPLIED
  31.818 +  classid     %URI;          #IMPLIED
  31.819 +  codebase    %URI;          #IMPLIED
  31.820 +  data        %URI;          #IMPLIED
  31.821 +  type        %ContentType;  #IMPLIED
  31.822 +  codetype    %ContentType;  #IMPLIED
  31.823 +  archive     %UriList;      #IMPLIED
  31.824 +  standby     %Text;         #IMPLIED
  31.825 +  height      %Length;       #IMPLIED
  31.826 +  width       %Length;       #IMPLIED
  31.827 +  usemap      %URI;          #IMPLIED
  31.828 +  name        NMTOKEN        #IMPLIED
  31.829 +  tabindex    %Number;       #IMPLIED
  31.830 +  align       %ImgAlign;     #IMPLIED
  31.831 +  border      %Pixels;       #IMPLIED
  31.832 +  hspace      %Pixels;       #IMPLIED
  31.833 +  vspace      %Pixels;       #IMPLIED
  31.834 +  >
  31.835 +
  31.836 +<!--
  31.837 +  param is used to supply a named property value.
  31.838 +  In XML it would seem natural to follow RDF and support an
  31.839 +  abbreviated syntax where the param elements are replaced
  31.840 +  by attribute value pairs on the object start tag.
  31.841 +-->
  31.842 +<!ELEMENT param EMPTY>
  31.843 +<!ATTLIST param
  31.844 +  id          ID             #IMPLIED
  31.845 +  name        CDATA          #REQUIRED
  31.846 +  value       CDATA          #IMPLIED
  31.847 +  valuetype   (data|ref|object) "data"
  31.848 +  type        %ContentType;  #IMPLIED
  31.849 +  >
  31.850 +
  31.851 +<!--=================== Java applet ==================================-->
  31.852 +<!--
  31.853 +  One of code or object attributes must be present.
  31.854 +  Place param elements before other content.
  31.855 +-->
  31.856 +<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
  31.857 +<!ATTLIST applet
  31.858 +  %coreattrs;
  31.859 +  codebase    %URI;          #IMPLIED
  31.860 +  archive     CDATA          #IMPLIED
  31.861 +  code        CDATA          #IMPLIED
  31.862 +  object      CDATA          #IMPLIED
  31.863 +  alt         %Text;         #IMPLIED
  31.864 +  name        NMTOKEN        #IMPLIED
  31.865 +  width       %Length;       #REQUIRED
  31.866 +  height      %Length;       #REQUIRED
  31.867 +  align       %ImgAlign;     #IMPLIED
  31.868 +  hspace      %Pixels;       #IMPLIED
  31.869 +  vspace      %Pixels;       #IMPLIED
  31.870 +  >
  31.871 +
  31.872 +<!--=================== Images ===========================================-->
  31.873 +
  31.874 +<!--
  31.875 +   To avoid accessibility problems for people who aren't
  31.876 +   able to see the image, you should provide a text
  31.877 +   description using the alt and longdesc attributes.
  31.878 +   In addition, avoid the use of server-side image maps.
  31.879 +-->
  31.880 +
  31.881 +<!ELEMENT img EMPTY>
  31.882 +<!ATTLIST img
  31.883 +  %attrs;
  31.884 +  src         %URI;          #REQUIRED
  31.885 +  alt         %Text;         #REQUIRED
  31.886 +  name        NMTOKEN        #IMPLIED
  31.887 +  longdesc    %URI;          #IMPLIED
  31.888 +  height      %Length;       #IMPLIED
  31.889 +  width       %Length;       #IMPLIED
  31.890 +  usemap      %URI;          #IMPLIED
  31.891 +  ismap       (ismap)        #IMPLIED
  31.892 +  align       %ImgAlign;     #IMPLIED
  31.893 +  border      %Pixels;       #IMPLIED
  31.894 +  hspace      %Pixels;       #IMPLIED
  31.895 +  vspace      %Pixels;       #IMPLIED
  31.896 +  >
  31.897 +
  31.898 +<!-- usemap points to a map element which may be in this document
  31.899 +  or an external document, although the latter is not widely supported -->
  31.900 +
  31.901 +<!--================== Client-side image maps ============================-->
  31.902 +
  31.903 +<!-- These can be placed in the same document or grouped in a
  31.904 +     separate document although this isn't yet widely supported -->
  31.905 +
  31.906 +<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
  31.907 +<!ATTLIST map
  31.908 +  %i18n;
  31.909 +  %events;
  31.910 +  id          ID             #REQUIRED
  31.911 +  class       CDATA          #IMPLIED
  31.912 +  style       %StyleSheet;   #IMPLIED
  31.913 +  title       %Text;         #IMPLIED
  31.914 +  name        NMTOKEN        #IMPLIED
  31.915 +  >
  31.916 +
  31.917 +<!ELEMENT area EMPTY>
  31.918 +<!ATTLIST area
  31.919 +  %attrs;
  31.920 +  %focus;
  31.921 +  shape       %Shape;        "rect"
  31.922 +  coords      %Coords;       #IMPLIED
  31.923 +  href        %URI;          #IMPLIED
  31.924 +  nohref      (nohref)       #IMPLIED
  31.925 +  alt         %Text;         #REQUIRED
  31.926 +  target      %FrameTarget;  #IMPLIED
  31.927 +  >
  31.928 +
  31.929 +<!--================ Forms ===============================================-->
  31.930 +
  31.931 +<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
  31.932 +
  31.933 +<!ATTLIST form
  31.934 +  %attrs;
  31.935 +  action      %URI;          #REQUIRED
  31.936 +  method      (get|post)     "get"
  31.937 +  name        NMTOKEN        #IMPLIED
  31.938 +  enctype     %ContentType;  "application/x-www-form-urlencoded"
  31.939 +  onsubmit    %Script;       #IMPLIED
  31.940 +  onreset     %Script;       #IMPLIED
  31.941 +  accept      %ContentTypes; #IMPLIED
  31.942 +  accept-charset %Charsets;  #IMPLIED
  31.943 +  target      %FrameTarget;  #IMPLIED
  31.944 +  >
  31.945 +
  31.946 +<!--
  31.947 +  Each label must not contain more than ONE field
  31.948 +  Label elements shouldn't be nested.
  31.949 +-->
  31.950 +<!ELEMENT label %Inline;>
  31.951 +<!ATTLIST label
  31.952 +  %attrs;
  31.953 +  for         IDREF          #IMPLIED
  31.954 +  accesskey   %Character;    #IMPLIED
  31.955 +  onfocus     %Script;       #IMPLIED
  31.956 +  onblur      %Script;       #IMPLIED
  31.957 +  >
  31.958 +
  31.959 +<!ENTITY % InputType
  31.960 +  "(text | password | checkbox |
  31.961 +    radio | submit | reset |
  31.962 +    file | hidden | image | button)"
  31.963 +   >
  31.964 +
  31.965 +<!-- the name attribute is required for all but submit & reset -->
  31.966 +
  31.967 +<!ELEMENT input EMPTY>     <!-- form control -->
  31.968 +<!ATTLIST input
  31.969 +  %attrs;
  31.970 +  %focus;
  31.971 +  type        %InputType;    "text"
  31.972 +  name        CDATA          #IMPLIED
  31.973 +  value       CDATA          #IMPLIED
  31.974 +  checked     (checked)      #IMPLIED
  31.975 +  disabled    (disabled)     #IMPLIED
  31.976 +  readonly    (readonly)     #IMPLIED
  31.977 +  size        CDATA          #IMPLIED
  31.978 +  maxlength   %Number;       #IMPLIED
  31.979 +  src         %URI;          #IMPLIED
  31.980 +  alt         CDATA          #IMPLIED
  31.981 +  usemap      %URI;          #IMPLIED
  31.982 +  onselect    %Script;       #IMPLIED
  31.983 +  onchange    %Script;       #IMPLIED
  31.984 +  accept      %ContentTypes; #IMPLIED
  31.985 +  align       %ImgAlign;     #IMPLIED
  31.986 +  >
  31.987 +
  31.988 +<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
  31.989 +<!ATTLIST select
  31.990 +  %attrs;
  31.991 +  name        CDATA          #IMPLIED
  31.992 +  size        %Number;       #IMPLIED
  31.993 +  multiple    (multiple)     #IMPLIED
  31.994 +  disabled    (disabled)     #IMPLIED
  31.995 +  tabindex    %Number;       #IMPLIED
  31.996 +  onfocus     %Script;       #IMPLIED
  31.997 +  onblur      %Script;       #IMPLIED
  31.998 +  onchange    %Script;       #IMPLIED
  31.999 +  >
 31.1000 +
 31.1001 +<!ELEMENT optgroup (option)+>   <!-- option group -->
 31.1002 +<!ATTLIST optgroup
 31.1003 +  %attrs;
 31.1004 +  disabled    (disabled)     #IMPLIED
 31.1005 +  label       %Text;         #REQUIRED
 31.1006 +  >
 31.1007 +
 31.1008 +<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
 31.1009 +<!ATTLIST option
 31.1010 +  %attrs;
 31.1011 +  selected    (selected)     #IMPLIED
 31.1012 +  disabled    (disabled)     #IMPLIED
 31.1013 +  label       %Text;         #IMPLIED
 31.1014 +  value       CDATA          #IMPLIED
 31.1015 +  >
 31.1016 +
 31.1017 +<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
 31.1018 +<!ATTLIST textarea
 31.1019 +  %attrs;
 31.1020 +  %focus;
 31.1021 +  name        CDATA          #IMPLIED
 31.1022 +  rows        %Number;       #REQUIRED
 31.1023 +  cols        %Number;       #REQUIRED
 31.1024 +  disabled    (disabled)     #IMPLIED
 31.1025 +  readonly    (readonly)     #IMPLIED
 31.1026 +  onselect    %Script;       #IMPLIED
 31.1027 +  onchange    %Script;       #IMPLIED
 31.1028 +  >
 31.1029 +
 31.1030 +<!--
 31.1031 +  The fieldset element is used to group form fields.
 31.1032 +  Only one legend element should occur in the content
 31.1033 +  and if present should only be preceded by whitespace.
 31.1034 +-->
 31.1035 +<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
 31.1036 +<!ATTLIST fieldset
 31.1037 +  %attrs;
 31.1038 +  >
 31.1039 +
 31.1040 +<!ENTITY % LAlign "(top|bottom|left|right)">
 31.1041 +
 31.1042 +<!ELEMENT legend %Inline;>     <!-- fieldset label -->
 31.1043 +<!ATTLIST legend
 31.1044 +  %attrs;
 31.1045 +  accesskey   %Character;    #IMPLIED
 31.1046 +  align       %LAlign;       #IMPLIED
 31.1047 +  >
 31.1048 +
 31.1049 +<!--
 31.1050 + Content is %Flow; excluding a, form, form controls, iframe
 31.1051 +--> 
 31.1052 +<!ELEMENT button %button.content;>  <!-- push button -->
 31.1053 +<!ATTLIST button
 31.1054 +  %attrs;
 31.1055 +  %focus;
 31.1056 +  name        CDATA          #IMPLIED
 31.1057 +  value       CDATA          #IMPLIED
 31.1058 +  type        (button|submit|reset) "submit"
 31.1059 +  disabled    (disabled)     #IMPLIED
 31.1060 +  >
 31.1061 +
 31.1062 +<!-- single-line text input control (DEPRECATED) -->
 31.1063 +<!ELEMENT isindex EMPTY>
 31.1064 +<!ATTLIST isindex
 31.1065 +  %coreattrs;
 31.1066 +  %i18n;
 31.1067 +  prompt      %Text;         #IMPLIED
 31.1068 +  >
 31.1069 +
 31.1070 +<!--======================= Tables =======================================-->
 31.1071 +
 31.1072 +<!-- Derived from IETF HTML table standard, see [RFC1942] -->
 31.1073 +
 31.1074 +<!--
 31.1075 + The border attribute sets the thickness of the frame around the
 31.1076 + table. The default units are screen pixels.
 31.1077 +
 31.1078 + The frame attribute specifies which parts of the frame around
 31.1079 + the table should be rendered. The values are not the same as
 31.1080 + CALS to avoid a name clash with the valign attribute.
 31.1081 +-->
 31.1082 +<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
 31.1083 +
 31.1084 +<!--
 31.1085 + The rules attribute defines which rules to draw between cells:
 31.1086 +
 31.1087 + If rules is absent then assume:
 31.1088 +     "none" if border is absent or border="0" otherwise "all"
 31.1089 +-->
 31.1090 +
 31.1091 +<!ENTITY % TRules "(none | groups | rows | cols | all)">
 31.1092 +  
 31.1093 +<!-- horizontal placement of table relative to document -->
 31.1094 +<!ENTITY % TAlign "(left|center|right)">
 31.1095 +
 31.1096 +<!-- horizontal alignment attributes for cell contents
 31.1097 +
 31.1098 +  char        alignment char, e.g. char=":"
 31.1099 +  charoff     offset for alignment char
 31.1100 +-->
 31.1101 +<!ENTITY % cellhalign
 31.1102 +  "align      (left|center|right|justify|char) #IMPLIED
 31.1103 +   char       %Character;    #IMPLIED
 31.1104 +   charoff    %Length;       #IMPLIED"
 31.1105 +  >
 31.1106 +
 31.1107 +<!-- vertical alignment attributes for cell contents -->
 31.1108 +<!ENTITY % cellvalign
 31.1109 +  "valign     (top|middle|bottom|baseline) #IMPLIED"
 31.1110 +  >
 31.1111 +
 31.1112 +<!ELEMENT table
 31.1113 +     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
 31.1114 +<!ELEMENT caption  %Inline;>
 31.1115 +<!ELEMENT thead    (tr)+>
 31.1116 +<!ELEMENT tfoot    (tr)+>
 31.1117 +<!ELEMENT tbody    (tr)+>
 31.1118 +<!ELEMENT colgroup (col)*>
 31.1119 +<!ELEMENT col      EMPTY>
 31.1120 +<!ELEMENT tr       (th|td)+>
 31.1121 +<!ELEMENT th       %Flow;>
 31.1122 +<!ELEMENT td       %Flow;>
 31.1123 +
 31.1124 +<!ATTLIST table
 31.1125 +  %attrs;
 31.1126 +  summary     %Text;         #IMPLIED
 31.1127 +  width       %Length;       #IMPLIED
 31.1128 +  border      %Pixels;       #IMPLIED
 31.1129 +  frame       %TFrame;       #IMPLIED
 31.1130 +  rules       %TRules;       #IMPLIED
 31.1131 +  cellspacing %Length;       #IMPLIED
 31.1132 +  cellpadding %Length;       #IMPLIED
 31.1133 +  align       %TAlign;       #IMPLIED
 31.1134 +  bgcolor     %Color;        #IMPLIED
 31.1135 +  >
 31.1136 +
 31.1137 +<!ENTITY % CAlign "(top|bottom|left|right)">
 31.1138 +
 31.1139 +<!ATTLIST caption
 31.1140 +  %attrs;
 31.1141 +  align       %CAlign;       #IMPLIED
 31.1142 +  >
 31.1143 +
 31.1144 +<!--
 31.1145 +colgroup groups a set of col elements. It allows you to group
 31.1146 +several semantically related columns together.
 31.1147 +-->
 31.1148 +<!ATTLIST colgroup
 31.1149 +  %attrs;
 31.1150 +  span        %Number;       "1"
 31.1151 +  width       %MultiLength;  #IMPLIED
 31.1152 +  %cellhalign;
 31.1153 +  %cellvalign;
 31.1154 +  >
 31.1155 +
 31.1156 +<!--
 31.1157 + col elements define the alignment properties for cells in
 31.1158 + one or more columns.
 31.1159 +
 31.1160 + The width attribute specifies the width of the columns, e.g.
 31.1161 +
 31.1162 +     width=64        width in screen pixels
 31.1163 +     width=0.5*      relative width of 0.5
 31.1164 +
 31.1165 + The span attribute causes the attributes of one
 31.1166 + col element to apply to more than one column.
 31.1167 +-->
 31.1168 +<!ATTLIST col
 31.1169 +  %attrs;
 31.1170 +  span        %Number;       "1"
 31.1171 +  width       %MultiLength;  #IMPLIED
 31.1172 +  %cellhalign;
 31.1173 +  %cellvalign;
 31.1174 +  >
 31.1175 +
 31.1176 +<!--
 31.1177 +    Use thead to duplicate headers when breaking table
 31.1178 +    across page boundaries, or for static headers when
 31.1179 +    tbody sections are rendered in scrolling panel.
 31.1180 +
 31.1181 +    Use tfoot to duplicate footers when breaking table
 31.1182 +    across page boundaries, or for static footers when
 31.1183 +    tbody sections are rendered in scrolling panel.
 31.1184 +
 31.1185 +    Use multiple tbody sections when rules are needed
 31.1186 +    between groups of table rows.
 31.1187 +-->
 31.1188 +<!ATTLIST thead
 31.1189 +  %attrs;
 31.1190 +  %cellhalign;
 31.1191 +  %cellvalign;
 31.1192 +  >
 31.1193 +
 31.1194 +<!ATTLIST tfoot
 31.1195 +  %attrs;
 31.1196 +  %cellhalign;
 31.1197 +  %cellvalign;
 31.1198 +  >
 31.1199 +
 31.1200 +<!ATTLIST tbody
 31.1201 +  %attrs;
 31.1202 +  %cellhalign;
 31.1203 +  %cellvalign;
 31.1204 +  >
 31.1205 +
 31.1206 +<!ATTLIST tr
 31.1207 +  %attrs;
 31.1208 +  %cellhalign;
 31.1209 +  %cellvalign;
 31.1210 +  bgcolor     %Color;        #IMPLIED
 31.1211 +  >
 31.1212 +
 31.1213 +<!-- Scope is simpler than headers attribute for common tables -->
 31.1214 +<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
 31.1215 +
 31.1216 +<!-- th is for headers, td for data and for cells acting as both -->
 31.1217 +
 31.1218 +<!ATTLIST th
 31.1219 +  %attrs;
 31.1220 +  abbr        %Text;         #IMPLIED
 31.1221 +  axis        CDATA          #IMPLIED
 31.1222 +  headers     IDREFS         #IMPLIED
 31.1223 +  scope       %Scope;        #IMPLIED
 31.1224 +  rowspan     %Number;       "1"
 31.1225 +  colspan     %Number;       "1"
 31.1226 +  %cellhalign;
 31.1227 +  %cellvalign;
 31.1228 +  nowrap      (nowrap)       #IMPLIED
 31.1229 +  bgcolor     %Color;        #IMPLIED
 31.1230 +  width       %Pixels;       #IMPLIED
 31.1231 +  height      %Pixels;       #IMPLIED
 31.1232 +  >
 31.1233 +
 31.1234 +<!ATTLIST td
 31.1235 +  %attrs;
 31.1236 +  abbr        %Text;         #IMPLIED
 31.1237 +  axis        CDATA          #IMPLIED
 31.1238 +  headers     IDREFS         #IMPLIED
 31.1239 +  scope       %Scope;        #IMPLIED
 31.1240 +  rowspan     %Number;       "1"
 31.1241 +  colspan     %Number;       "1"
 31.1242 +  %cellhalign;
 31.1243 +  %cellvalign;
 31.1244 +  nowrap      (nowrap)       #IMPLIED
 31.1245 +  bgcolor     %Color;        #IMPLIED
 31.1246 +  width       %Pixels;       #IMPLIED
 31.1247 +  height      %Pixels;       #IMPLIED
 31.1248 +  >
 31.1249 +
    32.1 Binary file images/buttons/new.gif has changed
    33.1 Binary file images/buttons/new_down.gif has changed
    34.1 Binary file images/buttons/new_faded.gif has changed
    35.1 Binary file images/buttons/new_up.gif has changed
    36.1 Binary file images/buttons/next.gif has changed
    37.1 Binary file images/buttons/next_faded.gif has changed
    38.1 Binary file images/buttons/next_up.gif has changed
    39.1 Binary file images/buttons/open.gif has changed
    40.1 Binary file images/buttons/open_down.gif has changed
    41.1 Binary file images/buttons/open_faded.gif has changed
    42.1 Binary file images/buttons/open_up.gif has changed
    43.1 Binary file images/buttons/settings.gif has changed
    44.1 Binary file images/buttons/settings_down.gif has changed
    45.1 Binary file images/buttons/settings_faded.gif has changed
    46.1 Binary file images/buttons/settings_up.gif has changed
    47.1 Binary file images/docs/flash/text_editor/spec/1.gif has changed
    48.1 Binary file images/docs/flash/text_editor/spec/2a-i.gif has changed
    49.1 Binary file images/docs/flash/text_editor/spec/2a-ii.gif has changed
    50.1 Binary file images/docs/flash/text_editor/spec/2a-iii.gif has changed
    51.1 Binary file images/docs/flash/text_editor/spec/2a-iv.gif has changed
    52.1 Binary file images/docs/flash/text_editor/spec/2b-i.gif has changed
    53.1 Binary file images/docs/flash/text_editor/spec/2b-ii.gif has changed
    54.1 Binary file images/favicon.gif-moved has changed
    55.1 Binary file images/favicon.ico has changed
    56.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.2 +++ b/images/favicon.ico-moved	Sat May 01 16:19:36 2010 -0400
    56.3 @@ -0,0 +1,1 @@
    56.4 +favicon.gif
    56.5 \ No newline at end of file
    57.1 Binary file images/icons/browse/go.png has changed
    58.1 Binary file images/icons/browse/home.png has changed
    59.1 Binary file images/icons/browse/reload.png has changed
    60.1 Binary file images/icons/browse/stop.png has changed
    61.1 Binary file images/icons/new/alarm.png has changed
    62.1 Binary file images/icons/new/application.png has changed
    63.1 Binary file images/icons/new/bookmark.png has changed
    64.1 Binary file images/icons/new/chat.png has changed
    65.1 Binary file images/icons/new/copy.png has changed
    66.1 Binary file images/icons/new/document.png has changed
    67.1 Binary file images/icons/new/download.png has changed
    68.1 Binary file images/icons/new/e-mail.png has changed
    69.1 Binary file images/icons/new/folder.png has changed
    70.1 Binary file images/icons/new/image.png has changed
    71.1 Binary file images/icons/new/music.png has changed
    72.1 Binary file images/icons/new/phone_call.png has changed
    73.1 Binary file images/icons/new/search.png has changed
    74.1 Binary file images/icons/new/share.png has changed
    75.1 Binary file images/icons/new/text_file.png has changed
    76.1 Binary file images/icons/new/upload.png has changed
    77.1 Binary file images/icons/new/video.png has changed
    78.1 Binary file images/icons/new/web_page.png has changed
    79.1 Binary file images/icons/next/bookmark.png has changed
    80.1 Binary file images/icons/next/close.png has changed
    81.1 Binary file images/icons/next/logout.png has changed
    82.1 Binary file images/icons/next/save.png has changed
    83.1 Binary file images/icons/next/save_as.png has changed
    84.1 Binary file images/icons/open/alarm.png has changed
    85.1 Binary file images/icons/open/bookmark.png has changed
    86.1 Binary file images/icons/open/document.png has changed
    87.1 Binary file images/icons/open/e-mail.png has changed
    88.1 Binary file images/icons/open/image.png has changed
    89.1 Binary file images/icons/open/incoming.png has changed
    90.1 Binary file images/icons/open/music.png has changed
    91.1 Binary file images/icons/open/shared.png has changed
    92.1 Binary file images/icons/open/text_file.png has changed
    93.1 Binary file images/icons/open/video.png has changed
    94.1 Binary file images/icons/settings/audio.png has changed
    95.1 Binary file images/icons/settings/buttons.png has changed
    96.1 Binary file images/icons/settings/chat.png has changed
    97.1 Binary file images/icons/settings/clock.png has changed
    98.1 Binary file images/icons/settings/downloads.png has changed
    99.1 Binary file images/icons/settings/e-mail.png has changed
   100.1 Binary file images/icons/settings/images.png has changed
   101.1 Binary file images/icons/settings/phone.png has changed
   102.1 Binary file images/icons/settings/search.png has changed
   103.1 Binary file images/icons/settings/video.png has changed
   104.1 Binary file images/interos.org_logo.gif has changed
   105.1 Binary file images/interos.org_logo.png has changed
   106.1 Binary file images/login/arrow.gif has changed
   107.1 Binary file images/login/arrow_down.gif has changed
   108.1 Binary file images/login/i.gif has changed
   109.1 Binary file images/login/new.gif has changed
   110.1 Binary file images/login/new_faded.gif has changed
   111.1 Binary file images/login/next.gif has changed
   112.1 Binary file images/login/next_faded.gif has changed
   113.1 Binary file images/login/nteros.gif has changed
   114.1 Binary file images/login/open.gif has changed
   115.1 Binary file images/login/open_faded.gif has changed
   116.1 Binary file images/login/settings.gif has changed
   117.1 Binary file images/login/settings_faded.gif has changed
   118.1 Binary file images/menu/new_bottom.gif has changed
   119.1 Binary file images/menu/new_top.gif has changed
   120.1 Binary file images/menu/next_bottom.gif has changed
   121.1 Binary file images/menu/next_top.gif has changed
   122.1 Binary file images/menu/open_bottom.gif has changed
   123.1 Binary file images/menu/open_top.gif has changed
   124.1 Binary file images/menu/settings_bottom.gif has changed
   125.1 Binary file images/menu/settings_top.gif has changed
   126.1 Binary file images/panel/bottom.gif has changed
   127.1 Binary file images/panel/bottom_left.gif has changed
   128.1 Binary file images/panel/bottom_right.gif has changed
   129.1 Binary file images/panel/left.gif has changed
   130.1 Binary file images/panel/login.gif has changed
   131.1 Binary file images/panel/login/top.gif has changed
   132.1 Binary file images/panel/login/top_left.gif has changed
   133.1 Binary file images/panel/login/top_right.gif has changed
   134.1 Binary file images/panel/main/top.gif has changed
   135.1 Binary file images/panel/main/top_left.gif has changed
   136.1 Binary file images/panel/main/top_right.gif has changed
   137.1 Binary file images/panel/right.gif has changed
   138.1 Binary file images/panel/title/top.gif has changed
   139.1 Binary file images/panel/title/top_left.gif has changed
   140.1 Binary file images/panel/title/top_right.gif has changed
   141.1 Binary file images/panel/welcome/bottom.gif has changed
   142.1 Binary file images/panel/welcome/bottom_left.gif has changed
   143.1 Binary file images/panel/welcome/bottom_right.gif has changed
   144.1 Binary file images/panel/welcome/left.gif has changed
   145.1 Binary file images/panel/welcome/right.gif has changed
   146.1 Binary file images/panel/welcome/top.gif has changed
   147.1 Binary file images/panel/welcome/top_left.gif has changed
   148.1 Binary file images/panel/welcome/top_right.gif has changed
   149.1 Binary file images/toolbar.gif has changed
   150.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   150.2 +++ b/js/default_interos.com.js	Sat May 01 16:19:36 2010 -0400
   150.3 @@ -0,0 +1,351 @@
   150.4 +/******************************************************/
   150.5 +/*     interos Standard Document Header - Script      */
   150.6 +/******************************************************/
   150.7 +/*         URIs:  http://interos.com/js/default.js    */
   150.8 +/*                http://*.interos.com/js/default.js  */
   150.9 +/*  Description:  Default JavaScript for interos      */
  150.10 +/*       Author:  Brent Angeline                      */
  150.11 +/*       Script:  JavaScript                          */
  150.12 +/******************************************************/
  150.13 +
  150.14 +var panel, maxWidth, maxHeight, totalWidth, totalHeight;
  150.15 +var mode = 'static';
  150.16 +
  150.17 +function capable() {
  150.18 +  return (document.createElementNS || document.createElement) && 
  150.19 +         document.getElementById && width('navigation') && initialize();
  150.20 +}
  150.21 +
  150.22 +function initialize() {
  150.23 +  if (id('mainPanel')) {
  150.24 +    panel = 'mainPanel';
  150.25 +    return 1;
  150.26 +  } else if (id('titlePanel')) {
  150.27 +    panel = 'titlePanel';
  150.28 +    return 1;
  150.29 +  } else {
  150.30 +    return 0;
  150.31 +  }
  150.32 +}
  150.33 +
  150.34 +function div() {
  150.35 +  if (document.createElementNS) {
  150.36 +    return document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
  150.37 +  } else if (document.createElement) {
  150.38 +    return document.createElement('div');
  150.39 +  }
  150.40 +}
  150.41 +
  150.42 +function id(e) {
  150.43 +  return document.getElementById(e);
  150.44 +}
  150.45 +
  150.46 +function style(e) {
  150.47 +  return id(e).style;
  150.48 +}
  150.49 +
  150.50 +function property(e, p) {
  150.51 +  return document.defaultView.getComputedStyle(id(e), null).getPropertyValue(p);
  150.52 +}
  150.53 +
  150.54 +function width(e) {
  150.55 +  if (id(e).offsetWidth) {
  150.56 +    return id(e).offsetWidth;
  150.57 +  } else if (window.getComputedStyle) {
  150.58 +    return property(e, 'width').substring(0, property(e, 'width').indexOf('p'));
  150.59 +  } else {
  150.60 +    return 0;
  150.61 +  }
  150.62 +}
  150.63 +
  150.64 +function height(e) {
  150.65 +  if (id(e).offsetHeight) {
  150.66 +    return id(e).offsetHeight;
  150.67 +  } else if (window.getComputedStyle) {
  150.68 +    return property(e, 'height').substring(0, 
  150.69 +                                           property(e, 'height').indexOf('p'));
  150.70 +  } else {
  150.71 +    return 0;
  150.72 +  }
  150.73 +}
  150.74 +
  150.75 +function x(e) {
  150.76 +  var x, done;
  150.77 +  x = done = 0;
  150.78 +  e = id(e);
  150.79 +  if (e.offsetParent) {
  150.80 +    while (e.offsetParent) {
  150.81 +      x += e.offsetLeft;
  150.82 +      e = e.offsetParent;
  150.83 +    }
  150.84 +  } else if (e.x) {
  150.85 +    x = e.x;
  150.86 +  }
  150.87 +  return x;
  150.88 +}
  150.89 +
  150.90 +function y(e) {
  150.91 +  var y, done;
  150.92 +  y = done = 0;
  150.93 +  e = id(e);
  150.94 +  if (e.offsetParent) {
  150.95 +    while (e.offsetParent) {
  150.96 +      y += e.offsetTop;
  150.97 +      e = e.offsetParent;
  150.98 +    }
  150.99 +  } else if (e.y) {
 150.100 +    y = e.y;
 150.101 +  }
 150.102 +  return y;
 150.103 +}
 150.104 +
 150.105 +function content(e, string) {
 150.106 +  if (document.all) {
 150.107 +    document.all[e].innerHTML = string;
 150.108 +  } else if (id(e).innerHTML) {
 150.109 +    id(e).innerHTML = string;
 150.110 +  }
 150.111 +}
 150.112 +
 150.113 +function clientWidth() {
 150.114 +  var width = 0;
 150.115 +  if (self.innerWidth) {
 150.116 +    width = self.innerWidth;
 150.117 +  } else if (document.documentElement && document.documentElement.clientWidth) {
 150.118 +    width = document.documentElement.clientWidth;
 150.119 +  } else if (document.body) {
 150.120 +    width = document.body.clientWidth;
 150.121 +  }
 150.122 +  return width;
 150.123 +}
 150.124 +
 150.125 +function clientHeight() {
 150.126 +  var height = 0;
 150.127 +  if (self.innerHeight) {
 150.128 +    height = self.innerHeight;
 150.129 +  } else if (document.documentElement && 
 150.130 +             document.documentElement.clientHeight) {
 150.131 +    height = document.documentElement.clientHeight;
 150.132 +  } else if (document.body) {
 150.133 +    height = document.body.clientHeight;
 150.134 +  }
 150.135 +  return height;
 150.136 +}
 150.137 +
 150.138 +function contentWidth() {
 150.139 +  return (12 + width(panel) + 18);
 150.140 +}
 150.141 +
 150.142 +function contentHeight() {
 150.143 +  return (height('navigation') + 16 + 12 + height(panel) + 18 + 16 + 
 150.144 +          height('copyrightDates'));
 150.145 +}
 150.146 +
 150.147 +function dynamicMode() {
 150.148 +  var bottomLeft = div();
 150.149 +  var left = div();
 150.150 +  var topLeft = div();
 150.151 +  var top = div();
 150.152 +  var topRight = div();
 150.153 +  var right = div();
 150.154 +  var bottomRight= div();
 150.155 +  var bottom = div();
 150.156 +
 150.157 +  style('copyrightDates').width = width('copyrightDates') + 'px';
 150.158 +  style('copyrightDates').left = x('copyrightDates') + 'px';
 150.159 +  style('copyrightDates').top = ((maxHeight - totalHeight) / 2) + 
 150.160 +                                height('navigation') + 16 + 12 + 
 150.161 +                                height(panel) + 18 + 16 + 'px';
 150.162 +  style('copyrightDates').position = 'absolute';
 150.163 +  style('copyrightDates').margin = 0;
 150.164 +
 150.165 +  if ((clientWidth() - contentWidth()) < 9) {
 150.166 +    style(panel).width = width(panel) - 24 + 'px';
 150.167 +  }
 150.168 +  if (panel == 'mainPanel') {
 150.169 +    style('body').marginLeft = '0';
 150.170 +    style('body').marginRight = '0';
 150.171 +  }
 150.172 +  style(panel).border = 0;
 150.173 +  style(panel).left = x(panel) + 'px';
 150.174 +  style(panel).top = ((maxHeight - totalHeight) / 2) + height('navigation') + 
 150.175 +                     16 + 12 + 'px';
 150.176 +  style(panel).position = 'absolute';
 150.177 +
 150.178 +  style('navigation').width = width('navigation') + 'px';
 150.179 +  style('navigation').left = x('navigation') + 'px';
 150.180 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 150.181 +  style('navigation').position = 'absolute';
 150.182 +
 150.183 +  bottomLeft.setAttribute('id', 'bottomLeft');
 150.184 +  id('body').appendChild(bottomLeft);
 150.185 +  style('bottomLeft').left = x(panel) - 12 + 'px';
 150.186 +  style('bottomLeft').top = y(panel) + height(panel) + 'px';
 150.187 +
 150.188 +  left.setAttribute('id', 'left');
 150.189 +  id('body').appendChild(left);
 150.190 +  style('left').height = height(panel) - 84 + 'px';
 150.191 +  style('left').left = x(panel) - 12 + 'px';
 150.192 +  style('left').top = y(panel) + 84 + 'px';
 150.193 +
 150.194 +  topLeft.setAttribute('id', 'topLeft');
 150.195 +  id('body').appendChild(topLeft);
 150.196 +  style('topLeft').left = x(panel) - 12 + 'px';
 150.197 +  style('topLeft').top = y(panel) - 12 + 'px';
 150.198 +
 150.199 +  top.setAttribute('id', 'top');
 150.200 +  id('body').appendChild(top);
 150.201 +  style('top').width = width(panel) + 'px';
 150.202 +  style('top').left = x(panel) + 'px';
 150.203 +  style('top').top = y(panel) - 12 + 'px';
 150.204 +
 150.205 +  topRight.setAttribute('id', 'topRight');
 150.206 +  id('body').appendChild(topRight);
 150.207 +  style('topRight').left = x(panel) + width(panel) + 'px';
 150.208 +  style('topRight').top = y(panel) - 12 + 'px';
 150.209 +
 150.210 +  right.setAttribute('id', 'right');
 150.211 +  id('body').appendChild(right);
 150.212 +  style('right').height = height(panel) - 84 + 'px';
 150.213 +  style('right').left = x(panel) + width(panel) + 'px';
 150.214 +  style('right').top = y(panel) + 84 + 'px';
 150.215 +
 150.216 +  bottomRight.setAttribute('id', 'bottomRight');
 150.217 +  id('body').appendChild(bottomRight);
 150.218 +  style('bottomRight').left = x(panel) + width(panel) + 'px';
 150.219 +  style('bottomRight').top = y(panel) + height(panel) + 'px';
 150.220 +
 150.221 +  bottom.setAttribute('id', 'bottom');
 150.222 +  id('body').appendChild(bottom);
 150.223 +  style('bottom').width = width(panel) + 'px';
 150.224 +  style('bottom').left = x(panel) + 'px';
 150.225 +  style('bottom').top = y(panel) + height(panel) + 'px';
 150.226 +
 150.227 +  style('bottomLeft').background = 'url(/images/panel/bottom_left.gif)';
 150.228 +  style('left').background = 'url(/images/panel/left.gif)';
 150.229 +  style('topLeft').background = 'url(/images/panel/main/top_left.gif)';
 150.230 +  style('top').background = 'url(/images/panel/main/top.gif)';
 150.231 +  style('topRight').background = 'url(/images/panel/main/top_right.gif)';
 150.232 +  style('right').background = 'url(/images/panel/right.gif)';
 150.233 +  style('bottomRight').background = 'url(/images/panel/bottom_right.gif)';
 150.234 +  style('bottom').background = 'url(/images/panel/bottom.gif)';
 150.235 +
 150.236 +  mode = 'dynamic';
 150.237 +}
 150.238 +
 150.239 +function staticMode() {
 150.240 +  style('body').marginLeft = '19px';
 150.241 +  style('body').marginRight = '19px';
 150.242 +
 150.243 +  style('copyrightDates').width = '';
 150.244 +  style('copyrightDates').left = '';
 150.245 +  style('copyrightDates').bottom = '';
 150.246 +  style('copyrightDates').position = '';
 150.247 +  style('copyrightDates').margin = '';
 150.248 +
 150.249 +  style(panel).border = '';
 150.250 +  style(panel).width = '';
 150.251 +  style(panel).left = '';
 150.252 +  style(panel).top = '';
 150.253 +  style(panel).position = '';
 150.254 +
 150.255 +  style('navigation').width = '';
 150.256 +  style('navigation').left = '';
 150.257 +  style('navigation').top = '';
 150.258 +  style('navigation').position = '';
 150.259 +
 150.260 +  /* more code */
 150.261 +
 150.262 +  mode = 'static';
 150.263 +}
 150.264 +
 150.265 +function resize() {
 150.266 +  style('copyrightDates').left = ((maxWidth - width('copyrightDates')) / 2) + 
 150.267 +                                 'px';
 150.268 +
 150.269 +  style(panel).left = ((maxWidth - width(panel)) / 2) + 'px';
 150.270 +  style(panel).top = ((maxHeight - totalHeight) / 2) + 
 150.271 +                     height('navigation') + 16 + 12 + 'px';
 150.272 +
 150.273 +  style('navigation').left = ((maxWidth - width('navigation')) / 2) + 'px';
 150.274 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 150.275 +
 150.276 +  style('bottomLeft').left = x(panel) - 12 + 'px';
 150.277 +  style('bottomLeft').top = y(panel) + height(panel) + 'px';
 150.278 +
 150.279 +  style('left').left = x(panel) - 12 + 'px';
 150.280 +  style('left').top = y(panel) + 53 - 12 + 'px';
 150.281 +
 150.282 +  style('topLeft').left = x(panel) - 12 + 'px';
 150.283 +  style('topLeft').top = y(panel) - 12 + 'px';
 150.284 +
 150.285 +  style('top').left = x(panel) + 'px';
 150.286 +  style('top').top = y(panel) - 12 + 'px';
 150.287 +
 150.288 +  style('topRight').left = x(panel) + width(panel) + 'px';
 150.289 +  style('topRight').top = y(panel) - 12 + 'px';
 150.290 +
 150.291 +  style('right').left = x(panel) + width(panel) + 'px';
 150.292 +  style('right').top = y(panel) + 53 - 12 + 'px';
 150.293 +
 150.294 +  style('bottomRight').left = x(panel) + width(panel) + 'px';
 150.295 +  style('bottomRight').top = y(panel) + height(panel) + 'px';
 150.296 +
 150.297 +  style('bottom').left = x(panel) + 'px';
 150.298 +  style('bottom').top = y(panel) + height(panel) + 'px';
 150.299 +}
 150.300 +
 150.301 +function layout() {
 150.302 +  maxWidth = clientWidth();
 150.303 +  maxHeight = clientHeight();
 150.304 +  totalWidth = contentWidth();
 150.305 +  totalHeight = contentHeight();
 150.306 +  if ((totalWidth < maxWidth) && (totalHeight < maxHeight)) {
 150.307 +    if (mode != 'dynamic') {
 150.308 +      dynamicMode();
 150.309 +    } else {
 150.310 +      resize();
 150.311 +    }
 150.312 +  } else if (mode != 'static') {
 150.313 +    staticMode();
 150.314 +  }
 150.315 +}
 150.316 +
 150.317 +function remember() {
 150.318 +  document.cookie = 'javascript=on; path=/; secure';
 150.319 +}
 150.320 +
 150.321 +window.onresize = function() {
 150.322 +  /*
 150.323 +  if (capable()) {
 150.324 +    layout();
 150.325 +  }
 150.326 +  */
 150.327 +  window.location.replace(unescape(window.location.pathname));
 150.328 +}
 150.329 +
 150.330 +window.onload = function() {
 150.331 +  if (capable()) {
 150.332 +    layout();
 150.333 +    remember();
 150.334 +  }
 150.335 +}
 150.336 +
 150.337 +/***********************************************************************/
 150.338 +/*                  Copyright and Trademark Statement                  */
 150.339 +/***********************************************************************/
 150.340 +/*                                                                     */
 150.341 +/*          All original textual and graphical site content:           */
 150.342 +/*                                                                     */
 150.343 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
 150.344 +/*  reserved.  Reproduction in whole or in part without written        */
 150.345 +/*  permission is prohibited.  interos and the interos logos are       */
 150.346 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 150.347 +/*  product, and service names mentioned herein may be the properties  */
 150.348 +/*  of their respective owners.  Comments in the interos.org forums    */
 150.349 +/*  are the properties of their respective authors.  All software      */
 150.350 +/*  developed in the forums is open source and belongs to everyone.    */
 150.351 +/*                                                                     */
 150.352 +/***********************************************************************/
 150.353 +/*                      e-mail: info@interos.com                       */
 150.354 +/***********************************************************************/
   151.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   151.2 +++ b/js/default_interos.com_ssl.js	Sat May 01 16:19:36 2010 -0400
   151.3 @@ -0,0 +1,351 @@
   151.4 +/*******************************************************/
   151.5 +/*      interos Standard Document Header - Script      */
   151.6 +/*******************************************************/
   151.7 +/*         URIs:  https://interos.com/js/default.js    */
   151.8 +/*                https://*.interos.com/js/default.js  */
   151.9 +/*  Description:  Default JavaScript for interos       */
  151.10 +/*       Author:  Brent Angeline                       */
  151.11 +/*       Script:  JavaScript                           */
  151.12 +/*******************************************************/
  151.13 +
  151.14 +var panel, maxWidth, maxHeight, totalWidth, totalHeight;
  151.15 +var mode = 'static';
  151.16 +
  151.17 +function capable() {
  151.18 +  return (document.createElementNS || document.createElement) && 
  151.19 +         document.getElementById && width('navigation') && initialize();
  151.20 +}
  151.21 +
  151.22 +function initialize() {
  151.23 +  if (id('mainPanel')) {
  151.24 +    panel = 'mainPanel';
  151.25 +    return 1;
  151.26 +  } else if (id('titlePanel')) {
  151.27 +    panel = 'titlePanel';
  151.28 +    return 1;
  151.29 +  } else {
  151.30 +    return 0;
  151.31 +  }
  151.32 +}
  151.33 +
  151.34 +function div() {
  151.35 +  if (document.createElementNS) {
  151.36 +    return document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
  151.37 +  } else if (document.createElement) {
  151.38 +    return document.createElement('div');
  151.39 +  }
  151.40 +}
  151.41 +
  151.42 +function id(e) {
  151.43 +  return document.getElementById(e);
  151.44 +}
  151.45 +
  151.46 +function style(e) {
  151.47 +  return id(e).style;
  151.48 +}
  151.49 +
  151.50 +function property(e, p) {
  151.51 +  return document.defaultView.getComputedStyle(id(e), null).getPropertyValue(p);
  151.52 +}
  151.53 +
  151.54 +function width(e) {
  151.55 +  if (id(e).offsetWidth) {
  151.56 +    return id(e).offsetWidth;
  151.57 +  } else if (window.getComputedStyle) {
  151.58 +    return property(e, 'width').substring(0, property(e, 'width').indexOf('p'));
  151.59 +  } else {
  151.60 +    return 0;
  151.61 +  }
  151.62 +}
  151.63 +
  151.64 +function height(e) {
  151.65 +  if (id(e).offsetHeight) {
  151.66 +    return id(e).offsetHeight;
  151.67 +  } else if (window.getComputedStyle) {
  151.68 +    return property(e, 'height').substring(0, 
  151.69 +                                           property(e, 'height').indexOf('p'));
  151.70 +  } else {
  151.71 +    return 0;
  151.72 +  }
  151.73 +}
  151.74 +
  151.75 +function x(e) {
  151.76 +  var x, done;
  151.77 +  x = done = 0;
  151.78 +  e = id(e);
  151.79 +  if (e.offsetParent) {
  151.80 +    while (e.offsetParent) {
  151.81 +      x += e.offsetLeft;
  151.82 +      e = e.offsetParent;
  151.83 +    }
  151.84 +  } else if (e.x) {
  151.85 +    x = e.x;
  151.86 +  }
  151.87 +  return x;
  151.88 +}
  151.89 +
  151.90 +function y(e) {
  151.91 +  var y, done;
  151.92 +  y = done = 0;
  151.93 +  e = id(e);
  151.94 +  if (e.offsetParent) {
  151.95 +    while (e.offsetParent) {
  151.96 +      y += e.offsetTop;
  151.97 +      e = e.offsetParent;
  151.98 +    }
  151.99 +  } else if (e.y) {
 151.100 +    y = e.y;
 151.101 +  }
 151.102 +  return y;
 151.103 +}
 151.104 +
 151.105 +function content(e, string) {
 151.106 +  if (document.all) {
 151.107 +    document.all[e].innerHTML = string;
 151.108 +  } else if (id(e).innerHTML) {
 151.109 +    id(e).innerHTML = string;
 151.110 +  }
 151.111 +}
 151.112 +
 151.113 +function clientWidth() {
 151.114 +  var width = 0;
 151.115 +  if (self.innerWidth) {
 151.116 +    width = self.innerWidth;
 151.117 +  } else if (document.documentElement && document.documentElement.clientWidth) {
 151.118 +    width = document.documentElement.clientWidth;
 151.119 +  } else if (document.body) {
 151.120 +    width = document.body.clientWidth;
 151.121 +  }
 151.122 +  return width;
 151.123 +}
 151.124 +
 151.125 +function clientHeight() {
 151.126 +  var height = 0;
 151.127 +  if (self.innerHeight) {
 151.128 +    height = self.innerHeight;
 151.129 +  } else if (document.documentElement && 
 151.130 +             document.documentElement.clientHeight) {
 151.131 +    height = document.documentElement.clientHeight;
 151.132 +  } else if (document.body) {
 151.133 +    height = document.body.clientHeight;
 151.134 +  }
 151.135 +  return height;
 151.136 +}
 151.137 +
 151.138 +function contentWidth() {
 151.139 +  return (12 + width(panel) + 18);
 151.140 +}
 151.141 +
 151.142 +function contentHeight() {
 151.143 +  return (height('navigation') + 16 + 12 + height(panel) + 18 + 16 + 
 151.144 +          height('copyrightDates'));
 151.145 +}
 151.146 +
 151.147 +function dynamicMode() {
 151.148 +  var bottomLeft = div();
 151.149 +  var left = div();
 151.150 +  var topLeft = div();
 151.151 +  var top = div();
 151.152 +  var topRight = div();
 151.153 +  var right = div();
 151.154 +  var bottomRight= div();
 151.155 +  var bottom = div();
 151.156 +
 151.157 +  style('copyrightDates').width = width('copyrightDates') + 'px';
 151.158 +  style('copyrightDates').left = x('copyrightDates') + 'px';
 151.159 +  style('copyrightDates').top = ((maxHeight - totalHeight) / 2) + 
 151.160 +                                height('navigation') + 16 + 12 + 
 151.161 +                                height(panel) + 18 + 16 + 'px';
 151.162 +  style('copyrightDates').position = 'absolute';
 151.163 +  style('copyrightDates').margin = 0;
 151.164 +
 151.165 +  if ((clientWidth() - contentWidth()) < 9) {
 151.166 +    style(panel).width = width(panel) - 24 + 'px';
 151.167 +  }
 151.168 +  if (panel == 'mainPanel') {
 151.169 +    style('body').marginLeft = '0';
 151.170 +    style('body').marginRight = '0';
 151.171 +  }
 151.172 +  style(panel).border = 0;
 151.173 +  style(panel).left = x(panel) + 'px';
 151.174 +  style(panel).top = ((maxHeight - totalHeight) / 2) + height('navigation') + 
 151.175 +                     16 + 12 + 'px';
 151.176 +  style(panel).position = 'absolute';
 151.177 +
 151.178 +  style('navigation').width = width('navigation') + 'px';
 151.179 +  style('navigation').left = x('navigation') + 'px';
 151.180 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 151.181 +  style('navigation').position = 'absolute';
 151.182 +
 151.183 +  bottomLeft.setAttribute('id', 'bottomLeft');
 151.184 +  id('body').appendChild(bottomLeft);
 151.185 +  style('bottomLeft').left = x(panel) - 12 + 'px';
 151.186 +  style('bottomLeft').top = y(panel) + height(panel) + 'px';
 151.187 +
 151.188 +  left.setAttribute('id', 'left');
 151.189 +  id('body').appendChild(left);
 151.190 +  style('left').height = height(panel) - 84 + 'px';
 151.191 +  style('left').left = x(panel) - 12 + 'px';
 151.192 +  style('left').top = y(panel) + 84 + 'px';
 151.193 +
 151.194 +  topLeft.setAttribute('id', 'topLeft');
 151.195 +  id('body').appendChild(topLeft);
 151.196 +  style('topLeft').left = x(panel) - 12 + 'px';
 151.197 +  style('topLeft').top = y(panel) - 12 + 'px';
 151.198 +
 151.199 +  top.setAttribute('id', 'top');
 151.200 +  id('body').appendChild(top);
 151.201 +  style('top').width = width(panel) + 'px';
 151.202 +  style('top').left = x(panel) + 'px';
 151.203 +  style('top').top = y(panel) - 12 + 'px';
 151.204 +
 151.205 +  topRight.setAttribute('id', 'topRight');
 151.206 +  id('body').appendChild(topRight);
 151.207 +  style('topRight').left = x(panel) + width(panel) + 'px';
 151.208 +  style('topRight').top = y(panel) - 12 + 'px';
 151.209 +
 151.210 +  right.setAttribute('id', 'right');
 151.211 +  id('body').appendChild(right);
 151.212 +  style('right').height = height(panel) - 84 + 'px';
 151.213 +  style('right').left = x(panel) + width(panel) + 'px';
 151.214 +  style('right').top = y(panel) + 84 + 'px';
 151.215 +
 151.216 +  bottomRight.setAttribute('id', 'bottomRight');
 151.217 +  id('body').appendChild(bottomRight);
 151.218 +  style('bottomRight').left = x(panel) + width(panel) + 'px';
 151.219 +  style('bottomRight').top = y(panel) + height(panel) + 'px';
 151.220 +
 151.221 +  bottom.setAttribute('id', 'bottom');
 151.222 +  id('body').appendChild(bottom);
 151.223 +  style('bottom').width = width(panel) + 'px';
 151.224 +  style('bottom').left = x(panel) + 'px';
 151.225 +  style('bottom').top = y(panel) + height(panel) + 'px';
 151.226 +
 151.227 +  style('bottomLeft').background = 'url(/images/panel/bottom_left.gif)';
 151.228 +  style('left').background = 'url(/images/panel/left.gif)';
 151.229 +  style('topLeft').background = 'url(/images/panel/main/top_left.gif)';
 151.230 +  style('top').background = 'url(/images/panel/main/top.gif)';
 151.231 +  style('topRight').background = 'url(/images/panel/main/top_right.gif)';
 151.232 +  style('right').background = 'url(/images/panel/right.gif)';
 151.233 +  style('bottomRight').background = 'url(/images/panel/bottom_right.gif)';
 151.234 +  style('bottom').background = 'url(/images/panel/bottom.gif)';
 151.235 +
 151.236 +  mode = 'dynamic';
 151.237 +}
 151.238 +
 151.239 +function staticMode() {
 151.240 +  style('body').marginLeft = '19px';
 151.241 +  style('body').marginRight = '19px';
 151.242 +
 151.243 +  style('copyrightDates').width = '';
 151.244 +  style('copyrightDates').left = '';
 151.245 +  style('copyrightDates').bottom = '';
 151.246 +  style('copyrightDates').position = '';
 151.247 +  style('copyrightDates').margin = '';
 151.248 +
 151.249 +  style(panel).border = '';
 151.250 +  style(panel).width = '';
 151.251 +  style(panel).left = '';
 151.252 +  style(panel).top = '';
 151.253 +  style(panel).position = '';
 151.254 +
 151.255 +  style('navigation').width = '';
 151.256 +  style('navigation').left = '';
 151.257 +  style('navigation').top = '';
 151.258 +  style('navigation').position = '';
 151.259 +
 151.260 +  /* more code */
 151.261 +
 151.262 +  mode = 'static';
 151.263 +}
 151.264 +
 151.265 +function resize() {
 151.266 +  style('copyrightDates').left = ((maxWidth - width('copyrightDates')) / 2) + 
 151.267 +                                 'px';
 151.268 +
 151.269 +  style(panel).left = ((maxWidth - width(panel)) / 2) + 'px';
 151.270 +  style(panel).top = ((maxHeight - totalHeight) / 2) + 
 151.271 +                     height('navigation') + 16 + 12 + 'px';
 151.272 +
 151.273 +  style('navigation').left = ((maxWidth - width('navigation')) / 2) + 'px';
 151.274 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 151.275 +
 151.276 +  style('bottomLeft').left = x(panel) - 12 + 'px';
 151.277 +  style('bottomLeft').top = y(panel) + height(panel) + 'px';
 151.278 +
 151.279 +  style('left').left = x(panel) - 12 + 'px';
 151.280 +  style('left').top = y(panel) + 53 - 12 + 'px';
 151.281 +
 151.282 +  style('topLeft').left = x(panel) - 12 + 'px';
 151.283 +  style('topLeft').top = y(panel) - 12 + 'px';
 151.284 +
 151.285 +  style('top').left = x(panel) + 'px';
 151.286 +  style('top').top = y(panel) - 12 + 'px';
 151.287 +
 151.288 +  style('topRight').left = x(panel) + width(panel) + 'px';
 151.289 +  style('topRight').top = y(panel) - 12 + 'px';
 151.290 +
 151.291 +  style('right').left = x(panel) + width(panel) + 'px';
 151.292 +  style('right').top = y(panel) + 53 - 12 + 'px';
 151.293 +
 151.294 +  style('bottomRight').left = x(panel) + width(panel) + 'px';
 151.295 +  style('bottomRight').top = y(panel) + height(panel) + 'px';
 151.296 +
 151.297 +  style('bottom').left = x(panel) + 'px';
 151.298 +  style('bottom').top = y(panel) + height(panel) + 'px';
 151.299 +}
 151.300 +
 151.301 +function layout() {
 151.302 +  maxWidth = clientWidth();
 151.303 +  maxHeight = clientHeight();
 151.304 +  totalWidth = contentWidth();
 151.305 +  totalHeight = contentHeight();
 151.306 +  if ((totalWidth < maxWidth) && (totalHeight < maxHeight)) {
 151.307 +    if (mode != 'dynamic') {
 151.308 +      dynamicMode();
 151.309 +    } else {
 151.310 +      resize();
 151.311 +    }
 151.312 +  } else if (mode != 'static') {
 151.313 +    staticMode();
 151.314 +  }
 151.315 +}
 151.316 +
 151.317 +function remember() {
 151.318 +  document.cookie = 'javascript=on; path=/; secure';
 151.319 +}
 151.320 +
 151.321 +window.onresize = function() {
 151.322 +  /*
 151.323 +  if (capable()) {
 151.324 +    layout();
 151.325 +  }
 151.326 +  */
 151.327 +  window.location.replace(unescape(window.location.pathname));
 151.328 +}
 151.329 +
 151.330 +window.onload = function() {
 151.331 +  if (capable()) {
 151.332 +    layout();
 151.333 +    remember();
 151.334 +  }
 151.335 +}
 151.336 +
 151.337 +/***********************************************************************/
 151.338 +/*                  Copyright and Trademark Statement                  */
 151.339 +/***********************************************************************/
 151.340 +/*                                                                     */
 151.341 +/*          All original textual and graphical site content:           */
 151.342 +/*                                                                     */
 151.343 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
 151.344 +/*  reserved.  Reproduction in whole or in part without written        */
 151.345 +/*  permission is prohibited.  interos and the interos logos are       */
 151.346 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 151.347 +/*  product, and service names mentioned herein may be the properties  */
 151.348 +/*  of their respective owners.  Comments in the interos.org forums    */
 151.349 +/*  are the properties of their respective authors.  All software      */
 151.350 +/*  developed in the forums is open source and belongs to everyone.    */
 151.351 +/*                                                                     */
 151.352 +/***********************************************************************/
 151.353 +/*                      e-mail: info@interos.com                       */
 151.354 +/***********************************************************************/
   152.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   152.2 +++ b/js/default_interos.org.js	Sat May 01 16:19:36 2010 -0400
   152.3 @@ -0,0 +1,351 @@
   152.4 +/******************************************************/
   152.5 +/*     interos Standard Document Header - Script      */
   152.6 +/******************************************************/
   152.7 +/*         URIs:  http://interos.org/js/default.js    */
   152.8 +/*                http://*.interos.org/js/default.js  */
   152.9 +/*  Description:  Default JavaScript for interos      */
  152.10 +/*       Author:  Brent Angeline                      */
  152.11 +/*       Script:  JavaScript                          */
  152.12 +/******************************************************/
  152.13 +
  152.14 +var panel, maxWidth, maxHeight, totalWidth, totalHeight;
  152.15 +var mode = 'static';
  152.16 +
  152.17 +function capable() {
  152.18 +  return (document.createElementNS || document.createElement) && 
  152.19 +         document.getElementById && width('navigation') && initialize();
  152.20 +}
  152.21 +
  152.22 +function initialize() {
  152.23 +  if (id('mainPanel')) {
  152.24 +    panel = 'mainPanel';
  152.25 +    return 1;
  152.26 +  } else if (id('titlePanel')) {
  152.27 +    panel = 'titlePanel';
  152.28 +    return 1;
  152.29 +  } else {
  152.30 +    return 0;
  152.31 +  }
  152.32 +}
  152.33 +
  152.34 +function div() {
  152.35 +  if (document.createElementNS) {
  152.36 +    return document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
  152.37 +  } else if (document.createElement) {
  152.38 +    return document.createElement('div');
  152.39 +  }
  152.40 +}
  152.41 +
  152.42 +function id(e) {
  152.43 +  return document.getElementById(e);
  152.44 +}
  152.45 +
  152.46 +function style(e) {
  152.47 +  return id(e).style;
  152.48 +}
  152.49 +
  152.50 +function property(e, p) {
  152.51 +  return document.defaultView.getComputedStyle(id(e), null).getPropertyValue(p);
  152.52 +}
  152.53 +
  152.54 +function width(e) {
  152.55 +  if (id(e).offsetWidth) {
  152.56 +    return id(e).offsetWidth;
  152.57 +  } else if (window.getComputedStyle) {
  152.58 +    return property(e, 'width').substring(0, property(e, 'width').indexOf('p'));
  152.59 +  } else {
  152.60 +    return 0;
  152.61 +  }
  152.62 +}
  152.63 +
  152.64 +function height(e) {
  152.65 +  if (id(e).offsetHeight) {
  152.66 +    return id(e).offsetHeight;
  152.67 +  } else if (window.getComputedStyle) {
  152.68 +    return property(e, 'height').substring(0, 
  152.69 +                                           property(e, 'height').indexOf('p'));
  152.70 +  } else {
  152.71 +    return 0;
  152.72 +  }
  152.73 +}
  152.74 +
  152.75 +function x(e) {
  152.76 +  var x, done;
  152.77 +  x = done = 0;
  152.78 +  e = id(e);
  152.79 +  if (e.offsetParent) {
  152.80 +    while (e.offsetParent) {
  152.81 +      x += e.offsetLeft;
  152.82 +      e = e.offsetParent;
  152.83 +    }
  152.84 +  } else if (e.x) {
  152.85 +    x = e.x;
  152.86 +  }
  152.87 +  return x;
  152.88 +}
  152.89 +
  152.90 +function y(e) {
  152.91 +  var y, done;
  152.92 +  y = done = 0;
  152.93 +  e = id(e);
  152.94 +  if (e.offsetParent) {
  152.95 +    while (e.offsetParent) {
  152.96 +      y += e.offsetTop;
  152.97 +      e = e.offsetParent;
  152.98 +    }
  152.99 +  } else if (e.y) {
 152.100 +    y = e.y;
 152.101 +  }
 152.102 +  return y;
 152.103 +}
 152.104 +
 152.105 +function content(e, string) {
 152.106 +  if (document.all) {
 152.107 +    document.all[e].innerHTML = string;
 152.108 +  } else if (id(e).innerHTML) {
 152.109 +    id(e).innerHTML = string;
 152.110 +  }
 152.111 +}
 152.112 +
 152.113 +function clientWidth() {
 152.114 +  var width = 0;
 152.115 +  if (self.innerWidth) {
 152.116 +    width = self.innerWidth;
 152.117 +  } else if (document.documentElement && document.documentElement.clientWidth) {
 152.118 +    width = document.documentElement.clientWidth;
 152.119 +  } else if (document.body) {
 152.120 +    width = document.body.clientWidth;
 152.121 +  }
 152.122 +  return width;
 152.123 +}
 152.124 +
 152.125 +function clientHeight() {
 152.126 +  var height = 0;
 152.127 +  if (self.innerHeight) {
 152.128 +    height = self.innerHeight;
 152.129 +  } else if (document.documentElement && 
 152.130 +             document.documentElement.clientHeight) {
 152.131 +    height = document.documentElement.clientHeight;
 152.132 +  } else if (document.body) {
 152.133 +    height = document.body.clientHeight;
 152.134 +  }
 152.135 +  return height;
 152.136 +}
 152.137 +
 152.138 +function contentWidth() {
 152.139 +  return (12 + width(panel) + 18);
 152.140 +}
 152.141 +
 152.142 +function contentHeight() {
 152.143 +  return (height('navigation') + 16 + 12 + height(panel) + 18 + 16 + 
 152.144 +          height('copyrightDates'));
 152.145 +}
 152.146 +
 152.147 +function dynamicMode() {
 152.148 +  var bottomLeft = div();
 152.149 +  var left = div();
 152.150 +  var topLeft = div();
 152.151 +  var top = div();
 152.152 +  var topRight = div();
 152.153 +  var right = div();
 152.154 +  var bottomRight= div();
 152.155 +  var bottom = div();
 152.156 +
 152.157 +  style('copyrightDates').width = width('copyrightDates') + 'px';
 152.158 +  style('copyrightDates').left = x('copyrightDates') + 'px';
 152.159 +  style('copyrightDates').top = ((maxHeight - totalHeight) / 2) + 
 152.160 +                                height('navigation') + 16 + 12 + 
 152.161 +                                height(panel) + 18 + 16 + 'px';
 152.162 +  style('copyrightDates').position = 'absolute';
 152.163 +  style('copyrightDates').margin = 0;
 152.164 +
 152.165 +  if ((clientWidth() - contentWidth()) < 9) {
 152.166 +    style(panel).width = width(panel) - 24 + 'px';
 152.167 +  }
 152.168 +  if (panel == 'mainPanel') {
 152.169 +    style('body').marginLeft = '0';
 152.170 +    style('body').marginRight = '0';
 152.171 +  }
 152.172 +  style(panel).border = 0;
 152.173 +  style(panel).left = x(panel) + 'px';
 152.174 +  style(panel).top = ((maxHeight - totalHeight) / 2) + height('navigation') + 
 152.175 +                     16 + 12 + 'px';
 152.176 +  style(panel).position = 'absolute';
 152.177 +
 152.178 +  style('navigation').width = width('navigation') + 'px';
 152.179 +  style('navigation').left = x('navigation') + 'px';
 152.180 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 152.181 +  style('navigation').position = 'absolute';
 152.182 +
 152.183 +  bottomLeft.setAttribute('id', 'bottomLeft');
 152.184 +  id('body').appendChild(bottomLeft);
 152.185 +  style('bottomLeft').left = x(panel) - 12 + 'px';
 152.186 +  style('bottomLeft').top = y(panel) + height(panel) + 'px';
 152.187 +
 152.188 +  left.setAttribute('id', 'left');
 152.189 +  id('body').appendChild(left);
 152.190 +  style('left').height = height(panel) - 84 + 'px';
 152.191 +  style('left').left = x(panel) - 12 + 'px';
 152.192 +  style('left').top = y(panel) + 84 + 'px';
 152.193 +
 152.194 +  topLeft.setAttribute('id', 'topLeft');
 152.195 +  id('body').appendChild(topLeft);
 152.196 +  style('topLeft').left = x(panel) - 12 + 'px';
 152.197 +  style('topLeft').top = y(panel) - 12 + 'px';
 152.198 +
 152.199 +  top.setAttribute('id', 'top');
 152.200 +  id('body').appendChild(top);
 152.201 +  style('top').width = width(panel) + 'px';
 152.202 +  style('top').left = x(panel) + 'px';
 152.203 +  style('top').top = y(panel) - 12 + 'px';
 152.204 +
 152.205 +  topRight.setAttribute('id', 'topRight');
 152.206 +  id('body').appendChild(topRight);
 152.207 +  style('topRight').left = x(panel) + width(panel) + 'px';
 152.208 +  style('topRight').top = y(panel) - 12 + 'px';
 152.209 +
 152.210 +  right.setAttribute('id', 'right');
 152.211 +  id('body').appendChild(right);
 152.212 +  style('right').height = height(panel) - 84 + 'px';
 152.213 +  style('right').left = x(panel) + width(panel) + 'px';
 152.214 +  style('right').top = y(panel) + 84 + 'px';
 152.215 +
 152.216 +  bottomRight.setAttribute('id', 'bottomRight');
 152.217 +  id('body').appendChild(bottomRight);
 152.218 +  style('bottomRight').left = x(panel) + width(panel) + 'px';
 152.219 +  style('bottomRight').top = y(panel) + height(panel) + 'px';
 152.220 +
 152.221 +  bottom.setAttribute('id', 'bottom');
 152.222 +  id('body').appendChild(bottom);
 152.223 +  style('bottom').width = width(panel) + 'px';
 152.224 +  style('bottom').left = x(panel) + 'px';
 152.225 +  style('bottom').top = y(panel) + height(panel) + 'px';
 152.226 +
 152.227 +  style('bottomLeft').background = 'url(/images/panel/bottom_left.gif)';
 152.228 +  style('left').background = 'url(/images/panel/left.gif)';
 152.229 +  style('topLeft').background = 'url(/images/panel/main/top_left.gif)';
 152.230 +  style('top').background = 'url(/images/panel/main/top.gif)';
 152.231 +  style('topRight').background = 'url(/images/panel/main/top_right.gif)';
 152.232 +  style('right').background = 'url(/images/panel/right.gif)';
 152.233 +  style('bottomRight').background = 'url(/images/panel/bottom_right.gif)';
 152.234 +  style('bottom').background = 'url(/images/panel/bottom.gif)';
 152.235 +
 152.236 +  mode = 'dynamic';
 152.237 +}
 152.238 +
 152.239 +function staticMode() {
 152.240 +  style('body').marginLeft = '19px';
 152.241 +  style('body').marginRight = '19px';
 152.242 +
 152.243 +  style('copyrightDates').width = '';
 152.244 +  style('copyrightDates').left = '';
 152.245 +  style('copyrightDates').bottom = '';
 152.246 +  style('copyrightDates').position = '';
 152.247 +  style('copyrightDates').margin = '';
 152.248 +
 152.249 +  style(panel).border = '';
 152.250 +  style(panel).width = '';
 152.251 +  style(panel).left = '';
 152.252 +  style(panel).top = '';
 152.253 +  style(panel).position = '';
 152.254 +
 152.255 +  style('navigation').width = '';
 152.256 +  style('navigation').left = '';
 152.257 +  style('navigation').top = '';
 152.258 +  style('navigation').position = '';
 152.259 +
 152.260 +  /* more code */
 152.261 +
 152.262 +  mode = 'static';
 152.263 +}
 152.264 +
 152.265 +function resize() {
 152.266 +  style('copyrightDates').left = ((maxWidth - width('copyrightDates')) / 2) + 
 152.267 +                                 'px';
 152.268 +
 152.269 +  style(panel).left = ((maxWidth - width(panel)) / 2) + 'px';
 152.270 +  style(panel).top = ((maxHeight - totalHeight) / 2) + 
 152.271 +                     height('navigation') + 16 + 12 + 'px';
 152.272 +
 152.273 +  style('navigation').left = ((maxWidth - width('navigation')) / 2) + 'px';
 152.274 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 152.275 +
 152.276 +  style('bottomLeft').left = x(panel) - 12 + 'px';
 152.277 +  style('bottomLeft').top = y(panel) + height(panel) + 'px';
 152.278 +
 152.279 +  style('left').left = x(panel) - 12 + 'px';
 152.280 +  style('left').top = y(panel) + 53 - 12 + 'px';
 152.281 +
 152.282 +  style('topLeft').left = x(panel) - 12 + 'px';
 152.283 +  style('topLeft').top = y(panel) - 12 + 'px';
 152.284 +
 152.285 +  style('top').left = x(panel) + 'px';
 152.286 +  style('top').top = y(panel) - 12 + 'px';
 152.287 +
 152.288 +  style('topRight').left = x(panel) + width(panel) + 'px';
 152.289 +  style('topRight').top = y(panel) - 12 + 'px';
 152.290 +
 152.291 +  style('right').left = x(panel) + width(panel) + 'px';
 152.292 +  style('right').top = y(panel) + 53 - 12 + 'px';
 152.293 +
 152.294 +  style('bottomRight').left = x(panel) + width(panel) + 'px';
 152.295 +  style('bottomRight').top = y(panel) + height(panel) + 'px';
 152.296 +
 152.297 +  style('bottom').left = x(panel) + 'px';
 152.298 +  style('bottom').top = y(panel) + height(panel) + 'px';
 152.299 +}
 152.300 +
 152.301 +function layout() {
 152.302 +  maxWidth = clientWidth();
 152.303 +  maxHeight = clientHeight();
 152.304 +  totalWidth = contentWidth();
 152.305 +  totalHeight = contentHeight();
 152.306 +  if ((totalWidth < maxWidth) && (totalHeight < maxHeight)) {
 152.307 +    if (mode != 'dynamic') {
 152.308 +      dynamicMode();
 152.309 +    } else {
 152.310 +      resize();
 152.311 +    }
 152.312 +  } else if (mode != 'static') {
 152.313 +    staticMode();
 152.314 +  }
 152.315 +}
 152.316 +
 152.317 +function remember() {
 152.318 +  document.cookie = 'javascript=on; path=/; secure';
 152.319 +}
 152.320 +
 152.321 +window.onresize = function() {
 152.322 +  /*
 152.323 +  if (capable()) {
 152.324 +    layout();
 152.325 +  }
 152.326 +  */
 152.327 +  window.location.replace(unescape(window.location.pathname));
 152.328 +}
 152.329 +
 152.330 +window.onload = function() {
 152.331 +  if (capable()) {
 152.332 +    layout();
 152.333 +    remember();
 152.334 +  }
 152.335 +}
 152.336 +
 152.337 +/***********************************************************************/
 152.338 +/*                  Copyright and Trademark Statement                  */
 152.339 +/***********************************************************************/
 152.340 +/*                                                                     */
 152.341 +/*          All original textual and graphical site content:           */
 152.342 +/*                                                                     */
 152.343 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
 152.344 +/*  reserved.  Reproduction in whole or in part without written        */
 152.345 +/*  permission is prohibited.  interos and the interos logos are       */
 152.346 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 152.347 +/*  product, and service names mentioned herein may be the properties  */
 152.348 +/*  of their respective owners.  Comments in the interos.org forums    */
 152.349 +/*  are the properties of their respective authors.  All software      */
 152.350 +/*  developed in the forums is open source and belongs to everyone.    */
 152.351 +/*                                                                     */
 152.352 +/***********************************************************************/
 152.353 +/*                      e-mail: info@interos.org                       */
 152.354 +/***********************************************************************/
   153.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   153.2 +++ b/js/default_interos.org_ssl.js	Sat May 01 16:19:36 2010 -0400
   153.3 @@ -0,0 +1,351 @@
   153.4 +/*******************************************************/
   153.5 +/*      interos Standard Document Header - Script      */
   153.6 +/*******************************************************/
   153.7 +/*         URIs:  https://interos.org/js/default.js    */
   153.8 +/*                https://*.interos.org/js/default.js  */
   153.9 +/*  Description:  Default JavaScript for interos       */
  153.10 +/*       Author:  Brent Angeline                       */
  153.11 +/*       Script:  JavaScript                           */
  153.12 +/*******************************************************/
  153.13 +
  153.14 +var panel, maxWidth, maxHeight, totalWidth, totalHeight;
  153.15 +var mode = 'static';
  153.16 +
  153.17 +function capable() {
  153.18 +  return (document.createElementNS || document.createElement) && 
  153.19 +         document.getElementById && width('navigation') && initialize();
  153.20 +}
  153.21 +
  153.22 +function initialize() {
  153.23 +  if (id('mainPanel')) {
  153.24 +    panel = 'mainPanel';
  153.25 +    return 1;
  153.26 +  } else if (id('titlePanel')) {
  153.27 +    panel = 'titlePanel';
  153.28 +    return 1;
  153.29 +  } else {
  153.30 +    return 0;
  153.31 +  }
  153.32 +}
  153.33 +
  153.34 +function div() {
  153.35 +  if (document.createElementNS) {
  153.36 +    return document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
  153.37 +  } else if (document.createElement) {
  153.38 +    return document.createElement('div');
  153.39 +  }
  153.40 +}
  153.41 +
  153.42 +function id(e) {
  153.43 +  return document.getElementById(e);
  153.44 +}
  153.45 +
  153.46 +function style(e) {
  153.47 +  return id(e).style;
  153.48 +}
  153.49 +
  153.50 +function property(e, p) {
  153.51 +  return document.defaultView.getComputedStyle(id(e), null).getPropertyValue(p);
  153.52 +}
  153.53 +
  153.54 +function width(e) {
  153.55 +  if (id(e).offsetWidth) {
  153.56 +    return id(e).offsetWidth;
  153.57 +  } else if (window.getComputedStyle) {
  153.58 +    return property(e, 'width').substring(0, property(e, 'width').indexOf('p'));
  153.59 +  } else {
  153.60 +    return 0;
  153.61 +  }
  153.62 +}
  153.63 +
  153.64 +function height(e) {
  153.65 +  if (id(e).offsetHeight) {
  153.66 +    return id(e).offsetHeight;
  153.67 +  } else if (window.getComputedStyle) {
  153.68 +    return property(e, 'height').substring(0, 
  153.69 +                                           property(e, 'height').indexOf('p'));
  153.70 +  } else {
  153.71 +    return 0;
  153.72 +  }
  153.73 +}
  153.74 +
  153.75 +function x(e) {
  153.76 +  var x, done;
  153.77 +  x = done = 0;
  153.78 +  e = id(e);
  153.79 +  if (e.offsetParent) {
  153.80 +    while (e.offsetParent) {
  153.81 +      x += e.offsetLeft;
  153.82 +      e = e.offsetParent;
  153.83 +    }
  153.84 +  } else if (e.x) {
  153.85 +    x = e.x;
  153.86 +  }
  153.87 +  return x;
  153.88 +}
  153.89 +
  153.90 +function y(e) {
  153.91 +  var y, done;
  153.92 +  y = done = 0;
  153.93 +  e = id(e);
  153.94 +  if (e.offsetParent) {
  153.95 +    while (e.offsetParent) {
  153.96 +      y += e.offsetTop;
  153.97 +      e = e.offsetParent;
  153.98 +    }
  153.99 +  } else if (e.y) {
 153.100 +    y = e.y;
 153.101 +  }
 153.102 +  return y;
 153.103 +}
 153.104 +
 153.105 +function content(e, string) {
 153.106 +  if (document.all) {
 153.107 +    document.all[e].innerHTML = string;
 153.108 +  } else if (id(e).innerHTML) {
 153.109 +    id(e).innerHTML = string;
 153.110 +  }
 153.111 +}
 153.112 +
 153.113 +function clientWidth() {
 153.114 +  var width = 0;
 153.115 +  if (self.innerWidth) {
 153.116 +    width = self.innerWidth;
 153.117 +  } else if (document.documentElement && document.documentElement.clientWidth) {
 153.118 +    width = document.documentElement.clientWidth;
 153.119 +  } else if (document.body) {
 153.120 +    width = document.body.clientWidth;
 153.121 +  }
 153.122 +  return width;
 153.123 +}
 153.124 +
 153.125 +function clientHeight() {
 153.126 +  var height = 0;
 153.127 +  if (self.innerHeight) {
 153.128 +    height = self.innerHeight;
 153.129 +  } else if (document.documentElement && 
 153.130 +             document.documentElement.clientHeight) {
 153.131 +    height = document.documentElement.clientHeight;
 153.132 +  } else if (document.body) {
 153.133 +    height = document.body.clientHeight;
 153.134 +  }
 153.135 +  return height;
 153.136 +}
 153.137 +
 153.138 +function contentWidth() {
 153.139 +  return (12 + width(panel) + 18);
 153.140 +}
 153.141 +
 153.142 +function contentHeight() {
 153.143 +  return (height('navigation') + 16 + 12 + height(panel) + 18 + 16 + 
 153.144 +          height('copyrightDates'));
 153.145 +}
 153.146 +
 153.147 +function dynamicMode() {
 153.148 +  var bottomLeft = div();
 153.149 +  var left = div();
 153.150 +  var topLeft = div();
 153.151 +  var top = div();
 153.152 +  var topRight = div();
 153.153 +  var right = div();
 153.154 +  var bottomRight= div();
 153.155 +  var bottom = div();
 153.156 +
 153.157 +  style('copyrightDates').width = width('copyrightDates') + 'px';
 153.158 +  style('copyrightDates').left = x('copyrightDates') + 'px';
 153.159 +  style('copyrightDates').top = ((maxHeight - totalHeight) / 2) + 
 153.160 +                                height('navigation') + 16 + 12 + 
 153.161 +                                height(panel) + 18 + 16 + 'px';
 153.162 +  style('copyrightDates').position = 'absolute';
 153.163 +  style('copyrightDates').margin = 0;
 153.164 +
 153.165 +  if ((clientWidth() - contentWidth()) < 9) {
 153.166 +    style(panel).width = width(panel) - 24 + 'px';
 153.167 +  }
 153.168 +  if (panel == 'mainPanel') {
 153.169 +    style('body').marginLeft = '0';
 153.170 +    style('body').marginRight = '0';
 153.171 +  }
 153.172 +  style(panel).border = 0;
 153.173 +  style(panel).left = x(panel) + 'px';
 153.174 +  style(panel).top = ((maxHeight - totalHeight) / 2) + height('navigation') + 
 153.175 +                     16 + 12 + 'px';
 153.176 +  style(panel).position = 'absolute';
 153.177 +
 153.178 +  style('navigation').width = width('navigation') + 'px';
 153.179 +  style('navigation').left = x('navigation') + 'px';
 153.180 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 153.181 +  style('navigation').position = 'absolute';
 153.182 +
 153.183 +  bottomLeft.setAttribute('id', 'bottomLeft');
 153.184 +  id('body').appendChild(bottomLeft);
 153.185 +  style('bottomLeft').left = x(panel) - 12 + 'px';
 153.186 +  style('bottomLeft').top = y(panel) + height(panel) + 'px';
 153.187 +
 153.188 +  left.setAttribute('id', 'left');
 153.189 +  id('body').appendChild(left);
 153.190 +  style('left').height = height(panel) - 84 + 'px';
 153.191 +  style('left').left = x(panel) - 12 + 'px';
 153.192 +  style('left').top = y(panel) + 84 + 'px';
 153.193 +
 153.194 +  topLeft.setAttribute('id', 'topLeft');
 153.195 +  id('body').appendChild(topLeft);
 153.196 +  style('topLeft').left = x(panel) - 12 + 'px';
 153.197 +  style('topLeft').top = y(panel) - 12 + 'px';
 153.198 +
 153.199 +  top.setAttribute('id', 'top');
 153.200 +  id('body').appendChild(top);
 153.201 +  style('top').width = width(panel) + 'px';
 153.202 +  style('top').left = x(panel) + 'px';
 153.203 +  style('top').top = y(panel) - 12 + 'px';
 153.204 +
 153.205 +  topRight.setAttribute('id', 'topRight');
 153.206 +  id('body').appendChild(topRight);
 153.207 +  style('topRight').left = x(panel) + width(panel) + 'px';
 153.208 +  style('topRight').top = y(panel) - 12 + 'px';
 153.209 +
 153.210 +  right.setAttribute('id', 'right');
 153.211 +  id('body').appendChild(right);
 153.212 +  style('right').height = height(panel) - 84 + 'px';
 153.213 +  style('right').left = x(panel) + width(panel) + 'px';
 153.214 +  style('right').top = y(panel) + 84 + 'px';
 153.215 +
 153.216 +  bottomRight.setAttribute('id', 'bottomRight');
 153.217 +  id('body').appendChild(bottomRight);
 153.218 +  style('bottomRight').left = x(panel) + width(panel) + 'px';
 153.219 +  style('bottomRight').top = y(panel) + height(panel) + 'px';
 153.220 +
 153.221 +  bottom.setAttribute('id', 'bottom');
 153.222 +  id('body').appendChild(bottom);
 153.223 +  style('bottom').width = width(panel) + 'px';
 153.224 +  style('bottom').left = x(panel) + 'px';
 153.225 +  style('bottom').top = y(panel) + height(panel) + 'px';
 153.226 +
 153.227 +  style('bottomLeft').background = 'url(/images/panel/bottom_left.gif)';
 153.228 +  style('left').background = 'url(/images/panel/left.gif)';
 153.229 +  style('topLeft').background = 'url(/images/panel/main/top_left.gif)';
 153.230 +  style('top').background = 'url(/images/panel/main/top.gif)';
 153.231 +  style('topRight').background = 'url(/images/panel/main/top_right.gif)';
 153.232 +  style('right').background = 'url(/images/panel/right.gif)';
 153.233 +  style('bottomRight').background = 'url(/images/panel/bottom_right.gif)';
 153.234 +  style('bottom').background = 'url(/images/panel/bottom.gif)';
 153.235 +
 153.236 +  mode = 'dynamic';
 153.237 +}
 153.238 +
 153.239 +function staticMode() {
 153.240 +  style('body').marginLeft = '19px';
 153.241 +  style('body').marginRight = '19px';
 153.242 +
 153.243 +  style('copyrightDates').width = '';
 153.244 +  style('copyrightDates').left = '';
 153.245 +  style('copyrightDates').bottom = '';
 153.246 +  style('copyrightDates').position = '';
 153.247 +  style('copyrightDates').margin = '';
 153.248 +
 153.249 +  style(panel).border = '';
 153.250 +  style(panel).width = '';
 153.251 +  style(panel).left = '';
 153.252 +  style(panel).top = '';
 153.253 +  style(panel).position = '';
 153.254 +
 153.255 +  style('navigation').width = '';
 153.256 +  style('navigation').left = '';
 153.257 +  style('navigation').top = '';
 153.258 +  style('navigation').position = '';
 153.259 +
 153.260 +  /* more code */
 153.261 +
 153.262 +  mode = 'static';
 153.263 +}
 153.264 +
 153.265 +function resize() {
 153.266 +  style('copyrightDates').left = ((maxWidth - width('copyrightDates')) / 2) + 
 153.267 +                                 'px';
 153.268 +
 153.269 +  style(panel).left = ((maxWidth - width(panel)) / 2) + 'px';
 153.270 +  style(panel).top = ((maxHeight - totalHeight) / 2) + 
 153.271 +                     height('navigation') + 16 + 12 + 'px';
 153.272 +
 153.273 +  style('navigation').left = ((maxWidth - width('navigation')) / 2) + 'px';
 153.274 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 153.275 +
 153.276 +  style('bottomLeft').left = x(panel) - 12 + 'px';
 153.277 +  style('bottomLeft').top = y(panel) + height(panel) + 'px';
 153.278 +
 153.279 +  style('left').left = x(panel) - 12 + 'px';
 153.280 +  style('left').top = y(panel) + 53 - 12 + 'px';
 153.281 +
 153.282 +  style('topLeft').left = x(panel) - 12 + 'px';
 153.283 +  style('topLeft').top = y(panel) - 12 + 'px';
 153.284 +
 153.285 +  style('top').left = x(panel) + 'px';
 153.286 +  style('top').top = y(panel) - 12 + 'px';
 153.287 +
 153.288 +  style('topRight').left = x(panel) + width(panel) + 'px';
 153.289 +  style('topRight').top = y(panel) - 12 + 'px';
 153.290 +
 153.291 +  style('right').left = x(panel) + width(panel) + 'px';
 153.292 +  style('right').top = y(panel) + 53 - 12 + 'px';
 153.293 +
 153.294 +  style('bottomRight').left = x(panel) + width(panel) + 'px';
 153.295 +  style('bottomRight').top = y(panel) + height(panel) + 'px';
 153.296 +
 153.297 +  style('bottom').left = x(panel) + 'px';
 153.298 +  style('bottom').top = y(panel) + height(panel) + 'px';
 153.299 +}
 153.300 +
 153.301 +function layout() {
 153.302 +  maxWidth = clientWidth();
 153.303 +  maxHeight = clientHeight();
 153.304 +  totalWidth = contentWidth();
 153.305 +  totalHeight = contentHeight();
 153.306 +  if ((totalWidth < maxWidth) && (totalHeight < maxHeight)) {
 153.307 +    if (mode != 'dynamic') {
 153.308 +      dynamicMode();
 153.309 +    } else {
 153.310 +      resize();
 153.311 +    }
 153.312 +  } else if (mode != 'static') {
 153.313 +    staticMode();
 153.314 +  }
 153.315 +}
 153.316 +
 153.317 +function remember() {
 153.318 +  document.cookie = 'javascript=on; path=/; secure';
 153.319 +}
 153.320 +
 153.321 +window.onresize = function() {
 153.322 +  /*
 153.323 +  if (capable()) {
 153.324 +    layout();
 153.325 +  }
 153.326 +  */
 153.327 +  window.location.replace(unescape(window.location.pathname));
 153.328 +}
 153.329 +
 153.330 +window.onload = function() {
 153.331 +  if (capable()) {
 153.332 +    layout();
 153.333 +    remember();
 153.334 +  }
 153.335 +}
 153.336 +
 153.337 +/***********************************************************************/
 153.338 +/*                  Copyright and Trademark Statement                  */
 153.339 +/***********************************************************************/
 153.340 +/*                                                                     */
 153.341 +/*          All original textual and graphical site content:           */
 153.342 +/*                                                                     */
 153.343 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
 153.344 +/*  reserved.  Reproduction in whole or in part without written        */
 153.345 +/*  permission is prohibited.  interos and the interos logos are       */
 153.346 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 153.347 +/*  product, and service names mentioned herein may be the properties  */
 153.348 +/*  of their respective owners.  Comments in the interos.org forums    */
 153.349 +/*  are the properties of their respective authors.  All software      */
 153.350 +/*  developed in the forums is open source and belongs to everyone.    */
 153.351 +/*                                                                     */
 153.352 +/***********************************************************************/
 153.353 +/*                      e-mail: info@interos.org                       */
 153.354 +/***********************************************************************/
   154.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   154.2 +++ b/js/home_interos.com.js	Sat May 01 16:19:36 2010 -0400
   154.3 @@ -0,0 +1,375 @@
   154.4 +/*****************************************************/
   154.5 +/*     interos Standard Document Header - Script     */
   154.6 +/*****************************************************/
   154.7 +/*         URIs:  http://interos.com/js/home.js      */
   154.8 +/*                http://www.interos.com/js/home.js  */
   154.9 +/*  Description:  JavaScript for interos             */
  154.10 +/*       Author:  Brent Angeline                     */
  154.11 +/*       Script:  JavaScript                         */
  154.12 +/*****************************************************/
  154.13 +
  154.14 +var maxWidth, maxHeight, totalWidth, totalHeight;
  154.15 +var mode = 'static';
  154.16 +
  154.17 +function capable() {
  154.18 +  return (document.createElementNS || document.createElement) && 
  154.19 +         document.getElementById && width('navigation');
  154.20 +}
  154.21 +
  154.22 +function div() {
  154.23 +  if (document.createElementNS) {
  154.24 +    return document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
  154.25 +  } else if (document.createElement) {
  154.26 +    return document.createElement('div');
  154.27 +  }
  154.28 +}
  154.29 +
  154.30 +function id(e) {
  154.31 +  return document.getElementById(e);
  154.32 +}
  154.33 +
  154.34 +function style(e) {
  154.35 +  return id(e).style;
  154.36 +}
  154.37 +
  154.38 +function property(e, p) {
  154.39 +  return document.defaultView.getComputedStyle(id(e), null).getPropertyValue(p);
  154.40 +}
  154.41 +
  154.42 +function width(e) {
  154.43 +  if (id(e).offsetWidth) {
  154.44 +    return id(e).offsetWidth;
  154.45 +  } else if (window.getComputedStyle) {
  154.46 +    return property(e, 'width').substring(0, property(e, 'width').indexOf('p'));
  154.47 +  } else {
  154.48 +    return 0;
  154.49 +  }
  154.50 +}
  154.51 +
  154.52 +function height(e) {
  154.53 +  if (id(e).offsetHeight) {
  154.54 +    return id(e).offsetHeight;
  154.55 +  } else if (window.getComputedStyle) {
  154.56 +    return property(e, 'height').substring(0, 
  154.57 +                                            property(e, 'height').indexOf('p'));
  154.58 +  } else {
  154.59 +    return 0;
  154.60 +  }
  154.61 +}
  154.62 +
  154.63 +function x(e) {
  154.64 +  var x, done;
  154.65 +  x = done = 0;
  154.66 +  e = id(e);
  154.67 +  if (e.offsetParent) {
  154.68 +    while (e.offsetParent) {
  154.69 +      x += e.offsetLeft;
  154.70 +      e = e.offsetParent;
  154.71 +    }
  154.72 +  } else if (e.x) {
  154.73 +    x = e.x;
  154.74 +  }
  154.75 +  return x;
  154.76 +}
  154.77 +
  154.78 +function y(e) {
  154.79 +  var y, done;
  154.80 +  y = done = 0;
  154.81 +  e = id(e);
  154.82 +  if (e.offsetParent) {
  154.83 +    while (e.offsetParent) {
  154.84 +      y += e.offsetTop;
  154.85 +      e = e.offsetParent;
  154.86 +    }
  154.87 +  } else if (e.y) {
  154.88 +    y = e.y;
  154.89 +  }
  154.90 +  return y;
  154.91 +}
  154.92 +
  154.93 +function content(e, string) {
  154.94 +  if (document.all) {
  154.95 +    document.all[e].innerHTML = string;
  154.96 +  } else if (id(e).innerHTML) {
  154.97 +    id(e).innerHTML = string;
  154.98 +  }
  154.99 +}
 154.100 +
 154.101 +function clientWidth() {
 154.102 +  var width = 0;
 154.103 +  if (self.innerWidth) {
 154.104 +    width = self.innerWidth;
 154.105 +  } else if (document.documentElement && document.documentElement.clientWidth) {
 154.106 +    width = document.documentElement.clientWidth;
 154.107 +  } else if (document.body) {
 154.108 +    width = document.body.clientWidth;
 154.109 +  }
 154.110 +  return width;
 154.111 +}
 154.112 +
 154.113 +function clientHeight() {
 154.114 +  var height = 0;
 154.115 +  if (self.innerHeight) {
 154.116 +    height = self.innerHeight;
 154.117 +  } else if (document.documentElement && 
 154.118 +             document.documentElement.clientHeight) {
 154.119 +    height = document.documentElement.clientHeight;
 154.120 +  } else if (document.body) {
 154.121 +    height = document.body.clientHeight;
 154.122 +  }
 154.123 +  return height;
 154.124 +}
 154.125 +
 154.126 +function contentWidth() {
 154.127 +  if (width('mainPanel') > 372) {
 154.128 +    return (8 + 12 + width('mainPanel') + 18 + 8);
 154.129 +  } else {
 154.130 +    return (8 + 12 + 372 + 18 + 8);
 154.131 +  }
 154.132 +}
 154.133 +
 154.134 +function contentHeight() {
 154.135 +  return (height('navigation') + 16 + 12 + height('mainPanel') + 18 + 16 + 
 154.136 +          height('copyrightDates'));
 154.137 +}
 154.138 +
 154.139 +function dynamicMode() {
 154.140 +  var bottomLeft = div();
 154.141 +  var left = div();
 154.142 +  var topLeft = div();
 154.143 +  var top = div();
 154.144 +  var topRight = div();
 154.145 +  var right = div();
 154.146 +  var bottomRight= div();
 154.147 +  var bottom = div();
 154.148 +  var i = div();
 154.149 +  var nteros = div();
 154.150 +
 154.151 +  style('body').marginLeft = 0;
 154.152 +  style('body').marginRight = 0;
 154.153 +
 154.154 +  style('copyrightDates').width = width('copyrightDates') + 'px';
 154.155 +  style('copyrightDates').left = x('copyrightDates') + 'px';
 154.156 +  style('copyrightDates').top = ((maxHeight - totalHeight) / 2) + 
 154.157 +                                height('navigation') + 16 + 12 + 
 154.158 +                                height('mainPanel') + 18 + 16 + 'px';
 154.159 +  style('copyrightDates').position = 'absolute';
 154.160 +  style('copyrightDates').margin = 0;
 154.161 +
 154.162 +  style('title').height = '60px';
 154.163 +  content('title', '');
 154.164 +
 154.165 +  style('mainPanel').border = 0;
 154.166 +  style('mainPanel').background = 
 154.167 +                     '#bfbfbf url(/images/panel/login.gif) repeat-x';
 154.168 +  if (width('mainPanel') < 372) {
 154.169 +    style('mainPanel').width = '372px';
 154.170 +  } else {
 154.171 +    style('mainPanel').width = width('mainPanel') + 'px';
 154.172 +  }
 154.173 +  style('mainPanel').left = x('mainPanel') + 'px'
 154.174 +  style('mainPanel').top = ((maxHeight - totalHeight) / 2) + 
 154.175 +                           height('navigation') + 16 + 12 + 'px';
 154.176 +  style('mainPanel').position = 'absolute';
 154.177 +
 154.178 +  style('navigation').width = width('navigation') + 'px';
 154.179 +  style('navigation').left = x('navigation') + 'px';
 154.180 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 154.181 +  style('navigation').position = 'absolute';
 154.182 +
 154.183 +  bottomLeft.setAttribute('id', 'bottomLeft');
 154.184 +  id('body').appendChild(bottomLeft);
 154.185 +  style('bottomLeft').left = x('mainPanel') - 12 + 'px';
 154.186 +  style('bottomLeft').top = y('mainPanel') + height('mainPanel') + 'px';
 154.187 +
 154.188 +  left.setAttribute('id', 'left');
 154.189 +  id('body').appendChild(left);
 154.190 +  style('left').height = height('mainPanel') - 53 + 12 + 'px';
 154.191 +  style('left').left = x('mainPanel') - 12 + 'px';
 154.192 +  style('left').top = y('mainPanel') + 53 - 12 + 'px';
 154.193 +
 154.194 +  topLeft.setAttribute('id', 'topLeft');
 154.195 +  id('body').appendChild(topLeft);
 154.196 +  style('topLeft').left = x('mainPanel') - 12 + 'px';
 154.197 +  style('topLeft').top = y('mainPanel') - 12 + 'px';
 154.198 +
 154.199 +  top.setAttribute('id', 'top');
 154.200 +  id('body').appendChild(top);
 154.201 +  style('top').width = width('mainPanel') + 'px';
 154.202 +  style('top').left = x('mainPanel') + 'px';
 154.203 +  style('top').top = y('mainPanel') - 12 + 'px';
 154.204 +
 154.205 +  topRight.setAttribute('id', 'topRight');
 154.206 +  id('body').appendChild(topRight);
 154.207 +  style('topRight').left = x('mainPanel') + width('mainPanel') + 'px';
 154.208 +  style('topRight').top = y('mainPanel') - 12 + 'px';
 154.209 +
 154.210 +  right.setAttribute('id', 'right');
 154.211 +  id('body').appendChild(right);
 154.212 +  style('right').height = height('mainPanel') - 53 + 12 + 'px';
 154.213 +  style('right').left = x('mainPanel') + width('mainPanel') + 'px';
 154.214 +  style('right').top = y('mainPanel') + 53 - 12 + 'px';
 154.215 +
 154.216 +  bottomRight.setAttribute('id', 'bottomRight');
 154.217 +  id('body').appendChild(bottomRight);
 154.218 +  style('bottomRight').left = x('mainPanel') + width('mainPanel') + 'px';
 154.219 +  style('bottomRight').top = y('mainPanel') + height('mainPanel') + 'px';
 154.220 +
 154.221 +  bottom.setAttribute('id', 'bottom');
 154.222 +  id('body').appendChild(bottom);
 154.223 +  style('bottom').width = width('mainPanel') + 'px';
 154.224 +  style('bottom').left = x('mainPanel') + 'px';
 154.225 +  style('bottom').top = y('mainPanel') + height('mainPanel') + 'px';
 154.226 +
 154.227 +  style('bottomLeft').background = 'url(/images/panel/bottom_left.gif)';
 154.228 +  style('left').background = 'url(/images/panel/left.gif)';
 154.229 +  style('topLeft').background = 'url(/images/panel/login/top_left.gif)';
 154.230 +  style('top').background = 'url(/images/panel/login/top.gif)';
 154.231 +  style('topRight').background = 'url(/images/panel/login/top_right.gif)';
 154.232 +  style('right').background = 'url(/images/panel/right.gif)';
 154.233 +  style('bottomRight').background = 'url(/images/panel/bottom_right.gif)';
 154.234 +  style('bottom').background = 'url(/images/panel/bottom.gif)';
 154.235 +
 154.236 +  i.setAttribute('id', 'i');
 154.237 +  id('body').appendChild(i);
 154.238 +  style('i').zIndex = 2;
 154.239 +  style('i').width = '52px';
 154.240 +  style('i').height = '60px';
 154.241 +  style('i').left = x('mainPanel') + ((width('mainPanel') - 336) / 2) + 'px';
 154.242 +  style('i').top = y('mainPanel') + 7 + 'px';
 154.243 +  style('i').position = 'absolute';
 154.244 +  style('i').background = 'url(/images/login/i.gif)';
 154.245 +
 154.246 +  nteros.setAttribute('id', 'nteros');
 154.247 +  id('body').appendChild(nteros);
 154.248 +  style('nteros').zIndex = 2;
 154.249 +  style('nteros').width = '284px';
 154.250 +  style('nteros').height = '60px';
 154.251 +  style('nteros').left = x('mainPanel') + ((width('mainPanel') - 336) / 2) + 
 154.252 +                         52 + 'px';
 154.253 +  style('nteros').top = y('mainPanel') + 7 + 'px';
 154.254 +  style('nteros').position = 'absolute';
 154.255 +  style('nteros').background = 'url(/images/login/nteros.gif)';
 154.256 +
 154.257 +  mode = 'dynamic';
 154.258 +}
 154.259 +
 154.260 +function staticMode() {
 154.261 +  style('body').marginLeft = '19px';
 154.262 +  style('body').marginRight = '19px';
 154.263 +
 154.264 +  style('copyrightDates').width = '';
 154.265 +  style('copyrightDates').left = '';
 154.266 +  style('copyrightDates').bottom = '';
 154.267 +  style('copyrightDates').position = '';
 154.268 +  style('copyrightDates').margin = '';
 154.269 +
 154.270 +  style('title').height = '';
 154.271 +  content('title', '');
 154.272 +
 154.273 +  style('mainPanel').border = '';
 154.274 +  style('mainPanel').width = '';
 154.275 +  style('mainPanel').left = '';
 154.276 +  style('mainPanel').top = '';
 154.277 +  style('mainPanel').position = '';
 154.278 +
 154.279 +  style('navigation').width = '';
 154.280 +  style('navigation').left = '';
 154.281 +  style('navigation').top = '';
 154.282 +  style('navigation').position = '';
 154.283 +
 154.284 +  /* more code */
 154.285 +
 154.286 +  mode = 'static';
 154.287 +}
 154.288 +
 154.289 +function resize() {
 154.290 +  style('copyrightDates').left = ((maxWidth - width('copyrightDates')) / 2) + 
 154.291 +                                 'px';
 154.292 +
 154.293 +  style('mainPanel').left = ((maxWidth - width('mainPanel')) / 2) + 'px';
 154.294 +  style('mainPanel').top = ((maxHeight - totalHeight) / 2) + 
 154.295 +                           height('navigation') + 16 + 12 + 'px';
 154.296 +
 154.297 +  style('navigation').left = ((maxWidth - width('navigation')) / 2) + 'px';
 154.298 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 154.299 +
 154.300 +  style('bottomLeft').left = x('mainPanel') - 12 + 'px';
 154.301 +  style('bottomLeft').top = y('mainPanel') + height('mainPanel') + 'px';
 154.302 +
 154.303 +  style('left').left = x('mainPanel') - 12 + 'px';
 154.304 +  style('left').top = y('mainPanel') + 53 - 12 + 'px';
 154.305 +
 154.306 +  style('topLeft').left = x('mainPanel') - 12 + 'px';
 154.307 +  style('topLeft').top = y('mainPanel') - 12 + 'px';
 154.308 +
 154.309 +  style('top').left = x('mainPanel') + 'px';
 154.310 +  style('top').top = y('mainPanel') - 12 + 'px';
 154.311 +
 154.312 +  style('topRight').left = x('mainPanel') + width('mainPanel') + 'px';
 154.313 +  style('topRight').top = y('mainPanel') - 12 + 'px';
 154.314 +
 154.315 +  style('right').left = x('mainPanel') + width('mainPanel') + 'px';
 154.316 +  style('right').top = y('mainPanel') + 53 - 12 + 'px';
 154.317 +
 154.318 +  style('bottomRight').left = x('mainPanel') + width('mainPanel') + 'px';
 154.319 +  style('bottomRight').top = y('mainPanel') + height('mainPanel') + 'px';
 154.320 +
 154.321 +  style('bottom').left = x('mainPanel') + 'px';
 154.322 +  style('bottom').top = y('mainPanel') + height('mainPanel') + 'px';
 154.323 +}
 154.324 +
 154.325 +function layout() {
 154.326 +  maxWidth = clientWidth();
 154.327 +  maxHeight = clientHeight();
 154.328 +  totalWidth = contentWidth();
 154.329 +  totalHeight = contentHeight();
 154.330 +  if ((totalWidth < maxWidth) && (totalHeight < maxHeight)) {
 154.331 +    if (mode != 'dynamic') {
 154.332 +      dynamicMode();
 154.333 +    } else {
 154.334 +      resize();
 154.335 +    }
 154.336 +  } else if (mode != 'static') {
 154.337 +    staticMode();
 154.338 +  }
 154.339 +}
 154.340 +
 154.341 +function remember() {
 154.342 +  document.cookie = 'javascript=on; path=/; secure';
 154.343 +}
 154.344 +
 154.345 +window.onresize = function() {
 154.346 +  /*
 154.347 +  if (capable()) {
 154.348 +    layout();
 154.349 +  }
 154.350 +  */
 154.351 +  window.location.replace(unescape(window.location.pathname));
 154.352 +}
 154.353 +
 154.354 +window.onload = function() {
 154.355 +  if (capable()) {
 154.356 +    layout();
 154.357 +    remember();
 154.358 +  }
 154.359 +}
 154.360 +
 154.361 +/***********************************************************************/
 154.362 +/*                  Copyright and Trademark Statement                  */
 154.363 +/***********************************************************************/
 154.364 +/*                                                                     */
 154.365 +/*          All original textual and graphical site content:           */
 154.366 +/*                                                                     */
 154.367 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
 154.368 +/*  reserved.  Reproduction in whole or in part without written        */
 154.369 +/*  permission is prohibited.  interos and the interos logos are       */
 154.370 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 154.371 +/*  product, and service names mentioned herein may be the properties  */
 154.372 +/*  of their respective owners.  Comments in the interos.org forums    */
 154.373 +/*  are the properties of their respective authors.  All software      */
 154.374 +/*  developed in the forums is open source and belongs to everyone.    */
 154.375 +/*                                                                     */
 154.376 +/***********************************************************************/
 154.377 +/*                      e-mail: info@interos.com                       */
 154.378 +/***********************************************************************/
   155.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   155.2 +++ b/js/home_interos.com_ssl.js	Sat May 01 16:19:36 2010 -0400
   155.3 @@ -0,0 +1,375 @@
   155.4 +/******************************************************/
   155.5 +/*     interos Standard Document Header - Script      */
   155.6 +/*****************************************************/
   155.7 +/*         URIs:  https://interos.com/js/home.js      */
   155.8 +/*                https://www.interos.com/js/home.js  */
   155.9 +/*  Description:  JavaScript for interos              */
  155.10 +/*       Author:  Brent Angeline                      */
  155.11 +/*       Script:  JavaScript                          */
  155.12 +/******************************************************/
  155.13 +
  155.14 +var maxWidth, maxHeight, totalWidth, totalHeight;
  155.15 +var mode = 'static';
  155.16 +
  155.17 +function capable() {
  155.18 +  return (document.createElementNS || document.createElement) && 
  155.19 +         document.getElementById && width('navigation');
  155.20 +}
  155.21 +
  155.22 +function div() {
  155.23 +  if (document.createElementNS) {
  155.24 +    return document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
  155.25 +  } else if (document.createElement) {
  155.26 +    return document.createElement('div');
  155.27 +  }
  155.28 +}
  155.29 +
  155.30 +function id(e) {
  155.31 +  return document.getElementById(e);
  155.32 +}
  155.33 +
  155.34 +function style(e) {
  155.35 +  return id(e).style;
  155.36 +}
  155.37 +
  155.38 +function property(e, p) {
  155.39 +  return document.defaultView.getComputedStyle(id(e), null).getPropertyValue(p);
  155.40 +}
  155.41 +
  155.42 +function width(e) {
  155.43 +  if (id(e).offsetWidth) {
  155.44 +    return id(e).offsetWidth;
  155.45 +  } else if (window.getComputedStyle) {
  155.46 +    return property(e, 'width').substring(0, property(e, 'width').indexOf('p'));
  155.47 +  } else {
  155.48 +    return 0;
  155.49 +  }
  155.50 +}
  155.51 +
  155.52 +function height(e) {
  155.53 +  if (id(e).offsetHeight) {
  155.54 +    return id(e).offsetHeight;
  155.55 +  } else if (window.getComputedStyle) {
  155.56 +    return property(e, 'height').substring(0, 
  155.57 +                                            property(e, 'height').indexOf('p'));
  155.58 +  } else {
  155.59 +    return 0;
  155.60 +  }
  155.61 +}
  155.62 +
  155.63 +function x(e) {
  155.64 +  var x, done;
  155.65 +  x = done = 0;
  155.66 +  e = id(e);
  155.67 +  if (e.offsetParent) {
  155.68 +    while (e.offsetParent) {
  155.69 +      x += e.offsetLeft;
  155.70 +      e = e.offsetParent;
  155.71 +    }
  155.72 +  } else if (e.x) {
  155.73 +    x = e.x;
  155.74 +  }
  155.75 +  return x;
  155.76 +}
  155.77 +
  155.78 +function y(e) {
  155.79 +  var y, done;
  155.80 +  y = done = 0;
  155.81 +  e = id(e);
  155.82 +  if (e.offsetParent) {
  155.83 +    while (e.offsetParent) {
  155.84 +      y += e.offsetTop;
  155.85 +      e = e.offsetParent;
  155.86 +    }
  155.87 +  } else if (e.y) {
  155.88 +    y = e.y;
  155.89 +  }
  155.90 +  return y;
  155.91 +}
  155.92 +
  155.93 +function content(e, string) {
  155.94 +  if (document.all) {
  155.95 +    document.all[e].innerHTML = string;
  155.96 +  } else if (id(e).innerHTML) {
  155.97 +    id(e).innerHTML = string;
  155.98 +  }
  155.99 +}
 155.100 +
 155.101 +function clientWidth() {
 155.102 +  var width = 0;
 155.103 +  if (self.innerWidth) {
 155.104 +    width = self.innerWidth;
 155.105 +  } else if (document.documentElement && document.documentElement.clientWidth) {
 155.106 +    width = document.documentElement.clientWidth;
 155.107 +  } else if (document.body) {
 155.108 +    width = document.body.clientWidth;
 155.109 +  }
 155.110 +  return width;
 155.111 +}
 155.112 +
 155.113 +function clientHeight() {
 155.114 +  var height = 0;
 155.115 +  if (self.innerHeight) {
 155.116 +    height = self.innerHeight;
 155.117 +  } else if (document.documentElement && 
 155.118 +             document.documentElement.clientHeight) {
 155.119 +    height = document.documentElement.clientHeight;
 155.120 +  } else if (document.body) {
 155.121 +    height = document.body.clientHeight;
 155.122 +  }
 155.123 +  return height;
 155.124 +}
 155.125 +
 155.126 +function contentWidth() {
 155.127 +  if (width('mainPanel') > 372) {
 155.128 +    return (8 + 12 + width('mainPanel') + 18 + 8);
 155.129 +  } else {
 155.130 +    return (8 + 12 + 372 + 18 + 8);
 155.131 +  }
 155.132 +}
 155.133 +
 155.134 +function contentHeight() {
 155.135 +  return (height('navigation') + 16 + 12 + height('mainPanel') + 18 + 16 + 
 155.136 +          height('copyrightDates'));
 155.137 +}
 155.138 +
 155.139 +function dynamicMode() {
 155.140 +  var bottomLeft = div();
 155.141 +  var left = div();
 155.142 +  var topLeft = div();
 155.143 +  var top = div();
 155.144 +  var topRight = div();
 155.145 +  var right = div();
 155.146 +  var bottomRight= div();
 155.147 +  var bottom = div();
 155.148 +  var i = div();
 155.149 +  var nteros = div();
 155.150 +
 155.151 +  style('body').marginLeft = 0;
 155.152 +  style('body').marginRight = 0;
 155.153 +
 155.154 +  style('copyrightDates').width = width('copyrightDates') + 'px';
 155.155 +  style('copyrightDates').left = x('copyrightDates') + 'px';
 155.156 +  style('copyrightDates').top = ((maxHeight - totalHeight) / 2) + 
 155.157 +                                height('navigation') + 16 + 12 + 
 155.158 +                                height('mainPanel') + 18 + 16 + 'px';
 155.159 +  style('copyrightDates').position = 'absolute';
 155.160 +  style('copyrightDates').margin = 0;
 155.161 +
 155.162 +  style('title').height = '60px';
 155.163 +  content('title', '');
 155.164 +
 155.165 +  style('mainPanel').border = 0;
 155.166 +  style('mainPanel').background = 
 155.167 +                     '#bfbfbf url(/images/panel/login.gif) repeat-x';
 155.168 +  if (width('mainPanel') < 372) {
 155.169 +    style('mainPanel').width = '372px';
 155.170 +  } else {
 155.171 +    style('mainPanel').width = width('mainPanel') + 'px';
 155.172 +  }
 155.173 +  style('mainPanel').left = x('mainPanel') + 'px'
 155.174 +  style('mainPanel').top = ((maxHeight - totalHeight) / 2) + 
 155.175 +                           height('navigation') + 16 + 12 + 'px';
 155.176 +  style('mainPanel').position = 'absolute';
 155.177 +
 155.178 +  style('navigation').width = width('navigation') + 'px';
 155.179 +  style('navigation').left = x('navigation') + 'px';
 155.180 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 155.181 +  style('navigation').position = 'absolute';
 155.182 +
 155.183 +  bottomLeft.setAttribute('id', 'bottomLeft');
 155.184 +  id('body').appendChild(bottomLeft);
 155.185 +  style('bottomLeft').left = x('mainPanel') - 12 + 'px';
 155.186 +  style('bottomLeft').top = y('mainPanel') + height('mainPanel') + 'px';
 155.187 +
 155.188 +  left.setAttribute('id', 'left');
 155.189 +  id('body').appendChild(left);
 155.190 +  style('left').height = height('mainPanel') - 53 + 12 + 'px';
 155.191 +  style('left').left = x('mainPanel') - 12 + 'px';
 155.192 +  style('left').top = y('mainPanel') + 53 - 12 + 'px';
 155.193 +
 155.194 +  topLeft.setAttribute('id', 'topLeft');
 155.195 +  id('body').appendChild(topLeft);
 155.196 +  style('topLeft').left = x('mainPanel') - 12 + 'px';
 155.197 +  style('topLeft').top = y('mainPanel') - 12 + 'px';
 155.198 +
 155.199 +  top.setAttribute('id', 'top');
 155.200 +  id('body').appendChild(top);
 155.201 +  style('top').width = width('mainPanel') + 'px';
 155.202 +  style('top').left = x('mainPanel') + 'px';
 155.203 +  style('top').top = y('mainPanel') - 12 + 'px';
 155.204 +
 155.205 +  topRight.setAttribute('id', 'topRight');
 155.206 +  id('body').appendChild(topRight);
 155.207 +  style('topRight').left = x('mainPanel') + width('mainPanel') + 'px';
 155.208 +  style('topRight').top = y('mainPanel') - 12 + 'px';
 155.209 +
 155.210 +  right.setAttribute('id', 'right');
 155.211 +  id('body').appendChild(right);
 155.212 +  style('right').height = height('mainPanel') - 53 + 12 + 'px';
 155.213 +  style('right').left = x('mainPanel') + width('mainPanel') + 'px';
 155.214 +  style('right').top = y('mainPanel') + 53 - 12 + 'px';
 155.215 +
 155.216 +  bottomRight.setAttribute('id', 'bottomRight');
 155.217 +  id('body').appendChild(bottomRight);
 155.218 +  style('bottomRight').left = x('mainPanel') + width('mainPanel') + 'px';
 155.219 +  style('bottomRight').top = y('mainPanel') + height('mainPanel') + 'px';
 155.220 +
 155.221 +  bottom.setAttribute('id', 'bottom');
 155.222 +  id('body').appendChild(bottom);
 155.223 +  style('bottom').width = width('mainPanel') + 'px';
 155.224 +  style('bottom').left = x('mainPanel') + 'px';
 155.225 +  style('bottom').top = y('mainPanel') + height('mainPanel') + 'px';
 155.226 +
 155.227 +  style('bottomLeft').background = 'url(/images/panel/bottom_left.gif)';
 155.228 +  style('left').background = 'url(/images/panel/left.gif)';
 155.229 +  style('topLeft').background = 'url(/images/panel/login/top_left.gif)';
 155.230 +  style('top').background = 'url(/images/panel/login/top.gif)';
 155.231 +  style('topRight').background = 'url(/images/panel/login/top_right.gif)';
 155.232 +  style('right').background = 'url(/images/panel/right.gif)';
 155.233 +  style('bottomRight').background = 'url(/images/panel/bottom_right.gif)';
 155.234 +  style('bottom').background = 'url(/images/panel/bottom.gif)';
 155.235 +
 155.236 +  i.setAttribute('id', 'i');
 155.237 +  id('body').appendChild(i);
 155.238 +  style('i').zIndex = 2;
 155.239 +  style('i').width = '52px';
 155.240 +  style('i').height = '60px';
 155.241 +  style('i').left = x('mainPanel') + ((width('mainPanel') - 336) / 2) + 'px';
 155.242 +  style('i').top = y('mainPanel') + 7 + 'px';
 155.243 +  style('i').position = 'absolute';
 155.244 +  style('i').background = 'url(/images/login/i.gif)';
 155.245 +
 155.246 +  nteros.setAttribute('id', 'nteros');
 155.247 +  id('body').appendChild(nteros);
 155.248 +  style('nteros').zIndex = 2;
 155.249 +  style('nteros').width = '284px';
 155.250 +  style('nteros').height = '60px';
 155.251 +  style('nteros').left = x('mainPanel') + ((width('mainPanel') - 336) / 2) + 
 155.252 +                         52 + 'px';
 155.253 +  style('nteros').top = y('mainPanel') + 7 + 'px';
 155.254 +  style('nteros').position = 'absolute';
 155.255 +  style('nteros').background = 'url(/images/login/nteros.gif)';
 155.256 +
 155.257 +  mode = 'dynamic';
 155.258 +}
 155.259 +
 155.260 +function staticMode() {
 155.261 +  style('body').marginLeft = '19px';
 155.262 +  style('body').marginRight = '19px';
 155.263 +
 155.264 +  style('copyrightDates').width = '';
 155.265 +  style('copyrightDates').left = '';
 155.266 +  style('copyrightDates').bottom = '';
 155.267 +  style('copyrightDates').position = '';
 155.268 +  style('copyrightDates').margin = '';
 155.269 +
 155.270 +  style('title').height = '';
 155.271 +  content('title', '');
 155.272 +
 155.273 +  style('mainPanel').border = '';
 155.274 +  style('mainPanel').width = '';
 155.275 +  style('mainPanel').left = '';
 155.276 +  style('mainPanel').top = '';
 155.277 +  style('mainPanel').position = '';
 155.278 +
 155.279 +  style('navigation').width = '';
 155.280 +  style('navigation').left = '';
 155.281 +  style('navigation').top = '';
 155.282 +  style('navigation').position = '';
 155.283 +
 155.284 +  /* more code */
 155.285 +
 155.286 +  mode = 'static';
 155.287 +}
 155.288 +
 155.289 +function resize() {
 155.290 +  style('copyrightDates').left = ((maxWidth - width('copyrightDates')) / 2) + 
 155.291 +                                 'px';
 155.292 +
 155.293 +  style('mainPanel').left = ((maxWidth - width('mainPanel')) / 2) + 'px';
 155.294 +  style('mainPanel').top = ((maxHeight - totalHeight) / 2) + 
 155.295 +                           height('navigation') + 16 + 12 + 'px';
 155.296 +
 155.297 +  style('navigation').left = ((maxWidth - width('navigation')) / 2) + 'px';
 155.298 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 155.299 +
 155.300 +  style('bottomLeft').left = x('mainPanel') - 12 + 'px';
 155.301 +  style('bottomLeft').top = y('mainPanel') + height('mainPanel') + 'px';
 155.302 +
 155.303 +  style('left').left = x('mainPanel') - 12 + 'px';
 155.304 +  style('left').top = y('mainPanel') + 53 - 12 + 'px';
 155.305 +
 155.306 +  style('topLeft').left = x('mainPanel') - 12 + 'px';
 155.307 +  style('topLeft').top = y('mainPanel') - 12 + 'px';
 155.308 +
 155.309 +  style('top').left = x('mainPanel') + 'px';
 155.310 +  style('top').top = y('mainPanel') - 12 + 'px';
 155.311 +
 155.312 +  style('topRight').left = x('mainPanel') + width('mainPanel') + 'px';
 155.313 +  style('topRight').top = y('mainPanel') - 12 + 'px';
 155.314 +
 155.315 +  style('right').left = x('mainPanel') + width('mainPanel') + 'px';
 155.316 +  style('right').top = y('mainPanel') + 53 - 12 + 'px';
 155.317 +
 155.318 +  style('bottomRight').left = x('mainPanel') + width('mainPanel') + 'px';
 155.319 +  style('bottomRight').top = y('mainPanel') + height('mainPanel') + 'px';
 155.320 +
 155.321 +  style('bottom').left = x('mainPanel') + 'px';
 155.322 +  style('bottom').top = y('mainPanel') + height('mainPanel') + 'px';
 155.323 +}
 155.324 +
 155.325 +function layout() {
 155.326 +  maxWidth = clientWidth();
 155.327 +  maxHeight = clientHeight();
 155.328 +  totalWidth = contentWidth();
 155.329 +  totalHeight = contentHeight();
 155.330 +  if ((totalWidth < maxWidth) && (totalHeight < maxHeight)) {
 155.331 +    if (mode != 'dynamic') {
 155.332 +      dynamicMode();
 155.333 +    } else {
 155.334 +      resize();
 155.335 +    }
 155.336 +  } else if (mode != 'static') {
 155.337 +    staticMode();
 155.338 +  }
 155.339 +}
 155.340 +
 155.341 +function remember() {
 155.342 +  document.cookie = 'javascript=on; path=/; secure';
 155.343 +}
 155.344 +
 155.345 +window.onresize = function() {
 155.346 +  /*
 155.347 +  if (capable()) {
 155.348 +    layout();
 155.349 +  }
 155.350 +  */
 155.351 +  window.location.replace(unescape(window.location.pathname));
 155.352 +}
 155.353 +
 155.354 +window.onload = function() {
 155.355 +  if (capable()) {
 155.356 +    layout();
 155.357 +    remember();
 155.358 +  }
 155.359 +}
 155.360 +
 155.361 +/***********************************************************************/
 155.362 +/*                  Copyright and Trademark Statement                  */
 155.363 +/***********************************************************************/
 155.364 +/*                                                                     */
 155.365 +/*          All original textual and graphical site content:           */
 155.366 +/*                                                                     */
 155.367 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
 155.368 +/*  reserved.  Reproduction in whole or in part without written        */
 155.369 +/*  permission is prohibited.  interos and the interos logos are       */
 155.370 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 155.371 +/*  product, and service names mentioned herein may be the properties  */
 155.372 +/*  of their respective owners.  Comments in the interos.org forums    */
 155.373 +/*  are the properties of their respective authors.  All software      */
 155.374 +/*  developed in the forums is open source and belongs to everyone.    */
 155.375 +/*                                                                     */
 155.376 +/***********************************************************************/
 155.377 +/*                      e-mail: info@interos.com                       */
 155.378 +/***********************************************************************/
   156.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   156.2 +++ b/js/login_interos.com_ssl.js	Sat May 01 16:19:36 2010 -0400
   156.3 @@ -0,0 +1,460 @@
   156.4 +/*******************************************************/
   156.5 +/*      interos Standard Document Header - Script      */
   156.6 +/*******************************************************/
   156.7 +/*         URIs:  https://interos.com/js/login.js      */
   156.8 +/*                https://www.interos.com/js/login.js  */
   156.9 +/*  Description:  JavaScript for interos login         */
  156.10 +/*       Author:  Brent Angeline                       */
  156.11 +/*       Script:  JavaScript                           */
  156.12 +/*******************************************************/
  156.13 +
  156.14 +var maxWidth, maxHeight, totalWidth, totalHeight;
  156.15 +var mode = 'static';
  156.16 +
  156.17 +function capable() {
  156.18 +  return (document.createElementNS || document.createElement) && 
  156.19 +         document.getElementById && width('newUser');
  156.20 +}
  156.21 +
  156.22 +function preload() {
  156.23 +  var image = new Image();
  156.24 +  image.src = '/images/login/new.gif';
  156.25 +  image.src = '/images/login/open.gif';
  156.26 +  image.src = '/images/login/next.gif';
  156.27 +  image.src = '/images/login/settings.gif';
  156.28 +}
  156.29 +
  156.30 +function div() {
  156.31 +  if (document.createElementNS) {
  156.32 +    return document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
  156.33 +  } else if (document.createElement) {
  156.34 +    return document.createElement('div');
  156.35 +  }
  156.36 +}
  156.37 +
  156.38 +function id(e) {
  156.39 +  return document.getElementById(e);
  156.40 +}
  156.41 +
  156.42 +function style(e) {
  156.43 +  return id(e).style;
  156.44 +}
  156.45 +
  156.46 +function property(e, p) {
  156.47 +  return document.defaultView.getComputedStyle(id(e), null).getPropertyValue(p);
  156.48 +}
  156.49 +
  156.50 +function width(e) {
  156.51 +  if (id(e).offsetWidth) {
  156.52 +    return id(e).offsetWidth;
  156.53 +  } else if (window.getComputedStyle) {
  156.54 +    return property(e, 'width').substring(0, property(e, 'width').indexOf('p'));
  156.55 +  } else {
  156.56 +    return 0;
  156.57 +  }
  156.58 +}
  156.59 +
  156.60 +function height(e) {
  156.61 +  if (id(e).offsetHeight) {
  156.62 +    return id(e).offsetHeight;
  156.63 +  } else if (window.getComputedStyle) {
  156.64 +    return property(e, 'height').substring(0, 
  156.65 +	                                   property(e, 'height').indexOf('p'));
  156.66 +  } else {
  156.67 +    return 0;
  156.68 +  }
  156.69 +}
  156.70 +
  156.71 +function x(e) {
  156.72 +  var x, done;
  156.73 +  x = done = 0;
  156.74 +  e = id(e);
  156.75 +  if (e.offsetParent) {
  156.76 +    while (e.offsetParent) {
  156.77 +      x += e.offsetLeft;
  156.78 +      e = e.offsetParent;
  156.79 +    }
  156.80 +  } else if (e.x) {
  156.81 +    x = e.x;
  156.82 +  }
  156.83 +  return x;
  156.84 +}
  156.85 +
  156.86 +function y(e) {
  156.87 +  var y, done;
  156.88 +  y = done = 0;
  156.89 +  e = id(e);
  156.90 +  if (e.offsetParent) {
  156.91 +    while (e.offsetParent) {
  156.92 +      y += e.offsetTop;
  156.93 +      e = e.offsetParent;
  156.94 +    }
  156.95 +  } else if (e.y) {
  156.96 +    y = e.y;
  156.97 +  }
  156.98 +  return y;
  156.99 +}
 156.100 +
 156.101 +function content(e, string) {
 156.102 +  if (document.all) {
 156.103 +    document.all[e].innerHTML = string;
 156.104 +  } else if (id(e).innerHTML) {
 156.105 +    id(e).innerHTML = string;
 156.106 +  }
 156.107 +}
 156.108 +
 156.109 +function clientWidth() {
 156.110 +  var width = 0;
 156.111 +  if (self.innerWidth) {
 156.112 +    width = self.innerWidth;
 156.113 +  } else if (document.documentElement && document.documentElement.clientWidth) {
 156.114 +    width = document.documentElement.clientWidth;
 156.115 +  } else if (document.body) {
 156.116 +    width = document.body.clientWidth;
 156.117 +  }
 156.118 +  return width;
 156.119 +}
 156.120 +
 156.121 +function clientHeight() {
 156.122 +  var height = 0;
 156.123 +  if (self.innerHeight) {
 156.124 +    height = self.innerHeight;
 156.125 +  } else if (document.documentElement && 
 156.126 +             document.documentElement.clientHeight) {
 156.127 +    height = document.documentElement.clientHeight;
 156.128 +  } else if (document.body) {
 156.129 +    height = document.body.clientHeight;
 156.130 +  }
 156.131 +  return height;
 156.132 +}
 156.133 +
 156.134 +function contentWidth() {
 156.135 +  return (12 + width('mainPanel') + 18);
 156.136 +}
 156.137 +
 156.138 +function contentHeight() {
 156.139 +  return (height('navigation') + 16 + 12 + height('mainPanel') - 5 + 18 + 16 + 
 156.140 +          height('newUser'));
 156.141 +}
 156.142 +
 156.143 +function dynamicMode() {
 156.144 +  var bottomLeft = div();
 156.145 +  var left = div();
 156.146 +  var topLeft = div();
 156.147 +  var top = div();
 156.148 +  var topRight = div();
 156.149 +  var right = div();
 156.150 +  var bottomRight= div();
 156.151 +  var bottom = div();
 156.152 +  var newButton = div();
 156.153 +  var newLabel = div();
 156.154 +  var openButton = div();
 156.155 +  var openLabel = div();
 156.156 +  var nextButton = div();
 156.157 +  var nextLabel = div();
 156.158 +  var settingsButton = div();
 156.159 +  var settingsLabel = div();
 156.160 +  var i = div();
 156.161 +  var nteros = div();
 156.162 +
 156.163 +  style('copyrightDates').width = width('copyrightDates') + 'px';
 156.164 +  style('copyrightDates').left = x('copyrightDates') + 'px';
 156.165 +  style('copyrightDates').bottom = '28px';
 156.166 +  style('copyrightDates').position = 'absolute';
 156.167 +  style('copyrightDates').margin = 0;
 156.168 +
 156.169 +  style('copyrightDates').display = 'none';
 156.170 +
 156.171 +  style('newUser').width = width('newUser') + 'px';
 156.172 +  style('newUser').left = x('newUser') + 'px';
 156.173 +  style('newUser').top = ((maxHeight - totalHeight) / 2) + 
 156.174 +                         height('navigation') + 16 + 12 + 
 156.175 +                         height('mainPanel') + 18 + 'px';
 156.176 +  style('newUser').position = 'absolute';
 156.177 +
 156.178 +  style('title').height = '60px';
 156.179 +  content('title', '');
 156.180 +
 156.181 +  style('mainPanel').border = 0;
 156.182 +  style('mainPanel').background = 
 156.183 +                     '#bfbfbf url(/images/panel/login.gif) repeat-x';
 156.184 +  if (width('mainPanel') < 336) {
 156.185 +    style('mainPanel').width = '336px';
 156.186 +
 156.187 +    style('loginForm').width = '336px';
 156.188 +  } else {
 156.189 +    style('loginForm').width = width('mainPanel') + 'px';
 156.190 +  }
 156.191 +  style('loginForm').left = x('mainPanel') + 'px';
 156.192 +  style('loginForm').top = ((maxHeight - totalHeight) / 2) + 
 156.193 +                           height('navigation') + 16 + 12 + 'px';
 156.194 +  style('loginForm').zIndex = 1;
 156.195 +  style('loginForm').position = 'absolute';
 156.196 +
 156.197 +  style('navigation').width = width('navigation') + 'px';
 156.198 +  style('navigation').left = x('navigation') + 'px';
 156.199 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 156.200 +  style('navigation').position = 'absolute';
 156.201 +
 156.202 +  bottomLeft.setAttribute('id', 'bottomLeft');
 156.203 +  id('body').appendChild(bottomLeft);
 156.204 +  style('bottomLeft').left = x('mainPanel') - 12 + 'px';
 156.205 +  style('bottomLeft').top = y('mainPanel') + height('mainPanel') + 'px';
 156.206 +
 156.207 +  left.setAttribute('id', 'left');
 156.208 +  id('body').appendChild(left);
 156.209 +  style('left').height = height('mainPanel') - 53 + 12 + 'px';
 156.210 +  style('left').left = x('mainPanel') - 12 + 'px';
 156.211 +  style('left').top = y('mainPanel') + 53 - 12 + 'px';
 156.212 +
 156.213 +  topLeft.setAttribute('id', 'topLeft');
 156.214 +  id('body').appendChild(topLeft);
 156.215 +  style('topLeft').left = x('mainPanel') - 12 + 'px';
 156.216 +  style('topLeft').top = y('mainPanel') - 12 + 'px';
 156.217 +
 156.218 +  top.setAttribute('id', 'top');
 156.219 +  id('body').appendChild(top);
 156.220 +  style('top').width = width('mainPanel') + 'px';
 156.221 +  style('top').left = x('mainPanel') + 'px';
 156.222 +  style('top').top = y('mainPanel') - 12 + 'px';
 156.223 +
 156.224 +  topRight.setAttribute('id', 'topRight');
 156.225 +  id('body').appendChild(topRight);
 156.226 +  style('topRight').left = x('mainPanel') + width('mainPanel') + 'px';
 156.227 +  style('topRight').top = y('mainPanel') - 12 + 'px';
 156.228 +
 156.229 +  right.setAttribute('id', 'right');
 156.230 +  id('body').appendChild(right);
 156.231 +  style('right').height = height('mainPanel') - 53 + 12 + 'px';
 156.232 +  style('right').left = x('mainPanel') + width('mainPanel') + 'px';
 156.233 +  style('right').top = y('mainPanel') + 53 - 12 + 'px';
 156.234 +
 156.235 +  bottomRight.setAttribute('id', 'bottomRight');
 156.236 +  id('body').appendChild(bottomRight);
 156.237 +  style('bottomRight').left = x('mainPanel') + width('mainPanel') + 'px';
 156.238 +  style('bottomRight').top = y('mainPanel') + height('mainPanel') + 'px';
 156.239 +
 156.240 +  bottom.setAttribute('id', 'bottom');
 156.241 +  id('body').appendChild(bottom);
 156.242 +  style('bottom').width = width('mainPanel') + 'px';
 156.243 +  style('bottom').left = x('mainPanel') + 'px';
 156.244 +  style('bottom').top = y('mainPanel') + height('mainPanel') + 'px';
 156.245 +
 156.246 +  style('bottomLeft').background = 'url(/images/panel/bottom_left.gif)';
 156.247 +  style('left').background = 'url(/images/panel/left.gif)';
 156.248 +  style('topLeft').background = 'url(/images/panel/login/top_left.gif)';
 156.249 +  style('top').background = 'url(/images/panel/login/top.gif)';
 156.250 +  style('topRight').background = 'url(/images/panel/login/top_right.gif)';
 156.251 +  style('right').background = 'url(/images/panel/right.gif)';
 156.252 +  style('bottomRight').background = 'url(/images/panel/bottom_right.gif)';
 156.253 +  style('bottom').background = 'url(/images/panel/bottom.gif)';
 156.254 +
 156.255 +  newButton.setAttribute('id', 'newButton');
 156.256 +  id('body').appendChild(newButton);
 156.257 +  style('newButton').left = 0;
 156.258 +  style('newButton').bottom = 0;
 156.259 +  style('newButton').background = 'url(/images/login/new_faded.gif)';
 156.260 +
 156.261 +  newLabel.setAttribute('id', 'newLabel');
 156.262 +  id('body').appendChild(newLabel);
 156.263 +  id('newLabel').innerHTML = '1. new';
 156.264 +
 156.265 +  openButton.setAttribute('id', 'openButton');
 156.266 +  id('body').appendChild(openButton);
 156.267 +  style('openButton').left = 0;
 156.268 +  style('openButton').top = 0;
 156.269 +  style('openButton').background = 'url(/images/login/open_faded.gif)';
 156.270 +
 156.271 +  openLabel.setAttribute('id', 'openLabel');
 156.272 +  id('body').appendChild(openLabel);
 156.273 +  id('openLabel').innerHTML = '2. open';
 156.274 +
 156.275 +  nextButton.setAttribute('id', 'nextButton');
 156.276 +  id('body').appendChild(nextButton);
 156.277 +  style('nextButton').right = 0;
 156.278 +  style('nextButton').top = 0;
 156.279 +  style('nextButton').background = 'url(/images/login/next_faded.gif)';
 156.280 +
 156.281 +  nextLabel.setAttribute('id', 'nextLabel');
 156.282 +  id('body').appendChild(nextLabel);
 156.283 +  id('nextLabel').innerHTML = '3. next';
 156.284 +
 156.285 +  settingsButton.setAttribute('id', 'settingsButton');
 156.286 +  id('body').appendChild(settingsButton);
 156.287 +  style('settingsButton').right = 0;
 156.288 +  style('settingsButton').bottom = 0;
 156.289 +  style('settingsButton').background = 
 156.290 +                          'url(/images/login/settings_faded.gif)';
 156.291 +
 156.292 +  settingsLabel.setAttribute('id', 'settingsLabel');
 156.293 +  id('body').appendChild(settingsLabel);
 156.294 +  id('settingsLabel').innerHTML = '4. settings';
 156.295 +
 156.296 +  i.setAttribute('id', 'i');
 156.297 +  id('body').appendChild(i);
 156.298 +  style('i').left = x('mainPanel') + ((width('mainPanel') - 336) / 2) + 'px';
 156.299 +  style('i').top = y('mainPanel') + 7 + 'px';
 156.300 +  style('i').background = 'url(/images/login/i.gif)';
 156.301 +
 156.302 +  nteros.setAttribute('id', 'nteros');
 156.303 +  id('body').appendChild(nteros);
 156.304 +  style('nteros').left = x('mainPanel') + ((width('mainPanel') - 336) / 2) + 
 156.305 +                         52 + 'px';
 156.306 +  style('nteros').top = y('mainPanel') + 7 + 'px';
 156.307 +  style('nteros').background = 'url(/images/login/nteros.gif)';
 156.308 +
 156.309 +  mode = 'dynamic';
 156.310 +}
 156.311 +
 156.312 +function staticMode() {
 156.313 +  style('copyrightDates').width = '';
 156.314 +  style('copyrightDates').left = '';
 156.315 +  style('copyrightDates').bottom = '';
 156.316 +  style('copyrightDates').position = '';
 156.317 +  style('copyrightDates').margin = '';
 156.318 +
 156.319 +  style('newUser').width = '';
 156.320 +  style('newUser').left = '';
 156.321 +  style('newUser').top = '';
 156.322 +  style('newUser').position = '';
 156.323 +
 156.324 +  style('title').height = '';
 156.325 +  content('title', '');
 156.326 +
 156.327 +  style('mainPanel').border = '';
 156.328 +  style('mainPanel').background = '';
 156.329 +  style('mainPanel').width = '';
 156.330 +
 156.331 +  style('loginForm').width = '';
 156.332 +  style('loginForm').left = '';
 156.333 +  style('loginForm').top = '';
 156.334 +  style('loginForm').zIndex = '';
 156.335 +  style('loginForm').position = '';
 156.336 +
 156.337 +  style('navigation').width = '';
 156.338 +  style('navigation').left = '';
 156.339 +  style('navigation').top = '';
 156.340 +  style('navigation').position = '';
 156.341 +
 156.342 +  /* more code */
 156.343 +
 156.344 +  mode = 'static';
 156.345 +}
 156.346 +
 156.347 +function resize() {
 156.348 +  style('copyrightDates').left = ((maxWidth - width('copyrightDates')) / 2) + 
 156.349 +                                 'px';
 156.350 +
 156.351 +  style('newUser').left = ((maxWidth - width('newUser')) / 2) + 'px';
 156.352 +  style('newUser').top = ((maxHeight - totalHeight) / 2) + 
 156.353 +                         height('navigation') + 16 + 12 + 
 156.354 +                         height('mainPanel') + 18 + 'px';
 156.355 +
 156.356 +  style('loginForm').left = ((maxWidth - width('loginForm')) / 2) + 'px';
 156.357 +  style('loginForm').top = ((maxHeight - totalHeight) / 2) + 
 156.358 +                           height('navigation') + 16 + 12 + 'px';
 156.359 +
 156.360 +  style('navigation').left = ((maxWidth - width('navigation')) / 2) + 'px';
 156.361 +  style('navigation').top = ((maxHeight - totalHeight) / 2) - 16 + 'px';
 156.362 +
 156.363 +  style('bottomLeft').left = x('mainPanel') - 12 + 'px';
 156.364 +  style('bottomLeft').top = y('mainPanel') + height('mainPanel') + 'px';
 156.365 +
 156.366 +  style('left').left = x('mainPanel') - 12 + 'px';
 156.367 +  style('left').top = y('mainPanel') + 53 - 12 + 'px';
 156.368 +
 156.369 +  style('topLeft').left = x('mainPanel') - 12 + 'px';
 156.370 +  style('topLeft').top = y('mainPanel') - 12 + 'px';
 156.371 +
 156.372 +  style('top').left = x('mainPanel') + 'px';
 156.373 +  style('top').top = y('mainPanel') - 12 + 'px';
 156.374 +
 156.375 +  style('topRight').left = x('mainPanel') + width('mainPanel') + 'px';
 156.376 +  style('topRight').top = y('mainPanel') - 12 + 'px';
 156.377 +
 156.378 +  style('right').left = x('mainPanel') + width('mainPanel') + 'px';
 156.379 +  style('right').top = y('mainPanel') + 53 - 12 + 'px';
 156.380 +
 156.381 +  style('bottomRight').left = x('mainPanel') + width('mainPanel') + 'px';
 156.382 +  style('bottomRight').top = y('mainPanel') + height('mainPanel') + 'px';
 156.383 +
 156.384 +  style('bottom').left = x('mainPanel') + 'px';
 156.385 +  style('bottom').top = y('mainPanel') + height('mainPanel') + 'px';
 156.386 +
 156.387 +  style('i').left = x('mainPanel') + ((width('mainPanel') - 336) / 2) + 'px';
 156.388 +  style('i').top = y('mainPanel') + 7 + 'px';
 156.389 +
 156.390 +  style('nteros').left = x('mainPanel') + ((width('mainPanel') - 336) / 2) + 
 156.391 +                         52 + 'px';
 156.392 +  style('nteros').top = y('mainPanel') + 7 + 'px';
 156.393 +}
 156.394 +
 156.395 +function layout() {
 156.396 +  maxWidth = clientWidth();
 156.397 +  maxHeight = clientHeight();
 156.398 +  totalWidth = contentWidth();
 156.399 +  totalHeight = contentHeight();
 156.400 +  if ((totalWidth < maxWidth) && ((72 + totalHeight + 72) < maxHeight)) {
 156.401 +    if (mode != 'dynamic') {
 156.402 +      dynamicMode();
 156.403 +    } else {
 156.404 +      resize();
 156.405 +    }
 156.406 +  } else if (mode != 'static') {
 156.407 +    staticMode();
 156.408 +  }
 156.409 +}
 156.410 +
 156.411 +function focus() {
 156.412 +  /*
 156.413 +  if (document.getElementById) {
 156.414 +    if (id('login').focus) {
 156.415 +      id('login').focus();
 156.416 +    }
 156.417 +  } else if (document.loginForm && document.loginForm.login && 
 156.418 +             document.loginForm.login.focus) {
 156.419 +    document.loginForm.login.focus();
 156.420 +  }
 156.421 +  */
 156.422 +}
 156.423 +
 156.424 +function remember() {
 156.425 +  document.cookie = 'javascript=on; path=/; secure';
 156.426 +}
 156.427 +
 156.428 +window.onresize = function() {
 156.429 +  /*
 156.430 +  if (capable()) {
 156.431 +    layout();
 156.432 +  }
 156.433 +  */
 156.434 +  window.location.replace(unescape(window.location.pathname));
 156.435 +}
 156.436 +
 156.437 +window.onload = function() {
 156.438 +  if (capable()) {
 156.439 +    preload();
 156.440 +    layout();
 156.441 +    remember();
 156.442 +  }
 156.443 +  focus();
 156.444 +}
 156.445 +
 156.446 +/***********************************************************************/
 156.447 +/*                  Copyright and Trademark Statement                  */
 156.448 +/***********************************************************************/
 156.449 +/*                                                                     */
 156.450 +/*          All original textual and graphical site content:           */
 156.451 +/*                                                                     */
 156.452 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
 156.453 +/*  reserved.  Reproduction in whole or in part without written        */
 156.454 +/*  permission is prohibited.  interos and the interos logos are       */
 156.455 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 156.456 +/*  product, and service names mentioned herein may be the properties  */
 156.457 +/*  of their respective owners.  Comments in the interos.org forums    */
 156.458 +/*  are the properties of their respective authors.  All software      */
 156.459 +/*  developed in the forums is open source and belongs to everyone.    */
 156.460 +/*                                                                     */
 156.461 +/***********************************************************************/
 156.462 +/*                      e-mail: info@interos.com                       */
 156.463 +/***********************************************************************/
   157.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   157.2 +++ b/js/welcome_interos.com_ssl.js	Sat May 01 16:19:36 2010 -0400
   157.3 @@ -0,0 +1,272 @@
   157.4 +/*********************************************************/
   157.5 +/*       interos Standard Document Header - Script       */
   157.6 +/*********************************************************/
   157.7 +/*         URIs:  https://interos.com/js/welcome.js      */
   157.8 +/*                https://www.interos.com/js/welcome.js  */
   157.9 +/*  Description:  JavaScript for interos welcome         */
  157.10 +/*       Author:  Brent Angeline                         */
  157.11 +/*       Script:  JavaScript                             */
  157.12 +/*********************************************************/
  157.13 +
  157.14 +var maxWidth, maxHeight, totalWidth, totalHeight;
  157.15 +var mode = 'static';
  157.16 +
  157.17 +function capable() {
  157.18 +  return (document.createElementNS || document.createElement) && 
  157.19 +         document.getElementById && width('welcomePanel');
  157.20 +}
  157.21 +
  157.22 +function div() {
  157.23 +  if (document.createElementNS) {
  157.24 +    return document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
  157.25 +  } else if (document.createElement) {
  157.26 +    return document.createElement('div');
  157.27 +  }
  157.28 +}
  157.29 +
  157.30 +function id(e) {
  157.31 +  return document.getElementById(e);
  157.32 +}
  157.33 +
  157.34 +function style(e) {
  157.35 +  return id(e).style;
  157.36 +}
  157.37 +
  157.38 +function property(e, p) {
  157.39 +  return document.defaultView.getComputedStyle(id(e), null).getPropertyValue(p);
  157.40 +}
  157.41 +
  157.42 +function width(e) {
  157.43 +  if (id(e).offsetWidth) {
  157.44 +    return id(e).offsetWidth;
  157.45 +  } else if (window.getComputedStyle) {
  157.46 +    return property(e, 'width').substring(0, property(e, 'width').indexOf('p'));
  157.47 +  } else {
  157.48 +    return 0;
  157.49 +  }
  157.50 +}
  157.51 +
  157.52 +function height(e) {
  157.53 +  if (id(e).offsetHeight) {
  157.54 +    return id(e).offsetHeight;
  157.55 +  } else if (window.getComputedStyle) {
  157.56 +    return property(e, 'height').substring(0, 
  157.57 +                                           property(e, 'height').indexOf('p'));
  157.58 +  } else {
  157.59 +    return 0;
  157.60 +  }
  157.61 +}
  157.62 +
  157.63 +function x(e) {
  157.64 +  var x, done;
  157.65 +  x = done = 0;
  157.66 +  e = id(e);
  157.67 +  if (e.offsetParent) {
  157.68 +    while (e.offsetParent) {
  157.69 +      x += e.offsetLeft;
  157.70 +      e = e.offsetParent;
  157.71 +    }
  157.72 +  } else if (e.x) {
  157.73 +    x = e.x;
  157.74 +  }
  157.75 +  return x;
  157.76 +}
  157.77 +
  157.78 +function y(e) {
  157.79 +  var y, done;
  157.80 +  y = done = 0;
  157.81 +  e = id(e);
  157.82 +  if (e.offsetParent) {
  157.83 +    while (e.offsetParent) {
  157.84 +      y += e.offsetTop;
  157.85 +      e = e.offsetParent;
  157.86 +    }
  157.87 +  } else if (e.y) {
  157.88 +    y = e.y;
  157.89 +  }
  157.90 +  return y;
  157.91 +}
  157.92 +
  157.93 +function content(e, string) {
  157.94 +  if (document.all) {
  157.95 +    document.all[e].innerHTML = string;
  157.96 +  } else if (id(e).innerHTML) {
  157.97 +    id(e).innerHTML = string;
  157.98 +  }
  157.99 +}
 157.100 +
 157.101 +function clientWidth() {
 157.102 +  var width = 0;
 157.103 +  if (self.innerWidth) {
 157.104 +    width = self.innerWidth;
 157.105 +  } else if (document.documentElement && document.documentElement.clientWidth) {
 157.106 +    width = document.documentElement.clientWidth;
 157.107 +  } else if (document.body) {
 157.108 +    width = document.body.clientWidth;
 157.109 +  }
 157.110 +  return width;
 157.111 +}
 157.112 +
 157.113 +function clientHeight() {
 157.114 +  var height = 0;
 157.115 +  if (self.innerHeight) {
 157.116 +    height = self.innerHeight;
 157.117 +  } else if (document.documentElement && 
 157.118 +             document.documentElement.clientHeight) {
 157.119 +    height = document.documentElement.clientHeight;
 157.120 +  } else if (document.body) {
 157.121 +    height = document.body.clientHeight;
 157.122 +  }
 157.123 +  return height;
 157.124 +}
 157.125 +
 157.126 +function contentWidth() {
 157.127 +  return (8 + 12 + width('welcomePanel') + 18 + 8);
 157.128 +}
 157.129 +
 157.130 +function contentHeight() {
 157.131 +  return (72 + 12 + height('welcomePanel') + 18 + 72);
 157.132 +}
 157.133 +
 157.134 +function dynamicMode() {
 157.135 +  var bottomLeft = div();
 157.136 +  var left = div();
 157.137 +  var topLeft = div();
 157.138 +  var top = div();
 157.139 +  var topRight = div();
 157.140 +  var right = div();
 157.141 +  var bottomRight= div();
 157.142 +  var bottom = div();
 157.143 +
 157.144 +  style('welcomePanel').border = 0;
 157.145 +  style('welcomePanel').left = x('welcomePanel') + 'px';
 157.146 +  style('welcomePanel').top = ((maxHeight - totalHeight) / 2) + height('navigation') + 
 157.147 +                              16 + 12 + 'px';
 157.148 +  style('welcomePanel').position = 'absolute';
 157.149 +
 157.150 +  bottomLeft.setAttribute('id', 'bottomLeft');
 157.151 +  id('body').appendChild(bottomLeft);
 157.152 +  style('bottomLeft').left = x('welcomePanel') - 12 + 'px';
 157.153 +  style('bottomLeft').top = y('welcomePanel') + height('welcomePanel') + 'px';
 157.154 +
 157.155 +  left.setAttribute('id', 'left');
 157.156 +  id('body').appendChild(left);
 157.157 +  style('left').height = height('welcomePanel') - 84 + 'px';
 157.158 +  style('left').left = x('welcomePanel') - 12 + 'px';
 157.159 +  style('left').top = y('welcomePanel') + 84 + 'px';
 157.160 +
 157.161 +  topLeft.setAttribute('id', 'topLeft');
 157.162 +  id('body').appendChild(topLeft);
 157.163 +  style('topLeft').left = x('welcomePanel') - 12 + 'px';
 157.164 +  style('topLeft').top = y('welcomePanel') - 12 + 'px';
 157.165 +
 157.166 +  top.setAttribute('id', 'top');
 157.167 +  id('body').appendChild(top);
 157.168 +  style('top').width = width('welcomePanel') + 'px';
 157.169 +  style('top').left = x('welcomePanel') + 'px';
 157.170 +  style('top').top = y('welcomePanel') - 12 + 'px';
 157.171 +
 157.172 +  topRight.setAttribute('id', 'topRight');
 157.173 +  id('body').appendChild(topRight);
 157.174 +  style('topRight').left = x('welcomePanel') + width('welcomePanel') + 'px';
 157.175 +  style('topRight').top = y('welcomePanel') - 12 + 'px';
 157.176 +
 157.177 +  right.setAttribute('id', 'right');
 157.178 +  id('body').appendChild(right);
 157.179 +  style('right').height = height('welcomePanel') - 84 + 'px';
 157.180 +  style('right').left = x('welcomePanel') + width('welcomePanel') + 'px';
 157.181 +  style('right').top = y('welcomePanel') + 84 + 'px';
 157.182 +
 157.183 +  bottomRight.setAttribute('id', 'bottomRight');
 157.184 +  id('body').appendChild(bottomRight);
 157.185 +  style('bottomRight').left = x('welcomePanel') + width('welcomePanel') + 'px';
 157.186 +  style('bottomRight').top = y('welcomePanel') + height('welcomePanel') + 'px';
 157.187 +
 157.188 +  bottom.setAttribute('id', 'bottom');
 157.189 +  id('body').appendChild(bottom);
 157.190 +  style('bottom').width = width('welcomePanel') + 'px';
 157.191 +  style('bottom').left = x('welcomePanel'l) + 'px';
 157.192 +  style('bottom').top = y('welcomePanel') + height('welcomePanel') + 'px';
 157.193 +
 157.194 +  style('bottomLeft').background = 'url(/images/panel/welcome/bottom_left.gif)';
 157.195 +  style('left').background = 'url(/images/panel/welcome/left.gif)';
 157.196 +  style('topLeft').background = 'url(/images/panel/welcome/top_left.gif)';
 157.197 +  style('top').background = 'url(/images/panel/welcome/top.gif)';
 157.198 +  style('topRight').background = 'url(/images/panel/welcome/top_right.gif)';
 157.199 +  style('right').background = 'url(/images/welcome/right.gif)';
 157.200 +  style('bottomRight').background = 'url(/images/panel/welcome/bottom_right.gif)';
 157.201 +  style('bottom').background = 'url(/images/panel/welcome/bottom.gif)';
 157.202 +
 157.203 +  mode = 'dynamic';
 157.204 +}
 157.205 +
 157.206 +function staticMode() {
 157.207 +  style('welcomePanel').border = '';
 157.208 +  style('welcomePanel').width = '';
 157.209 +  style('welcomePanel').left = '';
 157.210 +  style('welcomePanel').top = '';
 157.211 +  style('welcomePanel').position = '';
 157.212 +
 157.213 +  /* more code */
 157.214 +
 157.215 +  mode = 'static';
 157.216 +}
 157.217 +
 157.218 +function resize() {
 157.219 +
 157.220 +}
 157.221 +
 157.222 +function layout() {
 157.223 +  maxWidth = clientWidth();
 157.224 +  maxHeight = clientHeight();
 157.225 +  totalWidth = contentWidth();
 157.226 +  totalHeight = contentHeight();
 157.227 +  if ((totalWidth < maxWidth) && (totalHeight < maxHeight)) {
 157.228 +    if (mode != 'dynamic') {
 157.229 +      dynamicMode();
 157.230 +    } else {
 157.231 +      resize();
 157.232 +    }
 157.233 +  } else if (mode != 'static') {
 157.234 +    staticMode();
 157.235 +  }
 157.236 +}
 157.237 +
 157.238 +function remember() {
 157.239 +  document.cookie = 'javascript=on; path=/; secure';
 157.240 +}
 157.241 +
 157.242 +window.onresize = function() {
 157.243 +  /*
 157.244 +  if (capable()) {
 157.245 +    layout();
 157.246 +  }
 157.247 +  */
 157.248 +  window.location.replace(unescape(window.location.pathname));
 157.249 +}
 157.250 +
 157.251 +window.onload = function() {
 157.252 +  if (capable()) {
 157.253 +    layout();
 157.254 +    remember();
 157.255 +  }
 157.256 +}
 157.257 +
 157.258 +/***********************************************************************/
 157.259 +/*                  Copyright and Trademark Statement                  */
 157.260 +/***********************************************************************/
 157.261 +/*                                                                     */
 157.262 +/*          All original textual and graphical site content:           */
 157.263 +/*                                                                     */
 157.264 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    */
 157.265 +/*  reserved.  Reproduction in whole or in part without written        */
 157.266 +/*  permission is prohibited.  interos and the interos logos are       */
 157.267 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 157.268 +/*  product, and service names mentioned herein may be the properties  */
 157.269 +/*  of their respective owners.  Comments in the interos.org forums    */
 157.270 +/*  are the properties of their respective authors.  All software      */
 157.271 +/*  developed in the forums is open source and belongs to everyone.    */
 157.272 +/*                                                                     */
 157.273 +/***********************************************************************/
 157.274 +/*                      e-mail: info@interos.com                       */
 157.275 +/***********************************************************************/
   158.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   158.2 +++ b/style/content_interos.com_ssl.css	Sat May 01 16:19:36 2010 -0400
   158.3 @@ -0,0 +1,39 @@
   158.4 +/*************************************************************/
   158.5 +/*          interos Standard Document Header - CSS           */
   158.6 +/*************************************************************/
   158.7 +/*         URIs:  https://interos.com/style/content.css      */
   158.8 +/*                https://www.interos.com/style/content.css  */
   158.9 +/*  Description:  Cascading Style Sheet for interos content  */
  158.10 +/*       Author:  Brent Angeline                             */
  158.11 +/*          CSS:  W3C-Validated CSS                          */
  158.12 +/*************************************************************/
  158.13 +
  158.14 +html, body {
  158.15 +  color: #000000;
  158.16 +  background: #808080;
  158.17 +  display: block;
  158.18 +}
  158.19 +#content {
  158.20 +  position: absolute;
  158.21 +  width: 100%;
  158.22 +  height: 100%;
  158.23 +}
  158.24 +
  158.25 +/************************************************************************/
  158.26 +/*                  Copyright and Trademark Statement                   */
  158.27 +/************************************************************************/
  158.28 +/*                                                                      */
  158.29 +/*           All original textual and graphical site content:           */
  158.30 +/*                                                                      */
  158.31 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights     */
  158.32 +/*  reserved.  Reproduction in whole or in part without written         */
  158.33 +/*  permission is prohibited.  interos and the interos logos are        */
  158.34 +/*  trademarks of Brent Angeline and interos LLC.  All other company    */
  158.35 +/*  names, product names, and services mentioned herein may be the      */
  158.36 +/*  property of their respective owners.  Comments in the interos.org   */
  158.37 +/*  forums are the property of their respective posters.  All software  */
  158.38 +/*  developed in the forums is open source and belongs to everyone.     */
  158.39 +/*                                                                      */
  158.40 +/************************************************************************/
  158.41 +/*                       e-mail: info@interos.com                       */
  158.42 +/************************************************************************/
   159.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   159.2 +++ b/style/default_interos.com.css	Sat May 01 16:19:36 2010 -0400
   159.3 @@ -0,0 +1,183 @@
   159.4 +/****************************************************************/
   159.5 +/*            interos Standard Document Header - CSS            */
   159.6 +/****************************************************************/
   159.7 +/*         URIs:  http://interos.com/sys/style/default.css      */
   159.8 +/*                http://*.interos.com/sys/style/default.css    */
   159.9 +/*  Description:  Default Cascading Style Sheet for interos     */
  159.10 +/*       Author:  Brent Angeline                                */
  159.11 +/*          CSS:  W3C-Validated CSS                             */
  159.12 +/****************************************************************/
  159.13 +
  159.14 +html, body, center, p, div, h1, h2, h3 {
  159.15 +  display: block;
  159.16 +}
  159.17 +html, body {
  159.18 +  color: #a0a0a0;
  159.19 +  background: #404040;
  159.20 +}
  159.21 +html {
  159.22 +  font: 1em sans-serif;
  159.23 +  margin: 0;
  159.24 +}
  159.25 +body {
  159.26 +  margin: 8px 19px 22px;
  159.27 +}
  159.28 +p {
  159.29 +  margin: 16px 0;
  159.30 +}
  159.31 +a {
  159.32 +  color: #d7d7d7;
  159.33 +  text-decoration: none;
  159.34 +}
  159.35 +a:hover, .box, #mainPanel a:active, #titlePanel a:active {
  159.36 +  color: #ffffff;
  159.37 +}
  159.38 +a:hover {
  159.39 +  text-decoration: underline;
  159.40 +}
  159.41 +a:active, #mainPanel a, #titlePanel a {
  159.42 +  color: #000000;
  159.43 +}
  159.44 +table {
  159.45 +  display: table;
  159.46 +  border-spacing: 2px;
  159.47 +  border-collapse: separate;
  159.48 +  margin-top: 0;
  159.49 +  margin-bottom: 0;
  159.50 +  text-indent: 0;
  159.51 +}
  159.52 +thead, tfoot, tbody {
  159.53 +  vertical-align: middle;
  159.54 +}
  159.55 +thead {
  159.56 +  display: table-header-group;
  159.57 +}
  159.58 +tfoot {
  159.59 +  display: table-footer-group;
  159.60 +  height: 1.17em;
  159.61 +}
  159.62 +tbody {
  159.63 +  display: table-row-group;
  159.64 +}
  159.65 +tr, th, td {
  159.66 +  vertical-align: inherit;
  159.67 +}
  159.68 +tr {
  159.69 +  display: table-row;
  159.70 +}
  159.71 +th, td {
  159.72 +  display: table-cell;
  159.73 +  padding: 1px 13px;
  159.74 +}
  159.75 +td {
  159.76 +  text-align: inherit;
  159.77 +}
  159.78 +h1, h2, #mainPanel p, #titlePanel p {
  159.79 +  padding: 0 16px;
  159.80 +}
  159.81 +h1, h3 {
  159.82 +  font-weight: bold;
  159.83 +}
  159.84 +h1 {
  159.85 +  font-size: 2em;
  159.86 +  margin: 21px 0;
  159.87 +}
  159.88 +h2 {
  159.89 +  font-weight: normal;
  159.90 +  font-size: 1.17em;
  159.91 +  margin: 19px 0 11px;
  159.92 +}
  159.93 +h3 {
  159.94 +  background: #85a4c4 url(/sys/style/images/box/head.gif) repeat-x;
  159.95 +  font-size: 1.17em;
  159.96 +  font-style: italic;
  159.97 +  margin: 19px 0;
  159.98 +  padding: 9px 13px;
  159.99 +  border-top: 1px solid #ffffff;
 159.100 +  border-bottom: 1px solid #bfbfbf;
 159.101 +}
 159.102 +strong {
 159.103 +  font-weight: bolder;
 159.104 +}
 159.105 +div p br {
 159.106 +  display: none;
 159.107 +}
 159.108 +.box {
 159.109 +  background: #808080;
 159.110 +  margin: 20px 2px 20px 0;
 159.111 +  padding-bottom: 8px;
 159.112 +  border-left: 1px solid #ffffff;
 159.113 +  border-right: 1px solid #ffffff;
 159.114 +  border-bottom: 1px solid #ffffff;
 159.115 +}
 159.116 +.box a {
 159.117 +  color: #bfefff;
 159.118 +}
 159.119 +.box a:hover {
 159.120 +  color: #def7ff;
 159.121 +}
 159.122 +.box a:active {
 159.123 +  color: #ffe6de;
 159.124 +}
 159.125 +.box p {
 159.126 +  padding: 0 19px;
 159.127 +}
 159.128 +#mainPanel, #titlePanel {
 159.129 +  color: #000000;
 159.130 +  border-top: 2px solid #fafafa;
 159.131 +  border-left: 2px solid #fafafa;
 159.132 +  border-bottom: 3px solid #050505;
 159.133 +  border-right: 3px solid #050505;
 159.134 +  z-index: 2;
 159.135 +}
 159.136 +#mainPanel {
 159.137 +  background: #bfbfbf url(/style/images/panel/main.gif) repeat-x;
 159.138 +}
 159.139 +#titlePanel {
 159.140 +  background: #bfbfbf url(/style/images/panel/title.gif) repeat-x;
 159.141 +  width: 100%;
 159.142 +}
 159.143 +#copyrightDates {
 159.144 +  font-size: .83em;
 159.145 +  margin-top: 22px;
 159.146 +}
 159.147 +#bottomLeft, #left, #topLeft, #top, #topRight, #right, #bottomRight, #bottom {
 159.148 +  position: absolute;
 159.149 +}
 159.150 +#bottomLeft, #left, #topLeft {
 159.151 +  width: 12px;
 159.152 +}
 159.153 +#bottomLeft, #bottomRight, #bottom {
 159.154 +  height: 18px;
 159.155 +}
 159.156 +#left, #right {
 159.157 +  z-index: 1;
 159.158 +}
 159.159 +#topLeft, #topRight {
 159.160 +  height: 96px;
 159.161 +}
 159.162 +#top {
 159.163 +  height: 12px;
 159.164 +}
 159.165 +#topRight, #right, #bottomRight {
 159.166 +  width: 18px;
 159.167 +}
 159.168 +
 159.169 +/************************************************************************/
 159.170 +/*                  Copyright and Trademark Statement                   */
 159.171 +/************************************************************************/
 159.172 +/*                                                                      */
 159.173 +/*           All original textual and graphical site content:           */
 159.174 +/*                                                                      */
 159.175 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights     */
 159.176 +/*  reserved.  Reproduction in whole or in part without written         */
 159.177 +/*  permission is prohibited.  interos and the interos logos are        */
 159.178 +/*  trademarks of Brent Angeline and interos LLC.  All other company    */
 159.179 +/*  names, product names, and services mentioned herein may be the      */
 159.180 +/*  property of their respective owners.  Comments in the interos.org   */
 159.181 +/*  forums are the property of their respective posters.  All software  */
 159.182 +/*  developed in the forums is open source and belongs to everyone.     */
 159.183 +/*                                                                      */
 159.184 +/************************************************************************/
 159.185 +/*                       e-mail: info@interos.com                       */
 159.186 +/************************************************************************/
   160.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   160.2 +++ b/style/default_interos.com_ssl.css	Sat May 01 16:19:36 2010 -0400
   160.3 @@ -0,0 +1,183 @@
   160.4 +/*************************************************************/
   160.5 +/*          interos Standard Document Header - CSS           */
   160.6 +/*************************************************************/
   160.7 +/*         URIs:  https://interos.com/style/default.css      */
   160.8 +/*                https://*.interos.com/style/default.css    */
   160.9 +/*  Description:  Default Cascading Style Sheet for interos  */
  160.10 +/*       Author:  Brent Angeline                             */
  160.11 +/*          CSS:  W3C-Validated CSS                          */
  160.12 +/*************************************************************/
  160.13 +
  160.14 +html, body, center, p, div, h1, h2, h3 {
  160.15 +  display: block;
  160.16 +}
  160.17 +html, body {
  160.18 +  color: #a0a0a0;
  160.19 +  background: #404040;
  160.20 +}
  160.21 +html {
  160.22 +  font: 1em sans-serif;
  160.23 +  margin: 0;
  160.24 +}
  160.25 +body {
  160.26 +  margin: 8px 19px 22px;
  160.27 +}
  160.28 +p {
  160.29 +  margin: 16px 0;
  160.30 +}
  160.31 +a {
  160.32 +  color: #d7d7d7;
  160.33 +  text-decoration: none;
  160.34 +}
  160.35 +a:hover, .box, #mainPanel a:active, #titlePanel a:active {
  160.36 +  color: #ffffff;
  160.37 +}
  160.38 +a:hover {
  160.39 +  text-decoration: underline;
  160.40 +}
  160.41 +a:active, #mainPanel a, #titlePanel a {
  160.42 +  color: #000000;
  160.43 +}
  160.44 +table {
  160.45 +  display: table;
  160.46 +  border-spacing: 2px;
  160.47 +  border-collapse: separate;
  160.48 +  margin-top: 0;
  160.49 +  margin-bottom: 0;
  160.50 +  text-indent: 0;
  160.51 +}
  160.52 +thead, tfoot, tbody {
  160.53 +  vertical-align: middle;
  160.54 +}
  160.55 +thead {
  160.56 +  display: table-header-group;
  160.57 +}
  160.58 +tfoot {
  160.59 +  display: table-footer-group;
  160.60 +  height: 1.17em;
  160.61 +}
  160.62 +tbody {
  160.63 +  display: table-row-group;
  160.64 +}
  160.65 +tr, th, td {
  160.66 +  vertical-align: inherit;
  160.67 +}
  160.68 +tr {
  160.69 +  display: table-row;
  160.70 +}
  160.71 +th, td {
  160.72 +  display: table-cell;
  160.73 +  padding: 1px 13px;
  160.74 +}
  160.75 +td {
  160.76 +  text-align: inherit;
  160.77 +}
  160.78 +h1, h2, #mainPanel p, #titlePanel p {
  160.79 +  padding: 0 16px;
  160.80 +}
  160.81 +h1, h3 {
  160.82 +  font-weight: bold;
  160.83 +}
  160.84 +h1 {
  160.85 +  font-size: 2em;
  160.86 +  margin: 21px 0;
  160.87 +}
  160.88 +h2 {
  160.89 +  font-weight: normal;
  160.90 +  font-size: 1.17em;
  160.91 +  margin: 19px 0 11px;
  160.92 +}
  160.93 +h3 {
  160.94 +  background: #85a4c4 url(/style/images/box/head.gif) repeat-x;
  160.95 +  font-size: 1.17em;
  160.96 +  font-style: italic;
  160.97 +  margin: 19px 0;
  160.98 +  padding: 9px 13px;
  160.99 +  border-top: 1px solid #ffffff;
 160.100 +  border-bottom: 1px solid #bfbfbf;
 160.101 +}
 160.102 +strong {
 160.103 +  font-weight: bolder;
 160.104 +}
 160.105 +div p br {
 160.106 +  display: none;
 160.107 +}
 160.108 +.box {
 160.109 +  background: #808080;
 160.110 +  margin: 20px 2px 20px 0;
 160.111 +  padding-bottom: 8px;
 160.112 +  border-left: 1px solid #ffffff;
 160.113 +  border-right: 1px solid #ffffff;
 160.114 +  border-bottom: 1px solid #ffffff;
 160.115 +}
 160.116 +.box a {
 160.117 +  color: #bfefff;
 160.118 +}
 160.119 +.box a:hover {
 160.120 +  color: #def7ff;
 160.121 +}
 160.122 +.box a:active {
 160.123 +  color: #ffe6de;
 160.124 +}
 160.125 +.box p {
 160.126 +  padding: 0 19px;
 160.127 +}
 160.128 +#mainPanel, #titlePanel {
 160.129 +  color: #000000;
 160.130 +  border-top: 2px solid #fafafa;
 160.131 +  border-left: 2px solid #fafafa;
 160.132 +  border-bottom: 3px solid #050505;
 160.133 +  border-right: 3px solid #050505;
 160.134 +  z-index: 2;
 160.135 +}
 160.136 +#mainPanel {
 160.137 +  background: #bfbfbf url(/style/images/panel/main.gif) repeat-x;
 160.138 +}
 160.139 +#titlePanel {
 160.140 +  background: #bfbfbf url(/style/images/panel/title.gif) repeat-x;
 160.141 +  width: 100%;
 160.142 +}
 160.143 +#copyrightDates {
 160.144 +  font-size: .83em;
 160.145 +  margin-top: 22px;
 160.146 +}
 160.147 +#bottomLeft, #left, #topLeft, #top, #topRight, #right, #bottomRight, #bottom {
 160.148 +  position: absolute;
 160.149 +}
 160.150 +#bottomLeft, #left, #topLeft {
 160.151 +  width: 12px;
 160.152 +}
 160.153 +#bottomLeft, #bottomRight, #bottom {
 160.154 +  height: 18px;
 160.155 +}
 160.156 +#left, #right {
 160.157 +  z-index: 1;
 160.158 +}
 160.159 +#topLeft, #topRight {
 160.160 +  height: 96px;
 160.161 +}
 160.162 +#top {
 160.163 +  height: 12px;
 160.164 +}
 160.165 +#topRight, #right, #bottomRight {
 160.166 +  width: 18px;
 160.167 +}
 160.168 +
 160.169 +/************************************************************************/
 160.170 +/*                  Copyright and Trademark Statement                   */
 160.171 +/************************************************************************/
 160.172 +/*                                                                      */
 160.173 +/*           All original textual and graphical site content:           */
 160.174 +/*                                                                      */
 160.175 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights     */
 160.176 +/*  reserved.  Reproduction in whole or in part without written         */
 160.177 +/*  permission is prohibited.  interos and the interos logos are        */
 160.178 +/*  trademarks of Brent Angeline and interos LLC.  All other company    */
 160.179 +/*  names, product names, and services mentioned herein may be the      */
 160.180 +/*  property of their respective owners.  Comments in the interos.org   */
 160.181 +/*  forums are the property of their respective posters.  All software  */
 160.182 +/*  developed in the forums is open source and belongs to everyone.     */
 160.183 +/*                                                                      */
 160.184 +/************************************************************************/
 160.185 +/*                       e-mail: info@interos.com                       */
 160.186 +/************************************************************************/
   161.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   161.2 +++ b/style/default_interos.org.css	Sat May 01 16:19:36 2010 -0400
   161.3 @@ -0,0 +1,186 @@
   161.4 +/*************************************************************/
   161.5 +/*          interos Standard Document Header - CSS           */
   161.6 +/*************************************************************/
   161.7 +/*         URIs:  http://interos.org/style/default.css       */
   161.8 +/*                http://*.interos.org/style/default.css     */
   161.9 +/*  Description:  Default Cascading Style Sheet for interos  */
  161.10 +/*       Author:  Brent Angeline                             */
  161.11 +/*          CSS:  W3C-Validated CSS                          */
  161.12 +/*************************************************************/
  161.13 +
  161.14 +html, body, center, p, div, h1, h2, h3 {
  161.15 +  display: block;
  161.16 +}
  161.17 +html, body {
  161.18 +  color: #a0a0a0;
  161.19 +  background: #404040;
  161.20 +}
  161.21 +html {
  161.22 +  font: 1em sans-serif;
  161.23 +  margin: 0;
  161.24 +}
  161.25 +body {
  161.26 +  margin: 8px 19px 22px;
  161.27 +}
  161.28 +p {
  161.29 +  margin: 16px 0;
  161.30 +}
  161.31 +a {
  161.32 +  color: #d7d7d7;
  161.33 +  text-decoration: none;
  161.34 +}
  161.35 +a:hover, .box, #mainPanel a:active, #titlePanel a:active {
  161.36 +  color: #ffffff;
  161.37 +}
  161.38 +a:hover {
  161.39 +  text-decoration: underline;
  161.40 +}
  161.41 +a:active, #mainPanel a, #titlePanel a {
  161.42 +  color: #000000;
  161.43 +}
  161.44 +table {
  161.45 +  display: table;
  161.46 +  border-spacing: 2px;
  161.47 +  border-collapse: separate;
  161.48 +  margin-top: 0;
  161.49 +  margin-bottom: 0;
  161.50 +  text-indent: 0;
  161.51 +}
  161.52 +thead, tfoot, tbody {
  161.53 +  vertical-align: middle;
  161.54 +}
  161.55 +thead {
  161.56 +  display: table-header-group;
  161.57 +}
  161.58 +tfoot {
  161.59 +  display: table-footer-group;
  161.60 +  height: 1.17em;
  161.61 +}
  161.62 +tbody {
  161.63 +  display: table-row-group;
  161.64 +}
  161.65 +tr, th, td {
  161.66 +  vertical-align: inherit;
  161.67 +}
  161.68 +tr {
  161.69 +  display: table-row;
  161.70 +}
  161.71 +th, td {
  161.72 +  display: table-cell;
  161.73 +  padding: 1px 13px;
  161.74 +}
  161.75 +td {
  161.76 +  text-align: inherit;
  161.77 +}
  161.78 +h1, h2, #mainPanel p, #titlePanel p {
  161.79 +  padding: 0 16px;
  161.80 +}
  161.81 +h1, h3 {
  161.82 +  font-weight: bold;
  161.83 +}
  161.84 +h1 {
  161.85 +  font-size: 2em;
  161.86 +  margin: 21px 0;
  161.87 +}
  161.88 +h2 {
  161.89 +  font-weight: normal;
  161.90 +  font-size: 1.17em;
  161.91 +  margin: 19px 0 11px;
  161.92 +}
  161.93 +h3 {
  161.94 +  background: #85a4c4 url(/style/images/box/head.gif) repeat-x;
  161.95 +  font-size: 1.17em;
  161.96 +  font-style: italic;
  161.97 +  margin: 19px 0;
  161.98 +  padding: 9px 13px;
  161.99 +  border-top: 1px solid #ffffff;
 161.100 +  border-bottom: 1px solid #bfbfbf;
 161.101 +}
 161.102 +strong {
 161.103 +  font-weight: bolder;
 161.104 +}
 161.105 +div p br {
 161.106 +  display: none;
 161.107 +}
 161.108 +.default {
 161.109 +  margin-top: 12px;
 161.110 +}
 161.111 +.box {
 161.112 +  background: #808080;
 161.113 +  margin: 20px 2px 20px 0;
 161.114 +  padding-bottom: 8px;
 161.115 +  border-left: 1px solid #ffffff;
 161.116 +  border-right: 1px solid #ffffff;
 161.117 +  border-bottom: 1px solid #ffffff;
 161.118 +}
 161.119 +.box a {
 161.120 +  color: #bfefff;
 161.121 +}
 161.122 +.box a:hover {
 161.123 +  color: #def7ff;
 161.124 +}
 161.125 +.box a:active {
 161.126 +  color: #ffe6de;
 161.127 +}
 161.128 +.box p {
 161.129 +  padding: 0 19px;
 161.130 +}
 161.131 +#mainPanel, #titlePanel {
 161.132 +  color: #000000;
 161.133 +  border-top: 2px solid #fafafa;
 161.134 +  border-left: 2px solid #fafafa;
 161.135 +  border-bottom: 3px solid #050505;
 161.136 +  border-right: 3px solid #050505;
 161.137 +  z-index: 2;
 161.138 +}
 161.139 +#mainPanel {
 161.140 +  background: #bfbfbf url(/style/images/panel/main.gif) repeat-x;
 161.141 +}
 161.142 +#titlePanel {
 161.143 +  background: #bfbfbf url(/style/images/panel/title.gif) repeat-x;
 161.144 +  width: 100%;
 161.145 +}
 161.146 +#copyrightDates {
 161.147 +  font-size: .83em;
 161.148 +  margin-top: 22px;
 161.149 +}
 161.150 +#bottomLeft, #left, #topLeft, #top, #topRight, #right, #bottomRight, #bottom {
 161.151 +  position: absolute;
 161.152 +}
 161.153 +#bottomLeft, #left, #topLeft {
 161.154 +  width: 12px;
 161.155 +}
 161.156 +#bottomLeft, #bottomRight, #bottom {
 161.157 +  height: 18px;
 161.158 +}
 161.159 +#left, #right {
 161.160 +  z-index: 1;
 161.161 +}
 161.162 +#topLeft, #topRight {
 161.163 +  height: 96px;
 161.164 +}
 161.165 +#top {
 161.166 +  height: 12px;
 161.167 +}
 161.168 +#topRight, #right, #bottomRight {
 161.169 +  width: 18px;
 161.170 +}
 161.171 +
 161.172 +/************************************************************************/
 161.173 +/*                  Copyright and Trademark Statement                   */
 161.174 +/************************************************************************/
 161.175 +/*                                                                      */
 161.176 +/*           All original textual and graphical site content:           */
 161.177 +/*                                                                      */
 161.178 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights     */
 161.179 +/*  reserved.  Reproduction in whole or in part without written         */
 161.180 +/*  permission is prohibited.  interos and the interos logos are        */
 161.181 +/*  trademarks of Brent Angeline and interos LLC.  All other company    */
 161.182 +/*  names, product names, and services mentioned herein may be the      */
 161.183 +/*  property of their respective owners.  Comments in the interos.org   */
 161.184 +/*  forums are the property of their respective posters.  All software  */
 161.185 +/*  developed in the forums is open source and belongs to everyone.     */
 161.186 +/*                                                                      */
 161.187 +/************************************************************************/
 161.188 +/*                       e-mail: info@interos.org                       */
 161.189 +/************************************************************************/
   162.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   162.2 +++ b/style/default_interos.org_ssl.css	Sat May 01 16:19:36 2010 -0400
   162.3 @@ -0,0 +1,186 @@
   162.4 +/*************************************************************/
   162.5 +/*          interos Standard Document Header - CSS           */
   162.6 +/*************************************************************/
   162.7 +/*         URIs:  https://interos.org/style/default.css      */
   162.8 +/*                https://*.interos.org/style/default.css    */
   162.9 +/*  Description:  Default Cascading Style Sheet for interos  */
  162.10 +/*       Author:  Brent Angeline                             */
  162.11 +/*          CSS:  W3C-Validated CSS                          */
  162.12 +/*************************************************************/
  162.13 +
  162.14 +html, body, center, p, div, h1, h2, h3 {
  162.15 +  display: block;
  162.16 +}
  162.17 +html, body {
  162.18 +  color: #a0a0a0;
  162.19 +  background: #404040;
  162.20 +}
  162.21 +html {
  162.22 +  font: 1em sans-serif;
  162.23 +  margin: 0;
  162.24 +}
  162.25 +body {
  162.26 +  margin: 8px 19px 22px;
  162.27 +}
  162.28 +p {
  162.29 +  margin: 16px 0;
  162.30 +}
  162.31 +a {
  162.32 +  color: #d7d7d7;
  162.33 +  text-decoration: none;
  162.34 +}
  162.35 +a:hover, .box, #mainPanel a:active, #titlePanel a:active {
  162.36 +  color: #ffffff;
  162.37 +}
  162.38 +a:hover {
  162.39 +  text-decoration: underline;
  162.40 +}
  162.41 +a:active, #mainPanel a, #titlePanel a {
  162.42 +  color: #000000;
  162.43 +}
  162.44 +table {
  162.45 +  display: table;
  162.46 +  border-spacing: 2px;
  162.47 +  border-collapse: separate;
  162.48 +  margin-top: 0;
  162.49 +  margin-bottom: 0;
  162.50 +  text-indent: 0;
  162.51 +}
  162.52 +thead, tfoot, tbody {
  162.53 +  vertical-align: middle;
  162.54 +}
  162.55 +thead {
  162.56 +  display: table-header-group;
  162.57 +}
  162.58 +tfoot {
  162.59 +  display: table-footer-group;
  162.60 +  height: 1.17em;
  162.61 +}
  162.62 +tbody {
  162.63 +  display: table-row-group;
  162.64 +}
  162.65 +tr, th, td {
  162.66 +  vertical-align: inherit;
  162.67 +}
  162.68 +tr {
  162.69 +  display: table-row;
  162.70 +}
  162.71 +th, td {
  162.72 +  display: table-cell;
  162.73 +  padding: 1px 13px;
  162.74 +}
  162.75 +td {
  162.76 +  text-align: inherit;
  162.77 +}
  162.78 +h1, h2, #mainPanel p, #titlePanel p {
  162.79 +  padding: 0 16px;
  162.80 +}
  162.81 +h1, h3 {
  162.82 +  font-weight: bold;
  162.83 +}
  162.84 +h1 {
  162.85 +  font-size: 2em;
  162.86 +  margin: 21px 0;
  162.87 +}
  162.88 +h2 {
  162.89 +  font-weight: normal;
  162.90 +  font-size: 1.17em;
  162.91 +  margin: 19px 0 11px;
  162.92 +}
  162.93 +h3 {
  162.94 +  background: #85a4c4 url(/style/images/box/head.gif) repeat-x;
  162.95 +  font-size: 1.17em;
  162.96 +  font-style: italic;
  162.97 +  margin: 19px 0;
  162.98 +  padding: 9px 13px;
  162.99 +  border-top: 1px solid #ffffff;
 162.100 +  border-bottom: 1px solid #bfbfbf;
 162.101 +}
 162.102 +strong {
 162.103 +  font-weight: bolder;
 162.104 +}
 162.105 +div p br {
 162.106 +  display: none;
 162.107 +}
 162.108 +.default {
 162.109 +  margin-top: 12px;
 162.110 +}
 162.111 +.box {
 162.112 +  background: #808080;
 162.113 +  margin: 20px 2px 20px 0;
 162.114 +  padding-bottom: 8px;
 162.115 +  border-left: 1px solid #ffffff;
 162.116 +  border-right: 1px solid #ffffff;
 162.117 +  border-bottom: 1px solid #ffffff;
 162.118 +}
 162.119 +.box a {
 162.120 +  color: #bfefff;
 162.121 +}
 162.122 +.box a:hover {
 162.123 +  color: #def7ff;
 162.124 +}
 162.125 +.box a:active {
 162.126 +  color: #ffe6de;
 162.127 +}
 162.128 +.box p {
 162.129 +  padding: 0 19px;
 162.130 +}
 162.131 +#mainPanel, #titlePanel {
 162.132 +  color: #000000;
 162.133 +  border-top: 2px solid #fafafa;
 162.134 +  border-left: 2px solid #fafafa;
 162.135 +  border-bottom: 3px solid #050505;
 162.136 +  border-right: 3px solid #050505;
 162.137 +  z-index: 2;
 162.138 +}
 162.139 +#mainPanel {
 162.140 +  background: #bfbfbf url(/style/images/panel/main.gif) repeat-x;
 162.141 +}
 162.142 +#titlePanel {
 162.143 +  background: #bfbfbf url(/style/images/panel/title.gif) repeat-x;
 162.144 +  width: 100%;
 162.145 +}
 162.146 +#copyrightDates {
 162.147 +  font-size: .83em;
 162.148 +  margin-top: 22px;
 162.149 +}
 162.150 +#bottomLeft, #left, #topLeft, #top, #topRight, #right, #bottomRight, #bottom {
 162.151 +  position: absolute;
 162.152 +}
 162.153 +#bottomLeft, #left, #topLeft {
 162.154 +  width: 12px;
 162.155 +}
 162.156 +#bottomLeft, #bottomRight, #bottom {
 162.157 +  height: 18px;
 162.158 +}
 162.159 +#left, #right {
 162.160 +  z-index: 1;
 162.161 +}
 162.162 +#topLeft, #topRight {
 162.163 +  height: 96px;
 162.164 +}
 162.165 +#top {
 162.166 +  height: 12px;
 162.167 +}
 162.168 +#topRight, #right, #bottomRight {
 162.169 +  width: 18px;
 162.170 +}
 162.171 +
 162.172 +/************************************************************************/
 162.173 +/*                  Copyright and Trademark Statement                   */
 162.174 +/************************************************************************/
 162.175 +/*                                                                      */
 162.176 +/*           All original textual and graphical site content:           */
 162.177 +/*                                                                      */
 162.178 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights     */
 162.179 +/*  reserved.  Reproduction in whole or in part without written         */
 162.180 +/*  permission is prohibited.  interos and the interos logos are        */
 162.181 +/*  trademarks of Brent Angeline and interos LLC.  All other company    */
 162.182 +/*  names, product names, and services mentioned herein may be the      */
 162.183 +/*  property of their respective owners.  Comments in the interos.org   */
 162.184 +/*  forums are the property of their respective posters.  All software  */
 162.185 +/*  developed in the forums is open source and belongs to everyone.     */
 162.186 +/*                                                                      */
 162.187 +/************************************************************************/
 162.188 +/*                       e-mail: info@interos.org                       */
 162.189 +/************************************************************************/
   163.1 Binary file style/images/box/head.gif has changed
   164.1 Binary file style/images/box/highlight.gif has changed
   165.1 Binary file style/images/buttons/new.gif has changed
   166.1 Binary file style/images/buttons/new_down.gif has changed
   167.1 Binary file style/images/buttons/new_faded.gif has changed
   168.1 Binary file style/images/buttons/new_up.gif has changed
   169.1 Binary file style/images/buttons/new_up_faded.gif has changed
   170.1 Binary file style/images/buttons/next.gif has changed
   171.1 Binary file style/images/buttons/next_down.gif has changed
   172.1 Binary file style/images/buttons/next_faded.gif has changed
   173.1 Binary file style/images/buttons/next_up.gif has changed
   174.1 Binary file style/images/buttons/next_up_faded.gif has changed
   175.1 Binary file style/images/buttons/open.gif has changed
   176.1 Binary file style/images/buttons/open_down.gif has changed
   177.1 Binary file style/images/buttons/open_faded.gif has changed
   178.1 Binary file style/images/buttons/open_up.gif has changed
   179.1 Binary file style/images/buttons/open_up_faded.gif has changed
   180.1 Binary file style/images/buttons/settings.gif has changed
   181.1 Binary file style/images/buttons/settings_down.gif has changed
   182.1 Binary file style/images/buttons/settings_faded.gif has changed
   183.1 Binary file style/images/buttons/settings_up.gif has changed
   184.1 Binary file style/images/buttons/settings_up_faded.gif has changed
   185.1 Binary file style/images/menu/active.gif has changed
   186.1 Binary file style/images/menu/new_hover.gif has changed
   187.1 Binary file style/images/menu/new_top.gif has changed
   188.1 Binary file style/images/menu/next_hover.gif has changed
   189.1 Binary file style/images/menu/next_top.gif has changed
   190.1 Binary file style/images/menu/open_hover.gif has changed
   191.1 Binary file style/images/menu/open_top.gif has changed
   192.1 Binary file style/images/menu/settings_hover.gif has changed
   193.1 Binary file style/images/menu/settings_top.gif has changed
   194.1 Binary file style/images/panel/main.gif has changed
   195.1 Binary file style/images/panel/title.gif has changed
   196.1 Binary file style/images/panel/welcome.gif has changed
   197.1 Binary file style/images/toolbar.gif has changed
   198.1 Binary file style/images/toolbar_shaded.gif has changed
   199.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   199.2 +++ b/style/login_interos.com_ssl.css	Sat May 01 16:19:36 2010 -0400
   199.3 @@ -0,0 +1,200 @@
   199.4 +/***********************************************************/
   199.5 +/*         interos Standard Document Header - CSS          */
   199.6 +/***********************************************************/
   199.7 +/*         URIs:  https://interos.com/style/login.css      */
   199.8 +/*                https://www.interos.com/style/login.css  */
   199.9 +/*  Description:  Cascading Style Sheet for interos login  */
  199.10 +/*       Author:  Brent Angeline                           */
  199.11 +/*          CSS:  W3C-Validated CSS                        */
  199.12 +/***********************************************************/
  199.13 +
  199.14 +html, body, center, p, form, h1, h2, div {
  199.15 +  display: block;
  199.16 +}
  199.17 +html, body {
  199.18 +  color: #a0a0a0;
  199.19 +  background: #404040;
  199.20 +}
  199.21 +html {
  199.22 +  font: 1em sans-serif;
  199.23 +  margin: 0;
  199.24 +}
  199.25 +body {
  199.26 +  margin: 8px 0 3px;
  199.27 +}
  199.28 +p {
  199.29 +  margin: 16px 0;
  199.30 +}
  199.31 +a {
  199.32 +  color: #d7d7d7;
  199.33 +  text-decoration: none;
  199.34 +}
  199.35 +a:hover, #mainPanel a:active, #newUser a:hover strong {
  199.36 +  color: #ffffff;
  199.37 +}
  199.38 +a:hover {
  199.39 +  text-decoration: underline;
  199.40 +}
  199.41 +a:active, #mainPanel, #mainPanel a, #newUser a:active strong {
  199.42 +  color: #000000;
  199.43 +}
  199.44 +table {
  199.45 +  display: table;
  199.46 +  border-spacing: 2px;
  199.47 +  border-collapse: separate;
  199.48 +  margin-top: 0;
  199.49 +  margin-bottom: 0;
  199.50 +  text-indent: 0;
  199.51 +}
  199.52 +thead, tfoot, tbody {
  199.53 +  vertical-align: middle;
  199.54 +}
  199.55 +thead {
  199.56 +  display: table-header-group;
  199.57 +}
  199.58 +tfoot {
  199.59 +  display: table-footer-group;
  199.60 +}
  199.61 +tfoot td {
  199.62 +  height: 2.17em;
  199.63 +}
  199.64 +tbody {
  199.65 +  display: table-row-group;
  199.66 +}
  199.67 +tr, th, td {
  199.68 +  vertical-align: inherit;
  199.69 +}
  199.70 +tr {
  199.71 +  display: table-row;
  199.72 +}
  199.73 +th, td {
  199.74 +  display: table-cell;
  199.75 +  padding: 1px;
  199.76 +}
  199.77 +td {
  199.78 +  text-align: left;
  199.79 +}
  199.80 +h1, h2 {
  199.81 +  font-weight: bold;
  199.82 +}
  199.83 +h1 {
  199.84 +  font-size: 2em;
  199.85 +  margin: 21px 0;
  199.86 +}
  199.87 +h2 {
  199.88 +  font-weight: normal;
  199.89 +  font-size: 1.17em;
  199.90 +  margin: 19px 0 27px;
  199.91 +}
  199.92 +label {
  199.93 +  font-size: 1.08em;
  199.94 +  margin: 0 4px 0 28px;
  199.95 +}
  199.96 +strong {
  199.97 +  font-weight: bolder;
  199.98 +}
  199.99 +div p br, tfoot td br {
 199.100 +  display: none;
 199.101 +}
 199.102 +#mainPanel {
 199.103 +  background: #bfbfbf url(/style/images/panel/main.gif) repeat-x;
 199.104 +  border-top: 2px solid #fafafa;
 199.105 +  border-left: 2px solid #fafafa;
 199.106 +  border-bottom: 3px solid #050505;
 199.107 +  border-right: 3px solid #050505;
 199.108 +  z-index: 2;
 199.109 +}
 199.110 +#login, #password, #copyrightDates {
 199.111 +  font: .83em sans-serif;
 199.112 +}
 199.113 +#submitButton {
 199.114 +  text-align: center;
 199.115 +  margin: 0 28px 0 4px;
 199.116 +  width: 5.125em;
 199.117 +}
 199.118 +#newUser a strong {
 199.119 +  color: #e7e7e7;
 199.120 +}
 199.121 +#copyrightDates {
 199.122 +  margin-top: 22px;
 199.123 +}
 199.124 +#bottomLeft, #left, #topLeft, #top, #topRight, #right, #bottomRight, #bottom, 
 199.125 +#i, #nteros, 
 199.126 +#newButton, #nextButton, #openButton, #settingsButton, 
 199.127 +#newLabel, #openLabel, #nextLabel, #settingsLabel {
 199.128 +  position: absolute;
 199.129 +}
 199.130 +#bottomLeft, #left, #topLeft {
 199.131 +  width: 12px;
 199.132 +}
 199.133 +#bottomLeft, #bottomRight, #bottom {
 199.134 +  height: 18px;
 199.135 +}
 199.136 +#left, #right {
 199.137 +  z-index: 1;
 199.138 +}
 199.139 +#topLeft, #topRight {
 199.140 +  height: 53px;
 199.141 +}
 199.142 +#top {
 199.143 +  height: 12px;
 199.144 +}
 199.145 +#topRight, #right, #bottomRight {
 199.146 +  width: 18px;
 199.147 +}
 199.148 +#i, #nteros {
 199.149 +  height: 60px;
 199.150 +  z-index: 3;
 199.151 +}
 199.152 +#i {
 199.153 +  width: 52px;
 199.154 +}
 199.155 +#nteros {
 199.156 +  width: 284px;
 199.157 +}
 199.158 +#newButton, #openButton, #nextButton, #settingsButton {
 199.159 +  width: 72px;
 199.160 +  height: 72px;
 199.161 +}
 199.162 +#newLabel, #openLabel, #nextLabel, #settingsLabel {
 199.163 +  font-size: 24px;
 199.164 +}
 199.165 +#newLabel {
 199.166 +  color: #15c015;
 199.167 +  left: 80px;
 199.168 +  bottom: 22px;
 199.169 +}
 199.170 +#openLabel {
 199.171 +  color: #c0c015;
 199.172 +  left: 80px;
 199.173 +  top: 22px;
 199.174 +}
 199.175 +#nextLabel {
 199.176 +  color: #c05959;
 199.177 +  right: 80px;
 199.178 +  top: 22px;
 199.179 +}
 199.180 +#settingsLabel {
 199.181 +  color: #158ab5;
 199.182 +  right: 80px;
 199.183 +  bottom: 22px;
 199.184 +}
 199.185 +
 199.186 +/************************************************************************/
 199.187 +/*                  Copyright and Trademark Statement                   */
 199.188 +/************************************************************************/
 199.189 +/*                                                                      */
 199.190 +/*           All original textual and graphical site content:           */
 199.191 +/*                                                                      */
 199.192 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights     */
 199.193 +/*  reserved.  Reproduction in whole or in part without written         */
 199.194 +/*  permission is prohibited.  interos and the interos logos are        */
 199.195 +/*  trademarks of Brent Angeline and interos LLC.  All other company    */
 199.196 +/*  names, product names, and services mentioned herein may be the      */
 199.197 +/*  property of their respective owners.  Comments in the interos.org   */
 199.198 +/*  forums are the property of their respective posters.  All software  */
 199.199 +/*  developed in the forums is open source and belongs to everyone.     */
 199.200 +/*                                                                      */
 199.201 +/************************************************************************/
 199.202 +/*                       e-mail: info@interos.com                       */
 199.203 +/************************************************************************/
   200.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   200.2 +++ b/style/main_interos.com_ssl.css	Sat May 01 16:19:36 2010 -0400
   200.3 @@ -0,0 +1,260 @@
   200.4 +/**********************************************************/
   200.5 +/*         interos Standard Document Header - CSS         */
   200.6 +/**********************************************************/
   200.7 +/*         URIs:  https://interos.com/style/main.css      */
   200.8 +/*                https://www.interos.com/style/main.css  */
   200.9 +/*  Description:  Cascading Style Sheet for interos main  */
  200.10 +/*       Author:  Brent Angeline                          */
  200.11 +/*          CSS:  W3C-Validated CSS                       */
  200.12 +/**********************************************************/
  200.13 +
  200.14 +html, frameset, body, center, table, p, h1, h2, h3, div, 
  200.15 +#openButton, #nextButton, #openMenuButton, #nextMenuButton, 
  200.16 +#newButton, #settingsButton, #newMenuButton, #settingsMenuButton {
  200.17 +  display: block;
  200.18 +}
  200.19 +html, frameset, body {
  200.20 +  color: #c0c0c0;
  200.21 +  background: #808080;
  200.22 +  font: 1em sans-serif;
  200.23 +  margin: 0;
  200.24 +}
  200.25 +p {
  200.26 +  margin: 16px 0;
  200.27 +}
  200.28 +a {
  200.29 +  color: #d7d7d7;
  200.30 +  text-decoration: none;
  200.31 +}
  200.32 +a:hover, .box, #welcomePanel a:active {
  200.33 +  color: #ffffff;
  200.34 +}
  200.35 +a:hover {
  200.36 +  text-decoration: underline;
  200.37 +}
  200.38 +a:active, #welcomePanel a {
  200.39 +  color: #000000;
  200.40 +}
  200.41 +a:focus {
  200.42 +  outline-offset: -1px;
  200.43 +}
  200.44 +table {
  200.45 +  display: table;
  200.46 +  border-collapse: separate;
  200.47 +  margin-top: 0;
  200.48 +  margin-bottom: 0;
  200.49 +  text-indent: 0;
  200.50 +}
  200.51 +thead, tfoot, tbody {
  200.52 +  vertical-align: middle;
  200.53 +}
  200.54 +thead {
  200.55 +  display: table-header-group;
  200.56 +}
  200.57 +tfoot {
  200.58 +  display: table-footer-group;
  200.59 +}
  200.60 +tbody {
  200.61 +  display: table-row-group;
  200.62 +}
  200.63 +tr, th, td {
  200.64 +  vertical-align: inherit;
  200.65 +}
  200.66 +tr {
  200.67 +  display: table-row;
  200.68 +}
  200.69 +th, td {
  200.70 +  display: table-cell;
  200.71 +}
  200.72 +td {
  200.73 +  text-align: inherit;
  200.74 +}
  200.75 +h1, h2, h3 {
  200.76 +  font-weight: bold;
  200.77 +}
  200.78 +strong {
  200.79 +  font-weight: bolder;
  200.80 +}
  200.81 +.bottom {
  200.82 +  position: absolute;
  200.83 +  left: 0;
  200.84 +  bottom: 0;
  200.85 +}
  200.86 +.hidden {
  200.87 +  display: none;
  200.88 +}
  200.89 +#topToolbar, #bottomToolbar, #topToolbarFaded, #bottomToolbarFaded {
  200.90 +  border-spacing: 0;
  200.91 +  height: 72px;
  200.92 +}
  200.93 +#topToolbar td, #bottomToolbar td, #topToolbarFaded td, #bottomToolbarFaded td {
  200.94 +  padding: 0;
  200.95 +}
  200.96 +#topToolbar a, #bottomToolbar a, #topToolbarFaded a, #bottomToolbarFaded a {
  200.97 +  font-style: italic;
  200.98 +  text-decoration: none;
  200.99 +}
 200.100 +#topToolbar a:hover, #bottomToolbar a:hover, 
 200.101 +#topToolbarFaded a:hover, #bottomToolbarFaded a:hover {
 200.102 +  text-decoration: underline;
 200.103 +}
 200.104 +#openButton {
 200.105 +  color: #eaeaea;
 200.106 +  background: #a9a95a url(/style/images/buttons/open_faded.gif) repeat-x;
 200.107 +  width: 100%;
 200.108 +}
 200.109 +#openButton:hover {
 200.110 +  color: #ffffff;
 200.111 +  background: #9e9e28 url(/style/images/buttons/open.gif) repeat-x;
 200.112 +}
 200.113 +#openMenuButton {
 200.114 +  color: #eaeaea;
 200.115 +  background: #6c6d25 url(/style/images/buttons/open_up_faded.gif) repeat-x;
 200.116 +  width: 100%;
 200.117 +}
 200.118 +#openMenuButton:hover {
 200.119 +  color: #ffffff;
 200.120 +  background: #868942 url(/style/images/buttons/open_up.gif) repeat-x;
 200.121 +}
 200.122 +#openButton:active, #openMenuButton:active {
 200.123 +  color: #000000;
 200.124 +  background: #c1c154 url(/style/images/buttons/open_down.gif) repeat-x;
 200.125 +}
 200.126 +#topToolbar, #bottomToolbar {
 200.127 +  color: #000000;
 200.128 +  background: #c0c0c0 url(/style/images/toolbar.gif) repeat-x;
 200.129 +}
 200.130 +#topToolbarFaded, #topToolbarCornerFaded, 
 200.131 +#bottomToolbarFaded, #bottomToolbarCornerFaded {
 200.132 +  color: #000000;
 200.133 +  background: #c0c0c0 url(/style/images/toolbar_shaded.gif) repeat-x;
 200.134 +}
 200.135 +#nextButton {
 200.136 +  color: #eaeaea;
 200.137 +  background: #a95a5a url(/style/images/buttons/next_faded.gif) repeat-x;
 200.138 +  width: 100%;
 200.139 +}
 200.140 +#nextButton:hover {
 200.141 +  color: #ffffff;
 200.142 +  background: #9e2828 url(/style/images/buttons/next.gif) repeat-x;
 200.143 +}
 200.144 +#nextMenuButton {
 200.145 +  color: #eaeaea;
 200.146 +  background: #6c2525 url(/style/images/buttons/next_up_faded.gif) repeat-x;
 200.147 +  width: 100%;
 200.148 +}
 200.149 +#nextMenuButton:hover {
 200.150 +  color: #ffffff;
 200.151 +  background: #894342 url(/style/images/buttons/next_up.gif) repeat-x;
 200.152 +}
 200.153 +#nextButton:active, #nextMenuButton:active {
 200.154 +  color: #000000;
 200.155 +  background: #be494c url(/style/images/buttons/next_down.gif) repeat-x;
 200.156 +}
 200.157 +#welcomePanel {
 200.158 +  position: relative;
 200.159 +  color: #000000;
 200.160 +  background: #dfdfdf url(/style/images/panel/welcome.gif) repeat-x;
 200.161 +  border-spacing: 2px;
 200.162 +  border-top: 2px solid #fafafa;
 200.163 +  border-left: 2px solid #fafafa;
 200.164 +  border-bottom: 3px solid #050505;
 200.165 +  border-right: 3px solid #050505;
 200.166 +  margin: 0 8px;
 200.167 +  top: -18px;
 200.168 +}
 200.169 +#welcomePanel th, #welcomePanel td {
 200.170 +  padding: 1px 13px;
 200.171 +}
 200.172 +#welcomePanel th {
 200.173 +  border-bottom: 1px solid #bfbfbf;
 200.174 +}
 200.175 +#welcomePanel h1, #welcomePanel h2, #welcomePanel p {
 200.176 +  padding: 0 16px;
 200.177 +}
 200.178 +#welcomePanel h1 {
 200.179 +  font-size: 2em;
 200.180 +  margin: 21px 0;
 200.181 +}
 200.182 +#welcomePanel h2 {
 200.183 +  font-size: 1.17em;
 200.184 +  margin: 19px 0 11px;
 200.185 +}
 200.186 +#welcomePanel tfoot {
 200.187 +  height: 1.17em;
 200.188 +}
 200.189 +#new, #try {
 200.190 +  color: #5f9e28;
 200.191 +}
 200.192 +#open {
 200.193 +  color: #9e9e28;
 200.194 +}
 200.195 +#next {
 200.196 +  color: #9e2828;
 200.197 +}
 200.198 +#settings {
 200.199 +  color: #2828bc;
 200.200 +}
 200.201 +#newButton {
 200.202 +  color: #eaeaea;
 200.203 +  background: #7fa85a url(/style/images/buttons/new_faded.gif) repeat-x;
 200.204 +  width: 100%;
 200.205 +}
 200.206 +#newButton:hover {
 200.207 +  color: #ffffff;
 200.208 +  background: #5f9e28 url(/style/images/buttons/new.gif) repeat-x;
 200.209 +}
 200.210 +#newMenuButton {
 200.211 +  color: #eaeaea;
 200.212 +  background: #476d25 url(/style/images/buttons/new_up_faded.gif) repeat-x;
 200.213 +  width: 100%;
 200.214 +}
 200.215 +#newMenuButton:hover {
 200.216 +  color: #ffffff;
 200.217 +  background: #6d9447 url(/style/images/buttons/new_up.gif) repeat-x;
 200.218 +}
 200.219 +#newButton:active, #newMenuButton:active {
 200.220 +  color: #000000;
 200.221 +  background: #8fc154 url(/style/images/buttons/new_down.gif) repeat-x;
 200.222 +}
 200.223 +#settingsButton {
 200.224 +  color: #eaeaea;
 200.225 +  background: #5a5abd url(/style/images/buttons/settings_faded.gif) repeat-x;
 200.226 +  width: 100%;
 200.227 +}
 200.228 +#settingsButton:hover {
 200.229 +  color: #ffffff;
 200.230 +  background: #2828bc url(/style/images/buttons/settings.gif) repeat-x;
 200.231 +}
 200.232 +#settingsMenuButton {
 200.233 +  color: #eaeaea;
 200.234 +  background: #25257d url(/style/images/buttons/settings_up_faded.gif) repeat-x;
 200.235 +  width: 100%;
 200.236 +}
 200.237 +#settingsMenuButton:hover {
 200.238 +  color: #ffffff;
 200.239 +  background: #4747a3 url(/style/images/buttons/settings_up.gif) repeat-x;
 200.240 +}
 200.241 +#settingsButton:active, #settingsMenuButton:active {
 200.242 +  color: #000000;
 200.243 +  background: #4949cb url(/style/images/buttons/settings_down.gif) repeat-x;
 200.244 +}
 200.245 +
 200.246 +/************************************************************************/
 200.247 +/*                  Copyright and Trademark Statement                   */
 200.248 +/************************************************************************/
 200.249 +/*                                                                      */
 200.250 +/*           All original textual and graphical site content:           */
 200.251 +/*                                                                      */
 200.252 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights     */
 200.253 +/*  reserved.  Reproduction in whole or in part without written         */
 200.254 +/*  permission is prohibited.  interos and the interos logos are        */
 200.255 +/*  trademarks of Brent Angeline and interos LLC.  All other company    */
 200.256 +/*  names, product names, and services mentioned herein may be the      */
 200.257 +/*  property of their respective owners.  Comments in the interos.org   */
 200.258 +/*  forums are the property of their respective posters.  All software  */
 200.259 +/*  developed in the forums is open source and belongs to everyone.     */
 200.260 +/*                                                                      */
 200.261 +/************************************************************************/
 200.262 +/*                       e-mail: info@interos.com                       */
 200.263 +/************************************************************************/
   201.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   201.2 +++ b/style/menu_interos.com_ssl.css	Sat May 01 16:19:36 2010 -0400
   201.3 @@ -0,0 +1,140 @@
   201.4 +/**********************************************************/
   201.5 +/*         interos Standard Document Header - CSS         */
   201.6 +/**********************************************************/
   201.7 +/*         URIs:  https://interos.com/style/menu.css      */
   201.8 +/*                https://www.interos.com/style/menu.css  */
   201.9 +/*  Description:  Cascading Style Sheet for interos menu  */
  201.10 +/*       Author:  Brent Angeline                          */
  201.11 +/*          CSS:  W3C-Validated CSS                       */
  201.12 +/**********************************************************/
  201.13 +
  201.14 +html, body, a, h1, div {
  201.15 +  display: block;
  201.16 +}
  201.17 +html, body {
  201.18 +  font: 1em sans-serif;
  201.19 +  color: #000000;
  201.20 +  background: #808080;
  201.21 +  margin: 0;
  201.22 +}
  201.23 +table {
  201.24 +  border-spacing: 0;
  201.25 +  border-collapse: collapse;
  201.26 +}
  201.27 +th, td {
  201.28 +  text-align: left;
  201.29 +  padding: 0;
  201.30 +}
  201.31 +h1 {
  201.32 +  margin: 21px 27px;
  201.33 +}
  201.34 +a {
  201.35 +  font-size: 1.5em;
  201.36 +  text-decoration: none;
  201.37 +  color: #ffffff;
  201.38 +  padding: 2px 6px 2px 4px;
  201.39 +}
  201.40 +a:focus {
  201.41 +  outline-offset: -1px;
  201.42 +}
  201.43 +a:hover span {
  201.44 +  text-decoration: underline;
  201.45 +}
  201.46 +a:active span {
  201.47 +  color: #000000;
  201.48 +}
  201.49 +img {
  201.50 +  vertical-align: middle;
  201.51 +  margin-right: 6px;
  201.52 +  border: 0;
  201.53 +}
  201.54 +br {
  201.55 +  display: none;
  201.56 +}
  201.57 +.newMenu {
  201.58 +  background: #6d9447 url(/style/images/menu/new_top.gif) repeat-x;
  201.59 +}
  201.60 +.openMenu {
  201.61 +  background: #868942 url(/style/images/menu/open_top.gif) repeat-x;
  201.62 +}
  201.63 +.nextMenu {
  201.64 +  background: #894342 url(/style/images/menu/next_top.gif) repeat-x;
  201.65 +}
  201.66 +.settingsMenu {
  201.67 +  background: #4747a3 url(/style/images/menu/settings_top.gif) repeat-x;
  201.68 +}
  201.69 +#newMenu, #openMenu, #nextMenu, #settingsMenu {
  201.70 +  position: absolute;
  201.71 +  width: 100%;
  201.72 +  height: 100%;
  201.73 +}
  201.74 +#newMenu table, #openMenu table {
  201.75 +  float: left;
  201.76 +}
  201.77 +#nextMenu table, #settingsMenu table {
  201.78 +  float: right;
  201.79 +}
  201.80 +#newMenuContent, #settingsMenuContent, #openMenuContent, #nextMenuContent {
  201.81 +  position: absolute;
  201.82 +  width: 100%;
  201.83 +  top: 9px;
  201.84 +}
  201.85 +#newMenu h1 {
  201.86 +  color: #b1c69d;
  201.87 +}
  201.88 +#newMenu a {
  201.89 +  color: #ecf1e7;
  201.90 +}
  201.91 +#newMenu a:hover {
  201.92 +  background: #b86a6a url(/style/images/menu/new_hover.gif);
  201.93 +}
  201.94 +#openMenu h1 {
  201.95 +  color: #bec09a;
  201.96 +}
  201.97 +#openMenu a {
  201.98 +  color: #eff0e7;
  201.99 +}
 201.100 +#openMenu a:hover {
 201.101 +  background: #8a4262 url(/style/images/menu/open_hover.gif);
 201.102 +}
 201.103 +#nextMenu h1 {
 201.104 +  color: #c09b9a;
 201.105 +}
 201.106 +#nextMenu a {
 201.107 +  color: #f0e7e7;
 201.108 +}
 201.109 +#nextMenu a:hover {
 201.110 +  background: #658a42 url(/style/images/menu/next_hover.gif);
 201.111 +}
 201.112 +#settingsMenu h1 {
 201.113 +  color: #9d9dce;
 201.114 +}
 201.115 +#settingsMenu a {
 201.116 +  color: #e7e7f3;
 201.117 +}
 201.118 +#settingsMenu a:hover {
 201.119 +  background: #a37a48 url(/style/images/menu/settings_hover.gif);
 201.120 +}
 201.121 +#newMenu a:active, #openMenu a:active, 
 201.122 +#nextMenu a:active, #settingsMenu a:active {
 201.123 +  background: #b86a6a url(/style/images/menu/active.gif);
 201.124 +}
 201.125 +
 201.126 +/************************************************************************/
 201.127 +/*                  Copyright and Trademark Statement                   */
 201.128 +/************************************************************************/
 201.129 +/*                                                                      */
 201.130 +/*           All original textual and graphical site content:           */
 201.131 +/*                                                                      */
 201.132 +/*  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights     */
 201.133 +/*  reserved.  Reproduction in whole or in part without written         */
 201.134 +/*  permission is prohibited.  interos and the interos logos are        */
 201.135 +/*  trademarks of Brent Angeline and interos LLC.  All other company    */
 201.136 +/*  names, product names, and services mentioned herein may be the      */
 201.137 +/*  property of their respective owners.  Comments in the interos.org   */
 201.138 +/*  forums are the property of their respective posters.  All software  */
 201.139 +/*  developed in the forums is open source and belongs to everyone.     */
 201.140 +/*                                                                      */
 201.141 +/************************************************************************/
 201.142 +/*                       e-mail: info@interos.com                       */
 201.143 +/************************************************************************/
   202.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   202.2 +++ b/xhtml/cgi/bottom_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   202.3 @@ -0,0 +1,74 @@
   202.4 +<?xml version="1.0" encoding="utf-8"?>
   202.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   202.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   202.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   202.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   202.9 +  <!--=================================================-->
  202.10 +  <!--    interos Standard Document Header - Markup    -->
  202.11 +  <!--=================================================-->
  202.12 +  <!--    URIs:  https://interos.com/bottom            -->
  202.13 +  <!--           https://www.interos.com/bottom        -->
  202.14 +  <!--   Title:  interos bottom toolbar                -->
  202.15 +  <!--  Author:  Brent Angeline                        -->
  202.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  202.17 +  <!--=================================================-->
  202.18 +  <head>
  202.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  202.20 +    <meta name="title" content="interos bottom toolbar" />
  202.21 +    <meta name="description" content="bottom toolbar for interos" />
  202.22 +    <meta name="author" content="Brent Angeline" />
  202.23 +    <meta name="copyright" 
  202.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  202.25 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  202.26 +    <title>interos bottom toolbar</title>
  202.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  202.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  202.29 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  202.30 +          media="screen, projection" />
  202.31 +    <script type="text/javascript" src="/js/bottom.js"></script>
  202.32 +  </head>
  202.33 +  <body id="body">
  202.34 +    <center>
  202.35 +      <table id="bottomToolbar" width="100%" 
  202.36 +             border="0" cellpadding="0" cellspacing="0">
  202.37 +        <tr>
  202.38 +          <td width="72" 
  202.39 +              height="72"><center>
  202.40 +                            <a id="newButton" 
  202.41 +                               href="/interos?menu=new" 
  202.42 +                               style="padding: 26px 0 27px" 
  202.43 +                               target="_top"><strong>new</strong></a>
  202.44 +                          </center></td>
  202.45 +          <td><center>
  202.46 +                &nbsp;<span class="hidden">|</span>&nbsp;
  202.47 +              </center></td>
  202.48 +          <td width="72" 
  202.49 +              height="72"><center>
  202.50 +                            <a id="settingsButton" 
  202.51 +                               href="/interos?menu=settings" 
  202.52 +                               style="padding: 26px 0 27px" 
  202.53 +                               target="_top"><strong>settings</strong></a>
  202.54 +                          </center></td>
  202.55 +        </tr>
  202.56 +      </table>
  202.57 +    </center>
  202.58 +  </body>
  202.59 +  <!--=====================================================================-->
  202.60 +  <!--                  Copyright and Trademark Statement                  -->
  202.61 +  <!--=====================================================================-->
  202.62 +  <!--                                                                     -->
  202.63 +  <!--          All original textual and graphical site content:           -->
  202.64 +  <!--                                                                     -->
  202.65 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  202.66 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  202.67 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  202.68 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  202.69 +  <!--  product, and service names mentioned herein may be the properties  -->
  202.70 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  202.71 +  <!--  are the properties of their respective authors.  All software      -->
  202.72 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  202.73 +  <!--                                                                     -->
  202.74 +  <!--=====================================================================-->
  202.75 +  <!--                      e-mail: info@interos.com                       -->
  202.76 +  <!--=====================================================================-->
  202.77 +</html>
   203.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   203.2 +++ b/xhtml/cgi/bottom_js_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   203.3 @@ -0,0 +1,154 @@
   203.4 +<?xml version="1.0" encoding="utf-8"?>
   203.5 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   203.6 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   203.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   203.8 +  <!--=================================================-->
   203.9 +  <!--    interos Standard Document Header - Markup    -->
  203.10 +  <!--=================================================-->
  203.11 +  <!--    URIs:  https://interos.com/bottom            -->
  203.12 +  <!--           https://www.interos.com/bottom        -->
  203.13 +  <!--   Title:  interos bottom toolbar                -->
  203.14 +  <!--  Author:  Brent Angeline                        -->
  203.15 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  203.16 +  <!--=================================================-->
  203.17 +  <head>
  203.18 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  203.19 +    <meta name="title" content="interos bottom toolbar" />
  203.20 +    <meta name="description" content="bottom toolbar for interos" />
  203.21 +    <meta name="author" content="Brent Angeline" />
  203.22 +    <meta name="copyright" 
  203.23 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  203.24 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  203.25 +    <title>interos bottom toolbar</title>
  203.26 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  203.27 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  203.28 +    <style type="text/css">
  203.29 +      html, body, center, a, strong {
  203.30 +        display: block;
  203.31 +      }
  203.32 +      html, body {
  203.33 +        color: #c0c0c0;
  203.34 +        background: #808080;
  203.35 +        font: 1em sans-serif;
  203.36 +        margin: 0;
  203.37 +      }
  203.38 +      a {
  203.39 +        color: #d7d7d7;
  203.40 +        font-style: italic;
  203.41 +        text-decoration: none;
  203.42 +        height: 72px;
  203.43 +      }
  203.44 +      a:focus {
  203.45 +        outline-offset: -1px;
  203.46 +      }
  203.47 +      a:hover strong {
  203.48 +        text-decoration: underline;
  203.49 +      }
  203.50 +      .toolbar {
  203.51 +        color: #000000;
  203.52 +        background: #c0c0c0 url(/style/images/toolbar.gif) repeat-x;
  203.53 +      }
  203.54 +      .hidden {
  203.55 +        display: none;
  203.56 +      }
  203.57 +      #newLink, #settingsLink {
  203.58 +        display: table;
  203.59 +        height: 72px;
  203.60 +        overflow: hidden;
  203.61 +        #position: relative;
  203.62 +      }
  203.63 +      #newButton, #settingsButton {
  203.64 +        cursor: pointer;
  203.65 +        display: table-cell;
  203.66 +        vertical-align: middle;
  203.67 +        text-align: center;
  203.68 +        width: 72px;
  203.69 +        #position: absolute;
  203.70 +        #top: 50%;
  203.71 +        #left: 0;
  203.72 +      }
  203.73 +      #newText, #settingsText {
  203.74 +        #position: relative;
  203.75 +        #top: -50%
  203.76 +      }
  203.77 +      #newLink {
  203.78 +        color: #eaeaea;
  203.79 +        background: #7fa85a 
  203.80 +                    url(/style/images/buttons/new_faded.gif) repeat-x;
  203.81 +      }
  203.82 +      #newLink:hover {
  203.83 +        color: #ffffff;
  203.84 +        background: #5f9e28 
  203.85 +                    url(/style/images/buttons/new.gif) repeat-x;
  203.86 +      }
  203.87 +      #newLink:active {
  203.88 +        color: #000000;
  203.89 +        background: #8fc154 bottom 
  203.90 +                    url(/style/images/buttons/new_down.gif) repeat-x;
  203.91 +      }
  203.92 +      #settingsLink {
  203.93 +        color: #eaeaea;
  203.94 +        background: #5a5abd 
  203.95 +                    url(/style/images/buttons/settings_faded.gif) repeat-x;
  203.96 +      }
  203.97 +      #settingsLink:hover {
  203.98 +        color: #ffffff;
  203.99 +        background: #2828bc 
 203.100 +                    url(/style/images/buttons/settings.gif) repeat-x;
 203.101 +      }
 203.102 +      #settingsLink:active {
 203.103 +        color: #000000;
 203.104 +        background: #4949cb bottom 
 203.105 +                    url(/style/images/buttons/settings_down.gif) repeat-x;
 203.106 +      }
 203.107 +    </style>
 203.108 +  </head>
 203.109 +  <body>
 203.110 +    <center>
 203.111 +      <table class="toolbar" width="100%" 
 203.112 +             border="0" cellpadding="0" cellspacing="0">
 203.113 +        <tr>
 203.114 +          <td width="72" 
 203.115 +              height="72"><center>
 203.116 +                            <a id="newLink" href="#">
 203.117 +                              <span id="newButton">
 203.118 +                                <strong id="newText">
 203.119 +                                  new
 203.120 +                                </strong>
 203.121 +                              </span>
 203.122 +                            </a>
 203.123 +                          </center></td>
 203.124 +          <td><center>&nbsp;<span class="hidden">|</span>&nbsp;</center></td>
 203.125 +          <td width="72" 
 203.126 +              height="72"><center>
 203.127 +                            <a id="settingsLink" href="#">
 203.128 +                              <span id="settingsButton">
 203.129 +                                <strong id="settingsText">
 203.130 +                                  settings
 203.131 +                                </strong>
 203.132 +                              </span>
 203.133 +                            </a>
 203.134 +                          </center></td>
 203.135 +        </tr>
 203.136 +      </table>
 203.137 +    </center>
 203.138 +  </body>
 203.139 +  <!--=====================================================================-->
 203.140 +  <!--                  Copyright and Trademark Statement                  -->
 203.141 +  <!--=====================================================================-->
 203.142 +  <!--                                                                     -->
 203.143 +  <!--          All original textual and graphical site content:           -->
 203.144 +  <!--                                                                     -->
 203.145 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 203.146 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 203.147 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 203.148 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 203.149 +  <!--  product, and service names mentioned herein may be the properties  -->
 203.150 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 203.151 +  <!--  are the properties of their respective authors.  All software      -->
 203.152 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 203.153 +  <!--                                                                     -->
 203.154 +  <!--=====================================================================-->
 203.155 +  <!--                      e-mail: info@interos.com                       -->
 203.156 +  <!--=====================================================================-->
 203.157 +</html>
   204.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   204.2 +++ b/xhtml/cgi/bottom_new_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   204.3 @@ -0,0 +1,72 @@
   204.4 +<?xml version="1.0" encoding="utf-8"?>
   204.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   204.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   204.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   204.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   204.9 +  <!--======================================================-->
  204.10 +  <!--      interos Standard Document Header - Markup       -->
  204.11 +  <!--======================================================-->
  204.12 +  <!--    URIs:  https://interos.com/bottom?button=new      -->
  204.13 +  <!--           https://www.interos.com/bottom?button=new  -->
  204.14 +  <!--   Title:  interos new menu button                    -->
  204.15 +  <!--  Author:  Brent Angeline                             -->
  204.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional       -->
  204.17 +  <!--======================================================-->
  204.18 +  <head>
  204.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  204.20 +    <meta name="title" content="interos new menu button" />
  204.21 +    <meta name="description" content="button for interos new menu" />
  204.22 +    <meta name="author" content="Brent Angeline" />
  204.23 +    <meta name="copyright" 
  204.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  204.25 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  204.26 +    <title>interos new menu button</title>
  204.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  204.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  204.29 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  204.30 +          media="screen, projection" />
  204.31 +    <script type="text/javascript" src="/js/bottom.js"></script>
  204.32 +  </head>
  204.33 +  <body id="body">
  204.34 +    <center>
  204.35 +      <table id="bottomToolbarFaded" width="100%" 
  204.36 +             border="0" cellpadding="0" cellspacing="0">
  204.37 +        <tr>
  204.38 +          <td width="72" 
  204.39 +              height="72"><center>
  204.40 +                            <a id="newMenuButton" 
  204.41 +                               href="/main" 
  204.42 +                               style="padding: 26px 0 27px" 
  204.43 +                               target="_top"><strong>&laquo; back</strong></a>
  204.44 +                          </center></td>
  204.45 +          <td><center>
  204.46 +                &nbsp;<span class="hidden">|</span>&nbsp;
  204.47 +              </center></td>
  204.48 +          <td id="bottomToolbarCornerFaded" 
  204.49 +              width="72" 
  204.50 +              height="72"><p>
  204.51 +                            <br />
  204.52 +                          </p></td>
  204.53 +        </tr>
  204.54 +      </table>
  204.55 +    </center>
  204.56 +  </body>
  204.57 +  <!--=====================================================================-->
  204.58 +  <!--                  Copyright and Trademark Statement                  -->
  204.59 +  <!--=====================================================================-->
  204.60 +  <!--                                                                     -->
  204.61 +  <!--          All original textual and graphical site content:           -->
  204.62 +  <!--                                                                     -->
  204.63 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  204.64 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  204.65 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  204.66 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  204.67 +  <!--  product, and service names mentioned herein may be the properties  -->
  204.68 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  204.69 +  <!--  are the properties of their respective authors.  All software      -->
  204.70 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  204.71 +  <!--                                                                     -->
  204.72 +  <!--=====================================================================-->
  204.73 +  <!--                      e-mail: info@interos.com                       -->
  204.74 +  <!--=====================================================================-->
  204.75 +</html>
   205.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   205.2 +++ b/xhtml/cgi/bottom_settings_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   205.3 @@ -0,0 +1,72 @@
   205.4 +<?xml version="1.0" encoding="utf-8"?>
   205.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   205.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   205.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   205.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   205.9 +  <!--===========================================================-->
  205.10 +  <!--         interos Standard Document Header - Markup         -->
  205.11 +  <!--===========================================================-->
  205.12 +  <!--    URIs:  https://interos.com/bottom?button=settings      -->
  205.13 +  <!--           https://www.interos.com/bottom?button=settings  -->
  205.14 +  <!--   Title:  interos settings menu button                    -->
  205.15 +  <!--  Author:  Brent Angeline                                  -->
  205.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional            -->
  205.17 +  <!--===========================================================-->
  205.18 +  <head>
  205.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  205.20 +    <meta name="title" content="interos settings menu button" />
  205.21 +    <meta name="description" content="button for interos settings menu" />
  205.22 +    <meta name="author" content="Brent Angeline" />
  205.23 +    <meta name="copyright" 
  205.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  205.25 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  205.26 +    <title>interos settings menu button</title>
  205.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  205.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  205.29 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  205.30 +          media="screen, projection" />
  205.31 +    <script type="text/javascript" src="/js/bottom.js"></script>
  205.32 +  </head>
  205.33 +  <body id="body">
  205.34 +    <center>
  205.35 +      <table id="bottomToolbarFaded" width="100%" 
  205.36 +             border="0" cellpadding="0" cellspacing="0">
  205.37 +        <tr>
  205.38 +          <td id="bottomToolbarCornerFaded" 
  205.39 +              width="72" 
  205.40 +              height="72"><p>
  205.41 +                            <br />
  205.42 +                          </p></td>
  205.43 +          <td><center>
  205.44 +               &nbsp;<span class="hidden">|</span>&nbsp;
  205.45 +              </center></td>
  205.46 +          <td width="72" 
  205.47 +              height="72"><center>
  205.48 +                            <a id="settingsMenuButton" 
  205.49 +                               href="/main" 
  205.50 +                               style="padding: 26px 0 27px" 
  205.51 +                               target="_top"><strong>&laquo; back</strong></a>
  205.52 +                          </center></td>
  205.53 +        </tr>
  205.54 +      </table>
  205.55 +    </center>
  205.56 +  </body>
  205.57 +  <!--=====================================================================-->
  205.58 +  <!--                  Copyright and Trademark Statement                  -->
  205.59 +  <!--=====================================================================-->
  205.60 +  <!--                                                                     -->
  205.61 +  <!--          All original textual and graphical site content:           -->
  205.62 +  <!--                                                                     -->
  205.63 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  205.64 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  205.65 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  205.66 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  205.67 +  <!--  product, and service names mentioned herein may be the properties  -->
  205.68 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  205.69 +  <!--  are the properties of their respective authors.  All software      -->
  205.70 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  205.71 +  <!--                                                                     -->
  205.72 +  <!--=====================================================================-->
  205.73 +  <!--                      e-mail: info@interos.com                       -->
  205.74 +  <!--=====================================================================-->
  205.75 +</html>
   206.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   206.2 +++ b/xhtml/cgi/browse_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   206.3 @@ -0,0 +1,21 @@
   206.4 +
   206.5 +
   206.6 +  <!--=====================================================================-->
   206.7 +  <!--                  Copyright and Trademark Statement                  -->
   206.8 +  <!--=====================================================================-->
   206.9 +  <!--                                                                     -->
  206.10 +  <!--          All original textual and graphical site content:           -->
  206.11 +  <!--                                                                     -->
  206.12 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  206.13 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  206.14 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  206.15 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  206.16 +  <!--  product, and service names mentioned herein may be the properties  -->
  206.17 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  206.18 +  <!--  are the properties of their respective authors.  All software      -->
  206.19 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  206.20 +  <!--                                                                     -->
  206.21 +  <!--=====================================================================-->
  206.22 +  <!--                      e-mail: info@interos.com                       -->
  206.23 +  <!--=====================================================================-->
  206.24 +
   207.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   207.2 +++ b/xhtml/cgi/content_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   207.3 @@ -0,0 +1,51 @@
   207.4 +<?xml version="1.0" encoding="utf-8"?>
   207.5 +<?xml-stylesheet type="text/css" href="/style/content.css"?>
   207.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   207.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   207.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   207.9 +  <!--=================================================-->
  207.10 +  <!--    interos Standard Document Header - Markup    -->
  207.11 +  <!--=================================================-->
  207.12 +  <!--    URIs:  https://interos.com/content           -->
  207.13 +  <!--           https://www.interos.com/content       -->
  207.14 +  <!--   Title:  interos content                       -->
  207.15 +  <!--  Author:  Brent Angeline                        -->
  207.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  207.17 +  <!--=================================================-->
  207.18 +  <head>
  207.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  207.20 +    <meta name="title" content="interos content" />
  207.21 +    <meta name="description" content="middle frame for interos content" />
  207.22 +    <meta name="author" content="Brent Angeline" />
  207.23 +    <meta name="copyright" 
  207.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  207.25 +    <meta name="robots" content="noindex,nofollow,noarchive" />
  207.26 +    <title>interos content</title>
  207.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  207.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  207.29 +    <link rel="stylesheet" type="text/css" href="/style/content.css" />
  207.30 +    <script type="text/javascript" src="/js/content.js"></script>
  207.31 +  </head>
  207.32 +  <body>
  207.33 +    <div id="content">
  207.34 +    </div>
  207.35 +  </body>
  207.36 +  <!--=====================================================================-->
  207.37 +  <!--                  Copyright and Trademark Statement                  -->
  207.38 +  <!--=====================================================================-->
  207.39 +  <!--                                                                     -->
  207.40 +  <!--          All original textual and graphical site content:           -->
  207.41 +  <!--                                                                     -->
  207.42 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  207.43 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  207.44 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  207.45 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  207.46 +  <!--  product, and service names mentioned herein may be the properties  -->
  207.47 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  207.48 +  <!--  are the properties of their respective authors.  All software      -->
  207.49 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  207.50 +  <!--                                                                     -->
  207.51 +  <!--=====================================================================-->
  207.52 +  <!--                      e-mail: info@interos.com                       -->
  207.53 +  <!--=====================================================================-->
  207.54 +</html>
   208.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   208.2 +++ b/xhtml/cgi/login_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   208.3 @@ -0,0 +1,115 @@
   208.4 +<?xml version="1.0" encoding="utf-8"?>
   208.5 +<?xml-stylesheet type="text/css" href="/style/login.css"?>
   208.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   208.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   208.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   208.9 +  <!--=================================================-->
  208.10 +  <!--    interos Standard Document Header - Markup    -->
  208.11 +  <!--=================================================-->
  208.12 +  <!--    URIs:  https://interos.com/login             -->
  208.13 +  <!--           https://www.interos.com/login         -->
  208.14 +  <!--   Title:  interos login                         -->
  208.15 +  <!--  Author:  Brent Angeline                        -->
  208.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  208.17 +  <!--=================================================-->
  208.18 +  <head>
  208.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  208.20 +    <meta name="title" content="interos login" />
  208.21 +    <meta name="description" content="enter into interos" />
  208.22 +    <meta name="author" content="Brent Angeline" />
  208.23 +    <meta name="copyright" 
  208.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  208.25 +    <meta name="robots" content="index, nofollow, noarchive" />
  208.26 +    <title>interos login</title>
  208.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  208.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  208.29 +    <link rel="stylesheet" type="text/css" href="/style/login.css" 
  208.30 +          media="screen, projection" />
  208.31 +    <script type="text/javascript" src="/js/login.js"></script>
  208.32 +  </head>
  208.33 +  <body id="body">
  208.34 +    <center>
  208.35 +      <p id="navigation">
  208.36 +        <a href="/about">about</a> | 
  208.37 +        <a href="/blog">blog</a> | 
  208.38 +        <a href="/code">code</a> | 
  208.39 +        <a href="https://interos.org/">develop</a> | 
  208.40 +        <a href="/e-mail">e-mail</a> | 
  208.41 +        <a href="/f.a.q.">f.a.q.</a> | 
  208.42 +        <a href="/gear">gear</a> | 
  208.43 +        <a href="/help">help</a>
  208.44 +      </p>
  208.45 +      <form id="loginForm" name="loginForm" action="/login" method="post">
  208.46 +        <table id="mainPanel">
  208.47 +          <thead>
  208.48 +            <tr>
  208.49 +              <th colspan="3"><center>
  208.50 +                                <div id="title">
  208.51 +                                  <h1>
  208.52 +                                    <a href="/">interos</a>
  208.53 +                                  </h1>
  208.54 +                                </div>
  208.55 +                                <h2>
  208.56 +                                  internet operating system
  208.57 +                                </h2>
  208.58 +                              </center></th>
  208.59 +            </tr>
  208.60 +          </thead>
  208.61 +          <tfoot>
  208.62 +            <tr>
  208.63 +              <td colspan="3"><br /></td>
  208.64 +            </tr>
  208.65 +          </tfoot>
  208.66 +          <tbody>
  208.67 +            <tr>
  208.68 +              <td><label for="login">login:</label>&nbsp;</td>
  208.69 +              <td><input id="login" name="login" 
  208.70 +                         value="guest" readonly="readonly" 
  208.71 +                         size="16" maxlength="16" 
  208.72 +                         type="text" /></td>
  208.73 +            </tr>
  208.74 +            <tr>
  208.75 +              <td><label for="password">password:</label>&nbsp;</td>
  208.76 +              <td><input id="password" name="password" 
  208.77 +                         disabled="disabled" 
  208.78 +                         size="16" maxlength="16" 
  208.79 +                         type="password" /></td>
  208.80 +              <td rowspan="2"><div id="submitButton">
  208.81 +                                &nbsp;<input type="submit" 
  208.82 +                                             value="login &raquo;" />
  208.83 +                              </div></td>
  208.84 +            </tr>
  208.85 +          </tbody>
  208.86 +        </table>
  208.87 +      </form>
  208.88 +      <p id="newUser">
  208.89 +        <a href="/new_user"><strong>new users click here</strong><br />
  208.90 +        to create your login</a>
  208.91 +      </p>
  208.92 +      <p>
  208.93 +        <br />
  208.94 +      </p>
  208.95 +      <p id="copyrightDates">
  208.96 +        &copy; 2001&#8211;2009 interos
  208.97 +      </p>
  208.98 +    </center>
  208.99 +  </body>
 208.100 +  <!--=====================================================================-->
 208.101 +  <!--                  Copyright and Trademark Statement                  -->
 208.102 +  <!--=====================================================================-->
 208.103 +  <!--                                                                     -->
 208.104 +  <!--          All original textual and graphical site content:           -->
 208.105 +  <!--                                                                     -->
 208.106 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 208.107 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 208.108 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 208.109 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 208.110 +  <!--  product, and service names mentioned herein may be the properties  -->
 208.111 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 208.112 +  <!--  are the properties of their respective authors.  All software      -->
 208.113 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 208.114 +  <!--                                                                     -->
 208.115 +  <!--=====================================================================-->
 208.116 +  <!--                      e-mail: info@interos.com                       -->
 208.117 +  <!--=====================================================================-->
 208.118 +</html>
   209.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   209.2 +++ b/xhtml/cgi/main_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   209.3 @@ -0,0 +1,79 @@
   209.4 +<?xml version="1.0" encoding="utf-8"?>
   209.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   209.6 +<!DOCTYPE html SYSTEM "http://interos.org/dtd/xhtml1-borderless-frameset.dtd">
   209.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   209.8 +  <!--========================================================-->
   209.9 +  <!--       interos Standard Document Header - Markup        -->
  209.10 +  <!--========================================================-->
  209.11 +  <!--    URIs:  https://interos.com/                         -->
  209.12 +  <!--           https://interos.com/main                     -->
  209.13 +  <!--           https://www.interos.com/                     -->
  209.14 +  <!--           https://www.interos.com/main                 -->
  209.15 +  <!--   Title:  interos                                      -->
  209.16 +  <!--  Author:  Brent Angeline                               -->
  209.17 +  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->
  209.18 +  <!--========================================================-->
  209.19 +  <head>
  209.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  209.21 +    <meta name="title" content="interos" />
  209.22 +    <meta name="description" content="internet operating system" />
  209.23 +    <meta name="author" content="Brent Angeline" />
  209.24 +    <meta name="copyright" 
  209.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  209.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  209.27 +    <title>interos</title>
  209.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  209.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  209.30 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  209.31 +          media="screen, projection" />
  209.32 +    <script type="text/javascript" src="/js/interos.js"></script>
  209.33 +  </head>
  209.34 +  <frameset rows="72,*,72" border="0" frameborder="0" framespacing="0">
  209.35 +    <frame name="top" src="/top" 
  209.36 +           frameborder="0" marginwidth="0" marginheight="0" 
  209.37 +           noresize="noresize" scrolling="auto" />
  209.38 +    <frame name="content" src="/content" 
  209.39 +           frameborder="0" marginwidth="0" marginheight="0" 
  209.40 +           noresize="noresize" scrolling="auto" />
  209.41 +    <frame name="bottom" src="/bottom" 
  209.42 +           frameborder="0" marginwidth="0" marginheight="0" 
  209.43 +           noresize="noresize" scrolling="auto" />
  209.44 +    <noframes>
  209.45 +      <body id="body">
  209.46 +        <h3>
  209.47 +          menu
  209.48 +        </h3>
  209.49 +        <p>
  209.50 +          <a id="newLink" href="/main?menu=new">new</a>
  209.51 +        </p>
  209.52 +        <p>
  209.53 +          <a id="openLink" href="/main?menu=open">open</a>
  209.54 +        </p>
  209.55 +        <p>
  209.56 +          <a id="nextLink" href="/main?menu=next">next</a>
  209.57 +        </p>
  209.58 +        <p>
  209.59 +          <a id="settingsLink" href="/main?menu=settings">settings</a>
  209.60 +        </p>
  209.61 +      </body>
  209.62 +    </noframes>
  209.63 +  </frameset>
  209.64 +  <!--=====================================================================-->
  209.65 +  <!--                  Copyright and Trademark Statement                  -->
  209.66 +  <!--=====================================================================-->
  209.67 +  <!--                                                                     -->
  209.68 +  <!--          All original textual and graphical site content:           -->
  209.69 +  <!--                                                                     -->
  209.70 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  209.71 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  209.72 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  209.73 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  209.74 +  <!--  product, and service names mentioned herein may be the properties  -->
  209.75 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  209.76 +  <!--  are the properties of their respective authors.  All software      -->
  209.77 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  209.78 +  <!--                                                                     -->
  209.79 +  <!--=====================================================================-->
  209.80 +  <!--                      e-mail: info@interos.com                       -->
  209.81 +  <!--=====================================================================-->
  209.82 +</html>
   210.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   210.2 +++ b/xhtml/cgi/main_js_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   210.3 @@ -0,0 +1,79 @@
   210.4 +<?xml version="1.0" encoding="utf-8"?>
   210.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   210.6 +<!DOCTYPE html SYSTEM "http://interos.org/dtd/xhtml1-borderless-frameset.dtd">
   210.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   210.8 +  <!--========================================================-->
   210.9 +  <!--       interos Standard Document Header - Markup        -->
  210.10 +  <!--========================================================-->
  210.11 +  <!--    URIs:  https://interos.com/                         -->
  210.12 +  <!--           https://interos.com/main                     -->
  210.13 +  <!--           https://www.interos.com/                     -->
  210.14 +  <!--           https://www.interos.com/main                 -->
  210.15 +  <!--   Title:  interos                                      -->
  210.16 +  <!--  Author:  Brent Angeline                               -->
  210.17 +  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->
  210.18 +  <!--========================================================-->
  210.19 +  <head>
  210.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  210.21 +    <meta name="title" content="interos" />
  210.22 +    <meta name="description" content="internet operating system" />
  210.23 +    <meta name="author" content="Brent Angeline" />
  210.24 +    <meta name="copyright" 
  210.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  210.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  210.27 +    <title>interos</title>
  210.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  210.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  210.30 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  210.31 +          media="screen, projection" />
  210.32 +    <script type="text/javascript" src="/js/interos.js"></script>
  210.33 +  </head>
  210.34 +  <frameset rows="72,*,72" border="0" frameborder="0" framespacing="0">
  210.35 +    <frame name="top" src="/top" 
  210.36 +           frameborder="0" marginwidth="0" marginheight="0" 
  210.37 +           noresize="noresize" scrolling="auto" />
  210.38 +    <frame name="content" src="/content" 
  210.39 +           frameborder="0" marginwidth="0" marginheight="0" 
  210.40 +           noresize="noresize" scrolling="auto" />
  210.41 +    <frame name="bottom" src="/bottom" 
  210.42 +           frameborder="0" marginwidth="0" marginheight="0" 
  210.43 +           noresize="noresize" scrolling="auto" />
  210.44 +    <noframes>
  210.45 +      <body id="body">
  210.46 +        <h3>
  210.47 +          menu
  210.48 +        </h3>
  210.49 +        <p>
  210.50 +          <a id="newLink" href="/main?menu=new">new</a>
  210.51 +        </p>
  210.52 +        <p>
  210.53 +          <a id="openLink" href="/main?menu=open">open</a>
  210.54 +        </p>
  210.55 +        <p>
  210.56 +          <a id="nextLink" href="/main?menu=next">next</a>
  210.57 +        </p>
  210.58 +        <p>
  210.59 +          <a id="settingsLink" href="/main?menu=settings">settings</a>
  210.60 +        </p>
  210.61 +      </body>
  210.62 +    </noframes>
  210.63 +  </frameset>
  210.64 +  <!--=====================================================================-->
  210.65 +  <!--                  Copyright and Trademark Statement                  -->
  210.66 +  <!--=====================================================================-->
  210.67 +  <!--                                                                     -->
  210.68 +  <!--          All original textual and graphical site content:           -->
  210.69 +  <!--                                                                     -->
  210.70 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  210.71 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  210.72 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  210.73 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  210.74 +  <!--  product, and service names mentioned herein may be the properties  -->
  210.75 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  210.76 +  <!--  are the properties of their respective authors.  All software      -->
  210.77 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  210.78 +  <!--                                                                     -->
  210.79 +  <!--=====================================================================-->
  210.80 +  <!--                      e-mail: info@interos.com                       -->
  210.81 +  <!--=====================================================================-->
  210.82 +</html>
   211.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   211.2 +++ b/xhtml/cgi/main_new_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   211.3 @@ -0,0 +1,67 @@
   211.4 +<?xml version="1.0" encoding="utf-8"?>
   211.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   211.6 +<!DOCTYPE html SYSTEM "http://interos.org/dtd/xhtml1-borderless-frameset.dtd">
   211.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   211.8 +  <!--========================================================-->
   211.9 +  <!--       interos Standard Document Header - Markup        -->
  211.10 +  <!--========================================================-->
  211.11 +  <!--    URIs:  https://interos.com/main?menu=new            -->
  211.12 +  <!--           https://interos.com/interos?menu=new         -->
  211.13 +  <!--           https://www.interos.com/main?menu=new        -->
  211.14 +  <!--           https://www.interos.com/interos?menu=new     -->
  211.15 +  <!--   Title:  interos new                                  -->
  211.16 +  <!--  Author:  Brent Angeline                               -->
  211.17 +  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->
  211.18 +  <!--========================================================-->
  211.19 +  <head>
  211.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  211.21 +    <meta name="title" content="interos new" />
  211.22 +    <meta name="description" content="new menu for interos" />
  211.23 +    <meta name="author" content="Brent Angeline" />
  211.24 +    <meta name="copyright" 
  211.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  211.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  211.27 +    <title>interos new</title>
  211.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  211.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  211.30 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  211.31 +          media="screen, projection" />
  211.32 +    <script type="text/javascript" src="/js/interos_new.js"></script>
  211.33 +  </head>
  211.34 +  <frameset rows="*,72" border="0" frameborder="0" framespacing="0">
  211.35 +    <frame name="menu" src="/menu?name=new" 
  211.36 +           frameborder="0" marginwidth="0" marginheight="0" 
  211.37 +           noresize="noresize" scrolling="auto" />
  211.38 +    <frame name="button" src="/bottom?button=new" 
  211.39 +           frameborder="0" marginwidth="0" marginheight="0" 
  211.40 +           noresize="noresize" scrolling="auto" />
  211.41 +    <noframes>
  211.42 +      <body id="body">
  211.43 +        <div id="newEntries">
  211.44 +          <p>
  211.45 +            <a href="/main?new=text_file">text file</a>
  211.46 +          </p>
  211.47 +        </div>
  211.48 +        <div id="newLink"><a href="/main">new</a></div>
  211.49 +      </body>
  211.50 +    </noframes>
  211.51 +  </frameset>
  211.52 +  <!--=====================================================================-->
  211.53 +  <!--                  Copyright and Trademark Statement                  -->
  211.54 +  <!--=====================================================================-->
  211.55 +  <!--                                                                     -->
  211.56 +  <!--          All original textual and graphical site content:           -->
  211.57 +  <!--                                                                     -->
  211.58 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  211.59 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  211.60 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  211.61 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  211.62 +  <!--  product, and service names mentioned herein may be the properties  -->
  211.63 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  211.64 +  <!--  are the properties of their respective authors.  All software      -->
  211.65 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  211.66 +  <!--                                                                     -->
  211.67 +  <!--=====================================================================-->
  211.68 +  <!--                      e-mail: info@interos.com                       -->
  211.69 +  <!--=====================================================================-->
  211.70 +</html>
   212.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   212.2 +++ b/xhtml/cgi/main_next_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   212.3 @@ -0,0 +1,65 @@
   212.4 +<?xml version="1.0" encoding="utf-8"?>
   212.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   212.6 +<!DOCTYPE html SYSTEM "http://interos.org/dtd/xhtml1-borderless-frameset.dtd">
   212.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   212.8 +  <!--========================================================-->
   212.9 +  <!--       interos Standard Document Header - Markup        -->
  212.10 +  <!--========================================================-->
  212.11 +  <!--    URIs:  https://interos.com/main?menu=next           -->
  212.12 +  <!--           https://interos.com/interos?menu=next        -->
  212.13 +  <!--           https://www.interos.com/main?menu=next       -->
  212.14 +  <!--           https://www.interos.com/interos?menu=next    -->
  212.15 +  <!--   Title:  interos next                                 -->
  212.16 +  <!--  Author:  Brent Angeline                               -->
  212.17 +  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->
  212.18 +  <!--========================================================-->
  212.19 +  <head>
  212.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  212.21 +    <meta name="title" content="interos next" />
  212.22 +    <meta name="description" content="next menu for interos" />
  212.23 +    <meta name="author" content="Brent Angeline" />
  212.24 +    <meta name="copyright" 
  212.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  212.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  212.27 +    <title>interos next</title>
  212.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  212.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  212.30 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  212.31 +          media="screen, projection" />
  212.32 +    <script type="text/javascript" src="/js/interos_next.js"></script>
  212.33 +  </head>
  212.34 +  <frameset rows="72,*" border="0" frameborder="0" framespacing="0">
  212.35 +    <frame name="button" src="/top?button=next" 
  212.36 +           frameborder="0" marginwidth="0" marginheight="0" 
  212.37 +           noresize="noresize" scrolling="auto" />
  212.38 +    <frame name="menu" src="/menu?name=next" 
  212.39 +           frameborder="0" marginwidth="0" marginheight="0" 
  212.40 +           noresize="noresize" scrolling="auto" />
  212.41 +    <noframes>
  212.42 +      <body id="body">
  212.43 +        <div id="nextLink"><a href="/main">next</a></div>
  212.44 +        <div id="nextEntries">
  212.45 +          <p><a href="/logout">logout</a></p>
  212.46 +        </div>
  212.47 +      </body>
  212.48 +    </noframes>
  212.49 +  </frameset>
  212.50 +  <!--=====================================================================-->
  212.51 +  <!--                  Copyright and Trademark Statement                  -->
  212.52 +  <!--=====================================================================-->
  212.53 +  <!--                                                                     -->
  212.54 +  <!--          All original textual and graphical site content:           -->
  212.55 +  <!--                                                                     -->
  212.56 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  212.57 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  212.58 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  212.59 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  212.60 +  <!--  product, and service names mentioned herein may be the properties  -->
  212.61 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  212.62 +  <!--  are the properties of their respective authors.  All software      -->
  212.63 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  212.64 +  <!--                                                                     -->
  212.65 +  <!--=====================================================================-->
  212.66 +  <!--                      e-mail: info@interos.com                       -->
  212.67 +  <!--=====================================================================-->
  212.68 +</html>
   213.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   213.2 +++ b/xhtml/cgi/main_open_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   213.3 @@ -0,0 +1,65 @@
   213.4 +<?xml version="1.0" encoding="utf-8"?>
   213.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   213.6 +<!DOCTYPE html SYSTEM "http://interos.org/dtd/xhtml1-borderless-frameset.dtd">
   213.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   213.8 +  <!--========================================================-->
   213.9 +  <!--       interos Standard Document Header - Markup        -->
  213.10 +  <!--========================================================-->
  213.11 +  <!--    URIs:  https://interos.com/main?menu=open           -->
  213.12 +  <!--           https://interos.com/interos?menu=open        -->
  213.13 +  <!--           https://www.interos.com/main?menu=open       -->
  213.14 +  <!--           https://www.interos.com/interos?menu=open    -->
  213.15 +  <!--   Title:  interos open                                 -->
  213.16 +  <!--  Author:  Brent Angeline                               -->
  213.17 +  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->
  213.18 +  <!--========================================================-->
  213.19 +  <head>
  213.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  213.21 +    <meta name="title" content="interos open" />
  213.22 +    <meta name="description" content="open menu for interos" />
  213.23 +    <meta name="author" content="Brent Angeline" />
  213.24 +    <meta name="copyright" 
  213.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  213.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  213.27 +    <title>interos open</title>
  213.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  213.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  213.30 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  213.31 +          media="screen, projection" />
  213.32 +    <script type="text/javascript" src="/js/interos_open.js"></script>
  213.33 +  </head>
  213.34 +  <frameset rows="72,*" border="0" frameborder="0" framespacing="0">
  213.35 +    <frame name="button" src="/top?button=open" 
  213.36 +           frameborder="0" marginwidth="0" marginheight="0" 
  213.37 +           noresize="noresize" scrolling="auto" />
  213.38 +    <frame name="menu" src="/menu?name=open" 
  213.39 +           frameborder="0" marginwidth="0" marginheight="0" 
  213.40 +           noresize="noresize" scrolling="auto" />
  213.41 +    <noframes>
  213.42 +      <body id="body">
  213.43 +        <div id="openLink"><a href="/main">open</a></div>
  213.44 +        <div id="openEntries">
  213.45 +          <p><a href="/main?open=text_file">text file</a></p>
  213.46 +        </div>
  213.47 +      </body>
  213.48 +    </noframes>
  213.49 +  </frameset>
  213.50 +  <!--=====================================================================-->
  213.51 +  <!--                  Copyright and Trademark Statement                  -->
  213.52 +  <!--=====================================================================-->
  213.53 +  <!--                                                                     -->
  213.54 +  <!--          All original textual and graphical site content:           -->
  213.55 +  <!--                                                                     -->
  213.56 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  213.57 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  213.58 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  213.59 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  213.60 +  <!--  product, and service names mentioned herein may be the properties  -->
  213.61 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  213.62 +  <!--  are the properties of their respective authors.  All software      -->
  213.63 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  213.64 +  <!--                                                                     -->
  213.65 +  <!--=====================================================================-->
  213.66 +  <!--                      e-mail: info@interos.com                       -->
  213.67 +  <!--=====================================================================-->
  213.68 +</html>
   214.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   214.2 +++ b/xhtml/cgi/main_settings_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   214.3 @@ -0,0 +1,65 @@
   214.4 +<?xml version="1.0" encoding="utf-8"?>
   214.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   214.6 +<!DOCTYPE html SYSTEM "http://interos.org/dtd/xhtml1-borderless-frameset.dtd">
   214.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   214.8 +  <!--==========================================================-->
   214.9 +  <!--        interos Standard Document Header - Markup         -->
  214.10 +  <!--==========================================================-->
  214.11 +  <!--    URIs:  https://interos.com/main?menu=settings         -->
  214.12 +  <!--           https://interos.com/interos?menu=settings      -->
  214.13 +  <!--           https://www.interos.com/menu?menu=settings     -->
  214.14 +  <!--           https://www.interos.com/interos?menu=settings  -->
  214.15 +  <!--   Title:  interos settings                               -->
  214.16 +  <!--  Author:  Brent Angeline                                 -->
  214.17 +  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset    -->
  214.18 +  <!--==========================================================-->
  214.19 +  <head>
  214.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  214.21 +    <meta name="title" content="interos - settings" />
  214.22 +    <meta name="description" content="interos settings menu" />
  214.23 +    <meta name="author" content="Brent Angeline" />
  214.24 +    <meta name="copyright" 
  214.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  214.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  214.27 +    <title>interos settings</title>
  214.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  214.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  214.30 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  214.31 +          media="screen, projection" />
  214.32 +    <script type="text/javascript" src="/js/interos_settings.js"></script>
  214.33 +  </head>
  214.34 +  <frameset rows="*,72" border="0" frameborder="0" framespacing="0">
  214.35 +    <frame name="menu" src="/menu?name=settings" 
  214.36 +           frameborder="0" marginwidth="0" marginheight="0" 
  214.37 +           noresize="noresize" scrolling="auto" />
  214.38 +    <frame name="button" src="/bottom?button=settings" 
  214.39 +           frameborder="0" marginwidth="0" marginheight="0" 
  214.40 +           noresize="noresize" scrolling="auto" />
  214.41 +    <noframes>
  214.42 +      <body id="body">
  214.43 +        <div id="settingsEntries">
  214.44 +          <p><a href="/main?settings=button_size">button size</a></p>
  214.45 +        </div>
  214.46 +        <div id="settingsLink"><a href="/main">settings</a></div>
  214.47 +      </body>
  214.48 +    </noframes>
  214.49 +  </frameset>
  214.50 +  <!--=====================================================================-->
  214.51 +  <!--                  Copyright and Trademark Statement                  -->
  214.52 +  <!--=====================================================================-->
  214.53 +  <!--                                                                     -->
  214.54 +  <!--          All original textual and graphical site content:           -->
  214.55 +  <!--                                                                     -->
  214.56 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  214.57 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  214.58 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  214.59 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  214.60 +  <!--  product, and service names mentioned herein may be the properties  -->
  214.61 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  214.62 +  <!--  are the properties of their respective authors.  All software      -->
  214.63 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  214.64 +  <!--                                                                     -->
  214.65 +  <!--=====================================================================-->
  214.66 +  <!--                      e-mail: info@interos.com                       -->
  214.67 +  <!--=====================================================================-->
  214.68 +</html>
   215.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   215.2 +++ b/xhtml/cgi/menu_new_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   215.3 @@ -0,0 +1,157 @@
   215.4 +<?xml version="1.0" encoding="utf-8"?>
   215.5 +<?xml-stylesheet type="text/css" href="/style/menu.css"?>
   215.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   215.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   215.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" 
   215.9 +      class="newMenu">
  215.10 +  <!--==================================================-->
  215.11 +  <!--    interos Standard Document Header - Markup     -->
  215.12 +  <!--==================================================-->
  215.13 +  <!--    URIs:  https://interos.com/menu?name=new      -->
  215.14 +  <!--           https://www.interos.com/menu?name=new  -->
  215.15 +  <!--   Title:  interos new menu                       -->
  215.16 +  <!--  Author:  Brent Angeline                         -->
  215.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional   -->
  215.18 +  <!--==================================================-->
  215.19 +  <head>
  215.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  215.21 +    <meta name="title" content="interos new menu" />
  215.22 +    <meta name="description" content="new menu for interos" />
  215.23 +    <meta name="author" content="Brent Angeline" />
  215.24 +    <meta name="copyright" 
  215.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  215.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  215.27 +    <title>interos new menu</title>
  215.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  215.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  215.30 +    <link rel="stylesheet" type="text/css" href="/style/menu.css" 
  215.31 +          media="screen, projection" />
  215.32 +    <script type="text/javascript" src="/js/menu.js"></script>
  215.33 +  </head>
  215.34 +  <body id="body">
  215.35 +    <center>
  215.36 +      <div id="newMenu">
  215.37 +        <div id="newMenuContent">
  215.38 +          <table>
  215.39 +            <thead>
  215.40 +              <tr>
  215.41 +                <th><h1>new menu</h1></th>
  215.42 +              </tr>
  215.43 +            </thead>
  215.44 +            <tbody>
  215.45 +              <tr>
  215.46 +                <td><a href="/new?alarm" target="_top">
  215.47 +                      <img src="/images/icons/new/alarm.png" 
  215.48 +                           alt="alarm" /><br /><span>alarm</span><br />
  215.49 +                      <br />
  215.50 +                    </a></td>
  215.51 +              </tr>
  215.52 +              <tr>
  215.53 +                <td><a href="/new?bookmark" target="_top">
  215.54 +                     <img src="/images/icons/new/bookmark.png" 
  215.55 +                           alt="bookmark" /><br /><span>bookmark</span><br />
  215.56 +                      <br />
  215.57 +                   </a></td>
  215.58 +              </tr>
  215.59 +             <tr>
  215.60 +                <td><a href="/new?chat" target="_top">
  215.61 +                      <img src="/images/icons/new/chat.png" 
  215.62 +                           alt="chat" /><br /><span>chat</span><br />
  215.63 +                      <br />
  215.64 +                    </a></td>
  215.65 +              </tr>
  215.66 +              <tr>
  215.67 +                <td><a href="/new?copy" target="_top">
  215.68 +                     <img src="/images/icons/new/copy.png" 
  215.69 +                          alt="copy" /><br /><span>copy</span><br />
  215.70 +                      <br />
  215.71 +                    </a></td>
  215.72 +              </tr>
  215.73 +              <tr>
  215.74 +                <td><a href="/new?document" target="_top">
  215.75 +                     <img src="/images/icons/new/document.png" 
  215.76 +                           alt="document" /><br /><span>document</span><br />
  215.77 +                      <br />
  215.78 +                    </a></td>
  215.79 +              </tr>
  215.80 +              <tr>
  215.81 +                <td><a href="/new?download" target="_top">
  215.82 +                      <img src="/images/icons/new/download.png" 
  215.83 +                           alt="download" /><br /><span>download</span><br />
  215.84 +                      <br />
  215.85 +                    </a></td>
  215.86 +              </tr>
  215.87 +              <tr>
  215.88 +                <td><a href="/new?e-mail" target="_top">
  215.89 +                     <img src="/images/icons/new/e-mail.png" 
  215.90 +                          alt="e-mail" /><br /><span>e-mail</span><br />
  215.91 +                      <br />
  215.92 +                    </a></td>
  215.93 +              </tr>
  215.94 +              <tr>
  215.95 +                <td><a href="/new?folder" target="_top">
  215.96 +                      <img src="/images/icons/new/folder.png" 
  215.97 +                          alt="folder" /><br /><span>folder</span><br />
  215.98 +                      <br />
  215.99 +                    </a></td>
 215.100 +              </tr>
 215.101 +              <tr>
 215.102 +                <td><a href="/new?phone_call" target="_top">
 215.103 +                     <img src="/images/icons/new/phone_call.png" 
 215.104 +                          alt="phone call" /><br /><span>phone call</span><br />
 215.105 +                     <br />
 215.106 +                   </a></td>
 215.107 +              </tr>
 215.108 +              <tr>
 215.109 +                <td><a href="/new?search" target="_top">
 215.110 +                      <img src="/images/icons/new/search.png" 
 215.111 +                          alt="search" /><br /><span>search</span><br />
 215.112 +                     <br />
 215.113 +                    </a></td>
 215.114 +             </tr>
 215.115 +              <tr>
 215.116 +                <td><a href="/new?share" target="_top">
 215.117 +                      <img src="/images/icons/new/share.png" 
 215.118 +                           alt="share" /><br /><span>share</span><br />
 215.119 +                      <br />
 215.120 +                    </a></td>
 215.121 +              </tr>
 215.122 +              <tr>
 215.123 +               <td><a href="/new?text_file" target="_top">
 215.124 +                     <img src="/images/icons/new/text_file.png" 
 215.125 +                           alt="text file" /><br /><span>text file</span><br />
 215.126 +                     <br />
 215.127 +                   </a></td>
 215.128 +              </tr>
 215.129 +              <tr>
 215.130 +                <td><a href="/new?upload" target="_top">
 215.131 +                     <img src="/images/icons/new/upload.png" 
 215.132 +                          alt="upload" /><br /><span>upload</span><br />
 215.133 +                     <br />
 215.134 +                   </a></td>
 215.135 +              </tr>
 215.136 +           </tbody>
 215.137 +          </table>
 215.138 +        </div>
 215.139 +      </div>
 215.140 +    </center>
 215.141 +  </body>
 215.142 +  <!--=====================================================================-->
 215.143 +  <!--                  Copyright and Trademark Statement                  -->
 215.144 +  <!--=====================================================================-->
 215.145 +  <!--                                                                     -->
 215.146 +  <!--          All original textual and graphical site content:           -->
 215.147 +  <!--                                                                     -->
 215.148 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 215.149 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 215.150 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 215.151 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 215.152 +  <!--  product, and service names mentioned herein may be the properties  -->
 215.153 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 215.154 +  <!--  are the properties of their respective authors.  All software      -->
 215.155 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 215.156 +  <!--                                                                     -->
 215.157 +  <!--=====================================================================-->
 215.158 +  <!--                      e-mail: info@interos.com                       -->
 215.159 +  <!--=====================================================================-->
 215.160 +</html>
   216.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   216.2 +++ b/xhtml/cgi/menu_next_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   216.3 @@ -0,0 +1,99 @@
   216.4 +<?xml version="1.0" encoding="utf-8"?>
   216.5 +<?xml-stylesheet type="text/css" href="/style/menu.css"?>
   216.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   216.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   216.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" 
   216.9 +      class="nextMenu">
  216.10 +  <!--===================================================-->
  216.11 +  <!--       interos Standard Document Header - Markup   -->
  216.12 +  <!--===================================================-->
  216.13 +  <!--    URIs:  https://interos.com/menu?name=next      -->
  216.14 +  <!--           https://www.interos.com/menu?name=next  -->
  216.15 +  <!--   Title:  interos next menu                       -->
  216.16 +  <!--  Author:  Brent Angeline                          -->
  216.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional    -->
  216.18 +  <!--===================================================-->
  216.19 +  <head>
  216.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  216.21 +    <meta name="title" content="interos next menu" />
  216.22 +    <meta name="description" content="next menu for interos" />
  216.23 +    <meta name="author" content="Brent Angeline" />
  216.24 +    <meta name="copyright" 
  216.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  216.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  216.27 +    <title>interos next menu</title>
  216.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  216.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  216.30 +    <link rel="stylesheet" type="text/css" href="/style/menu.css" 
  216.31 +          media="screen, projection" />
  216.32 +    <script type="text/javascript" src="/js/menu.js"></script>
  216.33 +  </head>
  216.34 +  <body id="body">
  216.35 +    <center>
  216.36 +      <div id="nextMenu">
  216.37 +        <div id="nextMenuContent">
  216.38 +          <table>
  216.39 +            <thead>
  216.40 +              <th><h1>next menu</h1></th>
  216.41 +            </thead>
  216.42 +            <tbody>
  216.43 +              <tr>
  216.44 +                <td><a href="/interos?next=bookmark" target="_top">
  216.45 +                      <img src="/images/icons/next/bookmark.png" 
  216.46 +                           alt="bookmark" /><br /><span>bookmark</span><br />
  216.47 +                      <br />
  216.48 +                    </a></td>
  216.49 +              </tr>
  216.50 +              <tr>
  216.51 +                <td><a href="/interos?next=close" target="_top">
  216.52 +                      <img src="/images/icons/next/close.png" 
  216.53 +                           alt="close" /><br /><span>close</span><br />
  216.54 +                      <br />
  216.55 +                    </a></td>
  216.56 +              </tr>
  216.57 +              <tr>
  216.58 +                <td><a href="/logout" target="_top">
  216.59 +                      <img src="/images/icons/next/logout.png" 
  216.60 +                           alt="logout" /><br /><span>logout</span><br />
  216.61 +                      <br />
  216.62 +                    </a></td>
  216.63 +              </tr>
  216.64 +              <tr>
  216.65 +                <td><a href="/interos?next=save" target="_top">
  216.66 +                      <img src="/images/icons/next/save.png" 
  216.67 +                           alt="save" /><br /><span>save</span><br />
  216.68 +                      <br />
  216.69 +                    </a></td>
  216.70 +              </tr>
  216.71 +              <tr>
  216.72 +                <td><a href="/interos?next=save_as" target="_top">
  216.73 +                      <img src="/images/icons/next/save_as.png" 
  216.74 +                           alt="save as" /><br /><span>save as</span><br />
  216.75 +                      <br />
  216.76 +                    </a></td>
  216.77 +              </tr>
  216.78 +            </tbody>
  216.79 +          </table>
  216.80 +        </div>
  216.81 +      </div>
  216.82 +    </center>
  216.83 +  </body>
  216.84 +  <!--=====================================================================-->
  216.85 +  <!--                  Copyright and Trademark Statement                  -->
  216.86 +  <!--=====================================================================-->
  216.87 +  <!--                                                                     -->
  216.88 +  <!--          All original textual and graphical site content:           -->
  216.89 +  <!--                                                                     -->
  216.90 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  216.91 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  216.92 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  216.93 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  216.94 +  <!--  product, and service names mentioned herein may be the properties  -->
  216.95 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  216.96 +  <!--  are the properties of their respective authors.  All software      -->
  216.97 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  216.98 +  <!--                                                                     -->
  216.99 +  <!--=====================================================================-->
 216.100 +  <!--                      e-mail: info@interos.com                       -->
 216.101 +  <!--=====================================================================-->
 216.102 +</html>
   217.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   217.2 +++ b/xhtml/cgi/menu_open_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   217.3 @@ -0,0 +1,137 @@
   217.4 +<?xml version="1.0" encoding="utf-8"?>
   217.5 +<?xml-stylesheet type="text/css" href="/style/menu.css"?>
   217.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   217.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   217.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" 
   217.9 +      class="openMenu">
  217.10 +  <!--===================================================-->
  217.11 +  <!--       interos Standard Document Header - Markup   -->
  217.12 +  <!--===================================================-->
  217.13 +  <!--    URIs:  https://interos.com/menu?name=open      -->
  217.14 +  <!--           https://www.interos.com/menu?name=open  -->
  217.15 +  <!--   Title:  interos open menu                       -->
  217.16 +  <!--  Author:  Brent Angeline                          -->
  217.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional    -->
  217.18 +  <!--===================================================-->
  217.19 +  <head>
  217.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  217.21 +    <meta name="title" content="interos open menu" />
  217.22 +    <meta name="description" content="open menu for interos" />
  217.23 +    <meta name="author" content="Brent Angeline" />
  217.24 +    <meta name="copyright" 
  217.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  217.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  217.27 +    <title>interos - open menu</title>
  217.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  217.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  217.30 +    <link rel="stylesheet" type="text/css" href="/style/menu.css" 
  217.31 +          media="screen, projection" />
  217.32 +    <script type="text/javascript" src="/js/menu.js"></script>
  217.33 +  </head>
  217.34 +  <body id="body">
  217.35 +    <center>
  217.36 +      <div id="openMenu">
  217.37 +        <div id="openMenuContent">
  217.38 +          <table>
  217.39 +            <thead>
  217.40 +              <tr>
  217.41 +                <th><h1>open menu</h1></th>
  217.42 +              </tr>
  217.43 +            </thead>
  217.44 +            <tbody>
  217.45 +              <tr>
  217.46 +                <td><a href="/interos?open=alarm" target="_top">
  217.47 +                      <img src="/images/icons/open/alarm.png" 
  217.48 +                           alt="alarm" /><br /><span>alarm</span><br />
  217.49 +                     <br />
  217.50 +                   </a></td>
  217.51 +              </tr>
  217.52 +              <tr>
  217.53 +                <td><a href="/interos?open=bookmark" target="_top">
  217.54 +                      <img src="/images/icons/open/bookmark.png" 
  217.55 +                           alt="bookmark" /><br /><span>bookmark</span><br />
  217.56 +                      <br />
  217.57 +                    </a></td>
  217.58 +              </tr>
  217.59 +              <tr>
  217.60 +                <td><a href="/interos?open=document" target="_top">
  217.61 +                      <img src="/images/icons/open/document.png" 
  217.62 +                           alt="document" /><br /><span>document</span><br />
  217.63 +                      <br />
  217.64 +                    </a></td>
  217.65 +              </tr>
  217.66 +              <tr>
  217.67 +                <td><a href="/interos?open=e-mail" target="_top">
  217.68 +                      <img src="/images/icons/open/e-mail.png" 
  217.69 +                           alt="e-mail" /><br /><span>e-mail</span><br />
  217.70 +                      <br />
  217.71 +                    </a></td>
  217.72 +              </tr>
  217.73 +              <tr>
  217.74 +                <td><a href="/interos?open=image" target="_top">
  217.75 +                      <img src="/images/icons/open/image.png" 
  217.76 +                           alt="image" /><br /><span>image</span><br />
  217.77 +                      <br />
  217.78 +                   </a></td>
  217.79 +              </tr>
  217.80 +              <tr>
  217.81 +                <td><a href="/interos?open=incoming" target="_top">
  217.82 +                      <img src="/images/icons/open/incoming.png" 
  217.83 +                           alt="incoming" /><br /><span>incoming</span><br />
  217.84 +                      <br />
  217.85 +                    </a></td>
  217.86 +              </tr>
  217.87 +              <tr>
  217.88 +                <td><a href="/interos?open=music" target="_top">
  217.89 +                      <img src="/images/icons/open/music.png" 
  217.90 +                           alt="music" /><br /><span>music</span><br />
  217.91 +                     <br />
  217.92 +                    </a></td>
  217.93 +              </tr>
  217.94 +              <tr>
  217.95 +                <td><a href="/interos?open=shared" target="_top">
  217.96 +                      <img src="/images/icons/open/shared.png" 
  217.97 +                           alt="shared" /><br /><span>shared</span><br />
  217.98 +                      <br />
  217.99 +                    </a></td>
 217.100 +              </tr>
 217.101 +              <tr>
 217.102 +                <td><a href="/interos?open=text_file" target="_top">
 217.103 +                      <img src="/images/icons/open/text_file.png" 
 217.104 +                           alt="text file" /><br /><span>text file</span><br />
 217.105 +                      <br />
 217.106 +                    </a></td>
 217.107 +              </tr>
 217.108 +              <tr>
 217.109 +                <td><a href="/interos?open=video" target="_top">
 217.110 +                      <img src="/images/icons/open/video.png" 
 217.111 +                           alt="video" /><br /><span>video</span><br />
 217.112 +                      <br />
 217.113 +                    </a></td>
 217.114 +              </tr>
 217.115 +            </tbody>
 217.116 +          </table>
 217.117 +        </center>
 217.118 +      </div>
 217.119 +      </div>
 217.120 +    </center>
 217.121 +  </body>
 217.122 +  <!--=====================================================================-->
 217.123 +  <!--                  Copyright and Trademark Statement                  -->
 217.124 +  <!--=====================================================================-->
 217.125 +  <!--                                                                     -->
 217.126 +  <!--          All original textual and graphical site content:           -->
 217.127 +  <!--                                                                     -->
 217.128 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 217.129 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 217.130 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 217.131 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 217.132 +  <!--  product, and service names mentioned herein may be the properties  -->
 217.133 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 217.134 +  <!--  are the properties of their respective authors.  All software      -->
 217.135 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 217.136 +  <!--                                                                     -->
 217.137 +  <!--=====================================================================-->
 217.138 +  <!--                      e-mail: info@interos.com                       -->
 217.139 +  <!--=====================================================================-->
 217.140 +</html>
   218.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   218.2 +++ b/xhtml/cgi/menu_settings_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   218.3 @@ -0,0 +1,129 @@
   218.4 +<?xml version="1.0" encoding="utf-8"?>
   218.5 +<?xml-stylesheet type="text/css" href="/style/menu.css"?>
   218.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   218.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   218.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" 
   218.9 +      class="settingsMenu">
  218.10 +  <!--=======================================================-->
  218.11 +  <!--         interos Standard Document Header - Markup     -->
  218.12 +  <!--=======================================================-->
  218.13 +  <!--    URIs:  https://interos.com/menu?name=settings      -->
  218.14 +  <!--           https://www.interos.com/menu?name=settings  -->
  218.15 +  <!--   Title:  interos settings menu                       -->
  218.16 +  <!--  Author:  Brent Angeline                              -->
  218.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional        -->
  218.18 +  <!--=======================================================-->
  218.19 +  <head>
  218.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  218.21 +    <meta name="title" content="interos settings menu" />
  218.22 +    <meta name="description" content="settings menu for interos" />
  218.23 +    <meta name="author" content="Brent Angeline" />
  218.24 +    <meta name="copyright" 
  218.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  218.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  218.27 +    <title>interos settings menu</title>
  218.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  218.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  218.30 +    <link rel="stylesheet" type="text/css" href="/style/menu.css" 
  218.31 +          media="screen, projection" />
  218.32 +    <script type="text/javascript" src="/js/menu.js"></script>
  218.33 +  </head>
  218.34 +  <body id="body">
  218.35 +    <center>
  218.36 +      <div id="settingsMenu">
  218.37 +        <div id="settingsMenuContent">
  218.38 +          <table>
  218.39 +            <thead>
  218.40 +              <tr>
  218.41 +                <th><h1>settings menu</h1></th>
  218.42 +              </tr>
  218.43 +            </thead>
  218.44 +            <tbody>
  218.45 +              <tr>
  218.46 +                <td><a href="/interos?settings=audio" target="_top">
  218.47 +                      <img src="/images/icons/settings/audio.png" 
  218.48 +                           alt="audio" /><br /><span>audio</span><br />
  218.49 +                      <br />
  218.50 +                    </a></td>
  218.51 +              </tr>
  218.52 +              <tr>
  218.53 +                <td><a href="/interos?settings=buttons" target="_top">
  218.54 +                      <img src="/images/icons/settings/buttons.png" 
  218.55 +                           alt="buttons" /><br /><span>buttons</span><br />
  218.56 +                      <br />
  218.57 +                    </a></td>
  218.58 +              </tr>
  218.59 +              <tr>
  218.60 +                <td><a href="/interos?settings=chat" target="_top">
  218.61 +                      <img src="/images/icons/settings/chat.png" 
  218.62 +                           alt="chat" /><br /><span>chat</span><br />
  218.63 +                      <br />
  218.64 +                    </a></td>
  218.65 +              </tr>
  218.66 +              <tr>
  218.67 +                <td><a href="/interos?settings=clock" target="_top">
  218.68 +                      <img src="/images/icons/settings/clock.png" 
  218.69 +                           alt="clock" /><br /><span>clock</span><br />
  218.70 +                      <br />
  218.71 +                    </a></td>
  218.72 +              </tr>
  218.73 +              <tr>
  218.74 +                <td><a href="/interos?settings=e-mail" target="_top">
  218.75 +                      <img src="/images/icons/settings/e-mail.png" 
  218.76 +                           alt="e-mail" /><br /><span>e-mail</span><br />
  218.77 +                      <br />
  218.78 +                    </a></td>
  218.79 +              </tr>
  218.80 +              <tr>
  218.81 +                <td><a href="/interos?settings=images" target="_top">
  218.82 +                      <img src="/images/icons/settings/images.png" 
  218.83 +                           alt="images" /><br /><span>images</span><br />
  218.84 +                      <br />
  218.85 +                    </a></td>
  218.86 +              </tr>
  218.87 +              <tr>
  218.88 +                <td><a href="/interos?settings=phone" target="_top">
  218.89 +                      <img src="/images/icons/settings/phone.png" 
  218.90 +                           alt="phone" /><br /><span>phone</span><br />
  218.91 +                      <br />
  218.92 +                    </a></td>
  218.93 +              </tr>
  218.94 +              <tr>
  218.95 +                <td><a href="/interos?settings=search" target="_top">
  218.96 +                      <img src="/images/icons/settings/search.png" 
  218.97 +                           alt="search" /><br /><span>search</span><br />
  218.98 +                      <br />
  218.99 +                    </a></td>
 218.100 +              </tr>
 218.101 +              <tr>
 218.102 +                <td><a href="/interos?settings=video" target="_top">
 218.103 +                      <img src="/images/icons/settings/video.png" 
 218.104 +                           alt="video" /><br /><span>video</span><br />
 218.105 +                      <br />
 218.106 +                    </a></td>
 218.107 +              </tr>
 218.108 +          </tbody>
 218.109 +        </table>
 218.110 +      </div>
 218.111 +      </div>
 218.112 +    </center>
 218.113 +  </body>
 218.114 +  <!--=====================================================================-->
 218.115 +  <!--                  Copyright and Trademark Statement                  -->
 218.116 +  <!--=====================================================================-->
 218.117 +  <!--                                                                     -->
 218.118 +  <!--          All original textual and graphical site content:           -->
 218.119 +  <!--                                                                     -->
 218.120 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 218.121 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 218.122 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 218.123 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 218.124 +  <!--  product, and service names mentioned herein may be the properties  -->
 218.125 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 218.126 +  <!--  are the properties of their respective authors.  All software      -->
 218.127 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 218.128 +  <!--                                                                     -->
 218.129 +  <!--=====================================================================-->
 218.130 +  <!--                      e-mail: info@interos.com                       -->
 218.131 +  <!--=====================================================================-->
 218.132 +</html>
   219.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   219.2 +++ b/xhtml/cgi/new_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   219.3 @@ -0,0 +1,63 @@
   219.4 +<?xml version="1.0" encoding="utf-8"?>
   219.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   219.6 +<!DOCTYPE html SYSTEM "http://interos.org/dtd/xhtml1-borderless-frameset.dtd">
   219.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   219.8 +  <!--========================================================-->
   219.9 +  <!--       interos Standard Document Header - Markup        -->
  219.10 +  <!--========================================================-->
  219.11 +  <!--    URIs:  https://interos.com/new                      -->
  219.12 +  <!--           https://www.interos.com/new                  -->
  219.13 +  <!--   Title:  interos new                                  -->
  219.14 +  <!--  Author:  Brent Angeline                               -->
  219.15 +  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->
  219.16 +  <!--========================================================-->
  219.17 +  <head>
  219.18 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  219.19 +    <meta name="title" content="interos new" />
  219.20 +    <meta name="description" content="new menu for interos" />
  219.21 +    <meta name="author" content="Brent Angeline" />
  219.22 +    <meta name="copyright" 
  219.23 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  219.24 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  219.25 +    <title>interos new</title>
  219.26 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  219.27 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  219.28 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  219.29 +          media="screen, projection" />
  219.30 +    <script type="text/javascript" src="/js/interos_new.js"></script>
  219.31 +  </head>
  219.32 +  <frameset rows="*,72" border="0" frameborder="0" framespacing="0">
  219.33 +    <frame name="menu" src="/menu?name=new" 
  219.34 +           frameborder="0" marginwidth="0" marginheight="0" 
  219.35 +           noresize="noresize" scrolling="auto" />
  219.36 +    <frame name="button" src="/bottom?button=new" 
  219.37 +           frameborder="0" marginwidth="0" marginheight="0" 
  219.38 +           noresize="noresize" scrolling="auto" />
  219.39 +    <noframes>
  219.40 +      <body id="body">
  219.41 +        <div id="newEntries">
  219.42 +          <p><a href="/interos?new=text_file">text file</a></p>
  219.43 +        </div>
  219.44 +        <div id="newLink"><a href="/interos">new</a></div>
  219.45 +      </body>
  219.46 +    </noframes>
  219.47 +  </frameset>
  219.48 +  <!--=====================================================================-->
  219.49 +  <!--                  Copyright and Trademark Statement                  -->
  219.50 +  <!--=====================================================================-->
  219.51 +  <!--                                                                     -->
  219.52 +  <!--          All original textual and graphical site content:           -->
  219.53 +  <!--                                                                     -->
  219.54 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  219.55 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  219.56 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  219.57 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  219.58 +  <!--  product, and service names mentioned herein may be the properties  -->
  219.59 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  219.60 +  <!--  are the properties of their respective authors.  All software      -->
  219.61 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  219.62 +  <!--                                                                     -->
  219.63 +  <!--=====================================================================-->
  219.64 +  <!--                      e-mail: info@interos.com                       -->
  219.65 +  <!--=====================================================================-->
  219.66 +</html>
   220.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   220.2 +++ b/xhtml/cgi/new_js_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   220.3 @@ -0,0 +1,63 @@
   220.4 +<?xml version="1.0" encoding="utf-8"?>
   220.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   220.6 +<!DOCTYPE html SYSTEM "http://interos.org/dtd/xhtml1-borderless-frameset.dtd">
   220.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   220.8 +  <!--========================================================-->
   220.9 +  <!--       interos Standard Document Header - Markup        -->
  220.10 +  <!--========================================================-->
  220.11 +  <!--    URIs:  https://interos.com/new                      -->
  220.12 +  <!--           https://www.interos.com/new                  -->
  220.13 +  <!--   Title:  interos new                                  -->
  220.14 +  <!--  Author:  Brent Angeline                               -->
  220.15 +  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->
  220.16 +  <!--========================================================-->
  220.17 +  <head>
  220.18 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  220.19 +    <meta name="title" content="interos new" />
  220.20 +    <meta name="description" content="new menu for interos" />
  220.21 +    <meta name="author" content="Brent Angeline" />
  220.22 +    <meta name="copyright" 
  220.23 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  220.24 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  220.25 +    <title>interos new</title>
  220.26 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  220.27 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  220.28 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  220.29 +          media="screen, projection" />
  220.30 +    <script type="text/javascript" src="/js/interos_new.js"></script>
  220.31 +  </head>
  220.32 +  <frameset rows="*,72" border="0" frameborder="0" framespacing="0">
  220.33 +    <frame name="menu" src="/menu?name=new" frameborder="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="no" />
  220.34 +    <frame name="button" src="/bottom?button=new" frameborder="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="no" />
  220.35 +    <noframes>
  220.36 +      <body id="body">
  220.37 +        <div id="newContainer">
  220.38 +          <div id="newContent">
  220.39 +            <div id="newEntries">
  220.40 +              <p><a href="/interos?new=text_file">text file</a></p>
  220.41 +            </div>
  220.42 +            <div id="newLink"><a href="/interos">new</a></div>
  220.43 +          </div>
  220.44 +        </div>
  220.45 +      </body>
  220.46 +    </noframes>
  220.47 +  </frameset>
  220.48 +  <!--=====================================================================-->
  220.49 +  <!--                  Copyright and Trademark Statement                  -->
  220.50 +  <!--=====================================================================-->
  220.51 +  <!--                                                                     -->
  220.52 +  <!--          All original textual and graphical site content:           -->
  220.53 +  <!--                                                                     -->
  220.54 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  220.55 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  220.56 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  220.57 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  220.58 +  <!--  product, and service names mentioned herein may be the properties  -->
  220.59 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  220.60 +  <!--  are the properties of their respective authors.  All software      -->
  220.61 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  220.62 +  <!--                                                                     -->
  220.63 +  <!--=====================================================================-->
  220.64 +  <!--                      e-mail: info@interos.com                       -->
  220.65 +  <!--=====================================================================-->
  220.66 +</html>
   221.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   221.2 +++ b/xhtml/cgi/new_user_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   221.3 @@ -0,0 +1,117 @@
   221.4 +<?xml version="1.0" encoding="utf-8"?>
   221.5 +<?xml-stylesheet type="text/css" href="/style/login.css"?>
   221.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   221.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   221.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   221.9 +  <!--=================================================-->
  221.10 +  <!--    interos Standard Document Header - Markup    -->
  221.11 +  <!--=================================================-->
  221.12 +  <!--    URIs:  https://interos.com/new_user          -->
  221.13 +  <!--           https://www.interos.com/new_user      -->
  221.14 +  <!--   Title:  new interos user                      -->
  221.15 +  <!--  Author:  Brent Angeline                        -->
  221.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  221.17 +  <!--=================================================-->
  221.18 +  <head>
  221.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  221.20 +    <meta name="title" content="new interos user" />
  221.21 +    <meta name="description" content="create your login" />
  221.22 +    <meta name="author" content="Brent Angeline" />
  221.23 +    <meta name="copyright" 
  221.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  221.25 +    <meta name="robots" content="index, nofollow, noarchive" />
  221.26 +    <title>new interos user</title>
  221.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  221.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  221.29 +    <link rel="stylesheet" type="text/css" href="/style/login.css" 
  221.30 +          media="screen, projection" />
  221.31 +    <script type="text/javascript" src="/js/login.js"></script>
  221.32 +  </head>
  221.33 +  <body id="body">
  221.34 +    <center>
  221.35 +      <p id="navigation">
  221.36 +        <a href="/about">about</a> | 
  221.37 +        <a href="/blog">blog</a> | 
  221.38 +        <a href="/code">code</a> | 
  221.39 +        <a href="https://interos.org/">develop</a> | 
  221.40 +        <a href="/e-mail">e-mail</a> | 
  221.41 +        <a href="/f.a.q.">f.a.q.</a> | 
  221.42 +        <a href="/gear">gear</a> | 
  221.43 +        <a href="/help">help</a>
  221.44 +      </p>
  221.45 +      <form id="loginForm" name="loginForm" action="new_user" method="post">
  221.46 +        <table id="mainPanel">
  221.47 +          <thead>
  221.48 +            <tr>
  221.49 +              <th colspan="3"><center>
  221.50 +                                <div id="title">
  221.51 +                                  <h1>
  221.52 +                                    <a href="/">interos</a>
  221.53 +                                  </h1>
  221.54 +                                  <h2>
  221.55 +                                    create your login
  221.56 +                                  </h2>
  221.57 +                                </div>
  221.58 +                              </center></th>
  221.59 +            </tr>
  221.60 +          </thead>
  221.61 +          <tfoot>
  221.62 +            <tr>
  221.63 +              <td colspan="3"><br /></td>
  221.64 +            </tr>
  221.65 +          </tfoot>
  221.66 +          <tbody>
  221.67 +            <tr>
  221.68 +              <td><label for="login">login:</label>&nbsp;</td>
  221.69 +              <td><input id="login" name="login" type="text" 
  221.70 +                         size="16"  maxlength="16" /></td>
  221.71 +            </tr>
  221.72 +            <tr>
  221.73 +              <td><label for="password">password:</label>&nbsp;</td>
  221.74 +              <td><input id="password" name="password" type="password" 
  221.75 +                         size="16"     maxlength="16" /></td>
  221.76 +            </tr>
  221.77 +            <tr>
  221.78 +              <td><label for="verify">password:</label>&nbsp;</td>
  221.79 +              <td><input id="verify" name="verify" type="password" 
  221.80 +                         size="16"   maxlength="16" /></td>
  221.81 +              <td rowspan="2"><div id="submitButton">
  221.82 +                                &nbsp;<input type="submit" 
  221.83 +                                             value="login &raquo;" />
  221.84 +                              </div></td>
  221.85 +            </tr>
  221.86 +          </tbody>
  221.87 +        </table>
  221.88 +      </form>
  221.89 +      <p id="newUser">
  221.90 +        <strong>* enter password twice</strong><br />
  221.91 +        to create your login<br />
  221.92 +        <a href="/login">&laquo; back to login</a>
  221.93 +      </p>
  221.94 +      <p>
  221.95 +        <br />
  221.96 +      </p>
  221.97 +      <p id="copyrightDates">
  221.98 +        &copy; 2001&#8211;2009 interos
  221.99 +      </p>
 221.100 +    </center>
 221.101 +  </body>
 221.102 +  <!--=====================================================================-->
 221.103 +  <!--                  Copyright and Trademark Statement                  -->
 221.104 +  <!--=====================================================================-->
 221.105 +  <!--                                                                     -->
 221.106 +  <!--          All original textual and graphical site content:           -->
 221.107 +  <!--                                                                     -->
 221.108 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 221.109 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 221.110 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 221.111 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 221.112 +  <!--  product, and service names mentioned herein may be the properties  -->
 221.113 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 221.114 +  <!--  are the properties of their respective authors.  All software      -->
 221.115 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 221.116 +  <!--                                                                     -->
 221.117 +  <!--=====================================================================-->
 221.118 +  <!--                      e-mail: info@interos.com                       -->
 221.119 +  <!--=====================================================================-->
 221.120 +</html>
   222.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   222.2 +++ b/xhtml/cgi/next_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   222.3 @@ -0,0 +1,21 @@
   222.4 +
   222.5 +
   222.6 +  <!--=====================================================================-->
   222.7 +  <!--                  Copyright and Trademark Statement                  -->
   222.8 +  <!--=====================================================================-->
   222.9 +  <!--                                                                     -->
  222.10 +  <!--          All original textual and graphical site content:           -->
  222.11 +  <!--                                                                     -->
  222.12 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  222.13 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  222.14 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  222.15 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  222.16 +  <!--  product, and service names mentioned herein may be the properties  -->
  222.17 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  222.18 +  <!--  are the properties of their respective authors.  All software      -->
  222.19 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  222.20 +  <!--                                                                     -->
  222.21 +  <!--=====================================================================-->
  222.22 +  <!--                      e-mail: info@interos.com                       -->
  222.23 +  <!--=====================================================================-->
  222.24 +
   223.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   223.2 +++ b/xhtml/cgi/next_js_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   223.3 @@ -0,0 +1,21 @@
   223.4 +
   223.5 +
   223.6 +  <!--=====================================================================-->
   223.7 +  <!--                  Copyright and Trademark Statement                  -->
   223.8 +  <!--=====================================================================-->
   223.9 +  <!--                                                                     -->
  223.10 +  <!--          All original textual and graphical site content:           -->
  223.11 +  <!--                                                                     -->
  223.12 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  223.13 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  223.14 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  223.15 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  223.16 +  <!--  product, and service names mentioned herein may be the properties  -->
  223.17 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  223.18 +  <!--  are the properties of their respective authors.  All software      -->
  223.19 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  223.20 +  <!--                                                                     -->
  223.21 +  <!--=====================================================================-->
  223.22 +  <!--                      e-mail: info@interos.com                       -->
  223.23 +  <!--=====================================================================-->
  223.24 +
   224.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   224.2 +++ b/xhtml/cgi/open_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   224.3 @@ -0,0 +1,21 @@
   224.4 +
   224.5 +
   224.6 +  <!--=====================================================================-->
   224.7 +  <!--                  Copyright and Trademark Statement                  -->
   224.8 +  <!--=====================================================================-->
   224.9 +  <!--                                                                     -->
  224.10 +  <!--          All original textual and graphical site content:           -->
  224.11 +  <!--                                                                     -->
  224.12 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  224.13 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  224.14 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  224.15 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  224.16 +  <!--  product, and service names mentioned herein may be the properties  -->
  224.17 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  224.18 +  <!--  are the properties of their respective authors.  All software      -->
  224.19 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  224.20 +  <!--                                                                     -->
  224.21 +  <!--=====================================================================-->
  224.22 +  <!--                      e-mail: info@interos.com                       -->
  224.23 +  <!--=====================================================================-->
  224.24 +
   225.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   225.2 +++ b/xhtml/cgi/open_js_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   225.3 @@ -0,0 +1,21 @@
   225.4 +
   225.5 +
   225.6 +  <!--=====================================================================-->
   225.7 +  <!--                  Copyright and Trademark Statement                  -->
   225.8 +  <!--=====================================================================-->
   225.9 +  <!--                                                                     -->
  225.10 +  <!--          All original textual and graphical site content:           -->
  225.11 +  <!--                                                                     -->
  225.12 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  225.13 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  225.14 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  225.15 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  225.16 +  <!--  product, and service names mentioned herein may be the properties  -->
  225.17 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  225.18 +  <!--  are the properties of their respective authors.  All software      -->
  225.19 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  225.20 +  <!--                                                                     -->
  225.21 +  <!--=====================================================================-->
  225.22 +  <!--                      e-mail: info@interos.com                       -->
  225.23 +  <!--=====================================================================-->
  225.24 +
   226.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   226.2 +++ b/xhtml/cgi/settings_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   226.3 @@ -0,0 +1,21 @@
   226.4 +
   226.5 +
   226.6 +  <!--=====================================================================-->
   226.7 +  <!--                  Copyright and Trademark Statement                  -->
   226.8 +  <!--=====================================================================-->
   226.9 +  <!--                                                                     -->
  226.10 +  <!--          All original textual and graphical site content:           -->
  226.11 +  <!--                                                                     -->
  226.12 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  226.13 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  226.14 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  226.15 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  226.16 +  <!--  product, and service names mentioned herein may be the properties  -->
  226.17 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  226.18 +  <!--  are the properties of their respective authors.  All software      -->
  226.19 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  226.20 +  <!--                                                                     -->
  226.21 +  <!--=====================================================================-->
  226.22 +  <!--                      e-mail: info@interos.com                       -->
  226.23 +  <!--=====================================================================-->
  226.24 +
   227.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   227.2 +++ b/xhtml/cgi/settings_js_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   227.3 @@ -0,0 +1,21 @@
   227.4 +
   227.5 +
   227.6 +  <!--=====================================================================-->
   227.7 +  <!--                  Copyright and Trademark Statement                  -->
   227.8 +  <!--=====================================================================-->
   227.9 +  <!--                                                                     -->
  227.10 +  <!--          All original textual and graphical site content:           -->
  227.11 +  <!--                                                                     -->
  227.12 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  227.13 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  227.14 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  227.15 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  227.16 +  <!--  product, and service names mentioned herein may be the properties  -->
  227.17 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  227.18 +  <!--  are the properties of their respective authors.  All software      -->
  227.19 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  227.20 +  <!--                                                                     -->
  227.21 +  <!--=====================================================================-->
  227.22 +  <!--                      e-mail: info@interos.com                       -->
  227.23 +  <!--=====================================================================-->
  227.24 +
   228.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   228.2 +++ b/xhtml/cgi/top_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   228.3 @@ -0,0 +1,74 @@
   228.4 +<?xml version="1.0" encoding="utf-8"?>
   228.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   228.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   228.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   228.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   228.9 +  <!--=================================================-->
  228.10 +  <!--    interos Standard Document Header - Markup    -->
  228.11 +  <!--=================================================-->
  228.12 +  <!--    URIs:  https://interos.com/top               -->
  228.13 +  <!--           https://www.interos.com/top           -->
  228.14 +  <!--   Title:  interos top toolbar                   -->
  228.15 +  <!--  Author:  Brent Angeline                        -->
  228.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  228.17 +  <!--=================================================-->
  228.18 +  <head>
  228.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  228.20 +    <meta name="title" content="interos top toolbar" />
  228.21 +    <meta name="description" content="top toolbar for interos" />
  228.22 +    <meta name="author" content="Brent Angeline" />
  228.23 +    <meta name="copyright" 
  228.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  228.25 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  228.26 +    <title>interos top</title>
  228.27 +    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
  228.28 +    <link rel="icon" href="/images/favicon.gif" type="image/gif" />
  228.29 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  228.30 +          media="screen, projection" />
  228.31 +    <script type="text/javascript" src="/js/top.js"></script>
  228.32 +  </head>
  228.33 +  <body id="body">
  228.34 +    <center>
  228.35 +      <table id="topToolbar" width="100%" 
  228.36 +             border="0" cellpadding="0" cellspacing="0">
  228.37 +        <tr>
  228.38 +          <td width="72" 
  228.39 +              height="72"><center>
  228.40 +                            <a id="openButton" 
  228.41 +                               href="/interos?menu=open" 
  228.42 +                               style="padding: 26px 0 27px" 
  228.43 +                               target="_top"><strong>open</strong></a>
  228.44 +                          </center></td>
  228.45 +          <td><center>
  228.46 +                &nbsp;<span class="hidden">|</span>&nbsp;
  228.47 +              </center></td>
  228.48 +          <td width="72" 
  228.49 +              height="72"><center>
  228.50 +                            <a id="nextButton" 
  228.51 +                               href="/interos?menu=next" 
  228.52 +                               style="padding: 26px 0 27px" 
  228.53 +                               target="_top"><strong>next</strong></a>
  228.54 +                          </center></td>
  228.55 +        </tr>
  228.56 +      </table>
  228.57 +    </center>
  228.58 +  </body>
  228.59 +  <!--=====================================================================-->
  228.60 +  <!--                  Copyright and Trademark Statement                  -->
  228.61 +  <!--=====================================================================-->
  228.62 +  <!--                                                                     -->
  228.63 +  <!--          All original textual and graphical site content:           -->
  228.64 +  <!--                                                                     -->
  228.65 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  228.66 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  228.67 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  228.68 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  228.69 +  <!--  product, and service names mentioned herein may be the properties  -->
  228.70 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  228.71 +  <!--  are the properties of their respective authors.  All software      -->
  228.72 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  228.73 +  <!--                                                                     -->
  228.74 +  <!--=====================================================================-->
  228.75 +  <!--                      e-mail: info@interos.com                       -->
  228.76 +  <!--=====================================================================-->
  228.77 +</html>
   229.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   229.2 +++ b/xhtml/cgi/top_js_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   229.3 @@ -0,0 +1,145 @@
   229.4 +<?xml version="1.0" encoding="utf-8"?>
   229.5 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   229.6 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   229.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   229.8 +  <!--=================================================-->
   229.9 +  <!--    interos Standard Document Header - Markup    -->
  229.10 +  <!--=================================================-->
  229.11 +  <!--    URIs:  https://interos.com/bottom            -->
  229.12 +  <!--           https://www.interos.com/bottom        -->
  229.13 +  <!--   Title:  interos bottom toolbar                -->
  229.14 +  <!--  Author:  Brent Angeline                        -->
  229.15 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  229.16 +  <!--=================================================-->
  229.17 +  <head>
  229.18 +    <title>interos top toolbar</title>
  229.19 +    <style type="text/css">
  229.20 +      html, body, center, a, strong {
  229.21 +        display: block;
  229.22 +      }
  229.23 +      html, body {
  229.24 +        color: #c0c0c0;
  229.25 +        background: #808080;
  229.26 +        font: 1em sans-serif;
  229.27 +        margin: 0;
  229.28 +      }
  229.29 +      a {
  229.30 +        color: #d7d7d7;
  229.31 +        font-style: italic;
  229.32 +        text-decoration: none;
  229.33 +        height: 72px;
  229.34 +      }
  229.35 +      a:focus {
  229.36 +        outline-offset: -1px;
  229.37 +      }
  229.38 +      a:hover strong {
  229.39 +        text-decoration: underline;
  229.40 +      }
  229.41 +      .toolbar {
  229.42 +        color: #000000;
  229.43 +        background: #c0c0c0 url(/style/images/toolbar.gif) repeat-x;
  229.44 +      }
  229.45 +      .hidden {
  229.46 +        display: none;
  229.47 +      }
  229.48 +      #newLink, #settingsLink {
  229.49 +        display: table;
  229.50 +        height: 72px;
  229.51 +        overflow: hidden;
  229.52 +        #position: relative;
  229.53 +      }
  229.54 +      #newButton, #settingsButton {
  229.55 +        cursor: pointer;
  229.56 +        display: table-cell;
  229.57 +        vertical-align: middle;
  229.58 +        text-align: center;
  229.59 +        width: 72px;
  229.60 +        #position: absolute;
  229.61 +        #top: 50%;
  229.62 +        #left: 0;
  229.63 +      }
  229.64 +      #newText, #settingsText {
  229.65 +        #position: relative;
  229.66 +        #top: -50%
  229.67 +      }
  229.68 +      #newLink {
  229.69 +        color: #eaeaea;
  229.70 +        background: #7fa85a 
  229.71 +                    url(/style/images/buttons/new_faded.gif) repeat-x;
  229.72 +      }
  229.73 +      #newLink:hover {
  229.74 +        color: #ffffff;
  229.75 +        background: #5f9e28 
  229.76 +                    url(/style/images/buttons/new.gif) repeat-x;
  229.77 +      }
  229.78 +      #newLink:active {
  229.79 +        color: #000000;
  229.80 +        background: #8fc154 bottom 
  229.81 +                    url(/style/images/buttons/new_down.gif) repeat-x;
  229.82 +      }
  229.83 +      #settingsLink {
  229.84 +        color: #eaeaea;
  229.85 +        background: #5a5abd 
  229.86 +                    url(/style/images/buttons/settings_faded.gif) repeat-x;
  229.87 +      }
  229.88 +      #settingsLink:hover {
  229.89 +        color: #ffffff;
  229.90 +        background: #2828bc 
  229.91 +                    url(/style/images/buttons/settings.gif) repeat-x;
  229.92 +      }
  229.93 +      #settingsLink:active {
  229.94 +        color: #000000;
  229.95 +        background: #4949cb bottom 
  229.96 +                    url(/style/images/buttons/settings_down.gif) repeat-x;
  229.97 +      }
  229.98 +    </style>
  229.99 +  </head>
 229.100 +  <body>
 229.101 +    <center>
 229.102 +      <table class="toolbar" width="100%" 
 229.103 +             border="0" cellpadding="0" cellspacing="0">
 229.104 +        <tr>
 229.105 +          <td width="72" 
 229.106 +              height="72"><center>
 229.107 +                            <a id="newLink" href="#">
 229.108 +                              <span id="newButton">
 229.109 +                                <strong id="newText">
 229.110 +                                  new
 229.111 +                                </strong>
 229.112 +                              </span>
 229.113 +                            </a>
 229.114 +                          </center></td>
 229.115 +          <td><center>&nbsp;<span class="hidden">|</span>&nbsp;</center></td>
 229.116 +          <td width="72" 
 229.117 +              height="72"><center>
 229.118 +                            <a id="settingsLink" href="#">
 229.119 +                              <span id="settingsButton">
 229.120 +                                <strong id="settingsText">
 229.121 +                                  settings
 229.122 +                                </strong>
 229.123 +                              </span>
 229.124 +                            </a>
 229.125 +                          </center></td>
 229.126 +        </tr>
 229.127 +      </table>
 229.128 +    </center>
 229.129 +  </body>
 229.130 +  <!--=====================================================================-->
 229.131 +  <!--                  Copyright and Trademark Statement                  -->
 229.132 +  <!--=====================================================================-->
 229.133 +  <!--                                                                     -->
 229.134 +  <!--          All original textual and graphical site content:           -->
 229.135 +  <!--                                                                     -->
 229.136 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 229.137 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 229.138 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 229.139 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 229.140 +  <!--  product, and service names mentioned herein may be the properties  -->
 229.141 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 229.142 +  <!--  are the properties of their respective authors.  All software      -->
 229.143 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 229.144 +  <!--                                                                     -->
 229.145 +  <!--=====================================================================-->
 229.146 +  <!--                      e-mail: info@interos.com                       -->
 229.147 +  <!--=====================================================================-->
 229.148 +</html>
   230.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   230.2 +++ b/xhtml/cgi/top_next_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   230.3 @@ -0,0 +1,74 @@
   230.4 +<?xml version="1.0" encoding="utf-8"?>
   230.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   230.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   230.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   230.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   230.9 +  <!--=================================================-->
  230.10 +  <!--    interos Standard Document Header - Markup    -->
  230.11 +  <!--=================================================-->
  230.12 +  <!--    URIs:  https://interos.com/top               -->
  230.13 +  <!--           https://www.interos.com/top           -->
  230.14 +  <!--   Title:  interos top toolbar                   -->
  230.15 +  <!--  Author:  Brent Angeline                        -->
  230.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  230.17 +  <!--=================================================-->
  230.18 +  <head>
  230.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  230.20 +    <meta name="title" content="interos top toolbar" />
  230.21 +    <meta name="description" content="top toolbar for interos" />
  230.22 +    <meta name="author" content="Brent Angeline" />
  230.23 +    <meta name="copyright" 
  230.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  230.25 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  230.26 +    <title>interos top</title>
  230.27 +    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
  230.28 +    <link rel="icon" href="/images/favicon.gif" type="image/gif" />
  230.29 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  230.30 +          media="screen, projection" />
  230.31 +    <script type="text/javascript" src="/js/top.js"></script>
  230.32 +  </head>
  230.33 +  <body id="body">
  230.34 +    <center>
  230.35 +      <table id="topToolbar" width="100%" 
  230.36 +             border="0" cellpadding="0" cellspacing="0">
  230.37 +        <tr>
  230.38 +          <td width="72" 
  230.39 +              height="72"><center>
  230.40 +                            <a id="openButton" 
  230.41 +                               href="/interos?menu=open" 
  230.42 +                               style="padding: 26px 0 27px" 
  230.43 +                               target="_top"><strong>open</strong></a>
  230.44 +                          </center></td>
  230.45 +          <td><center>
  230.46 +                &nbsp;<span class="hidden">|</span>&nbsp;
  230.47 +              </center></td>
  230.48 +          <td width="72" 
  230.49 +              height="72"><center>
  230.50 +                            <a id="nextButton" 
  230.51 +                               href="/interos?menu=next" 
  230.52 +                               style="padding: 26px 0 27px" 
  230.53 +                               target="_top"><strong>next</strong></a>
  230.54 +                          </center></td>
  230.55 +        </tr>
  230.56 +      </table>
  230.57 +    </center>
  230.58 +  </body>
  230.59 +  <!--=====================================================================-->
  230.60 +  <!--                  Copyright and Trademark Statement                  -->
  230.61 +  <!--=====================================================================-->
  230.62 +  <!--                                                                     -->
  230.63 +  <!--          All original textual and graphical site content:           -->
  230.64 +  <!--                                                                     -->
  230.65 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  230.66 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  230.67 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  230.68 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  230.69 +  <!--  product, and service names mentioned herein may be the properties  -->
  230.70 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  230.71 +  <!--  are the properties of their respective authors.  All software      -->
  230.72 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  230.73 +  <!--                                                                     -->
  230.74 +  <!--=====================================================================-->
  230.75 +  <!--                      e-mail: info@interos.com                       -->
  230.76 +  <!--=====================================================================-->
  230.77 +</html>
   231.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   231.2 +++ b/xhtml/cgi/top_open_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   231.3 @@ -0,0 +1,72 @@
   231.4 +<?xml version="1.0" encoding="utf-8"?>
   231.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   231.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   231.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   231.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   231.9 +  <!--====================================================-->
  231.10 +  <!--     interos Standard Document Header - Markup      -->
  231.11 +  <!--====================================================-->
  231.12 +  <!--    URIs:  https://interos.com/top?button=open      -->
  231.13 +  <!--           https://www.interos.com/top?button=open  -->
  231.14 +  <!--   Title:  interos open menu button                 -->
  231.15 +  <!--  Author:  Brent Angeline                           -->
  231.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional     -->
  231.17 +  <!--====================================================-->
  231.18 +  <head>
  231.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  231.20 +    <meta name="title" content="interos open menu button" />
  231.21 +    <meta name="description" content="button for interos open menu" />
  231.22 +    <meta name="author" content="Brent Angeline" />
  231.23 +    <meta name="copyright" 
  231.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  231.25 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  231.26 +    <title>interos open menu button</title>
  231.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  231.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  231.29 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  231.30 +          media="screen, projection" />
  231.31 +    <script type="text/javascript" src="/js/top.js"></script>
  231.32 +  </head>
  231.33 +  <body id="body">
  231.34 +    <center>
  231.35 +      <table id="topToolbarFaded" width="100%" 
  231.36 +             border="0" cellpadding="0" cellspacing="0">
  231.37 +        <tr>
  231.38 +          <td width="72" 
  231.39 +              height="72"><center>
  231.40 +                            <a id="openMenuButton" 
  231.41 +                               href="/main" 
  231.42 +                               style="padding: 26px 0 27px" 
  231.43 +                               target="_top"><strong>&laquo; back</strong></a>
  231.44 +                          </center></td>
  231.45 +          <td><center>
  231.46 +                &nbsp;<span class="hidden">|</span>&nbsp;
  231.47 +              </center></td>
  231.48 +          <td id="topToolbarCornerFaded" 
  231.49 +              width="72" 
  231.50 +              height="72"><p>
  231.51 +                            <br />
  231.52 +                          </p></td>
  231.53 +        </tr>
  231.54 +      </table>
  231.55 +    </center>
  231.56 +  </body>
  231.57 +  <!--=====================================================================-->
  231.58 +  <!--                  Copyright and Trademark Statement                  -->
  231.59 +  <!--=====================================================================-->
  231.60 +  <!--                                                                     -->
  231.61 +  <!--          All original textual and graphical site content:           -->
  231.62 +  <!--                                                                     -->
  231.63 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  231.64 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  231.65 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  231.66 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  231.67 +  <!--  product, and service names mentioned herein may be the properties  -->
  231.68 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  231.69 +  <!--  are the properties of their respective authors.  All software      -->
  231.70 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  231.71 +  <!--                                                                     -->
  231.72 +  <!--=====================================================================-->
  231.73 +  <!--                      e-mail: info@interos.com                       -->
  231.74 +  <!--=====================================================================-->
  231.75 +</html>
   232.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   232.2 +++ b/xhtml/cgi/welcome_back_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   232.3 @@ -0,0 +1,21 @@
   232.4 +
   232.5 +
   232.6 +  <!--=====================================================================-->
   232.7 +  <!--                  Copyright and Trademark Statement                  -->
   232.8 +  <!--=====================================================================-->
   232.9 +  <!--                                                                     -->
  232.10 +  <!--          All original textual and graphical site content:           -->
  232.11 +  <!--                                                                     -->
  232.12 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  232.13 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  232.14 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  232.15 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  232.16 +  <!--  product, and service names mentioned herein may be the properties  -->
  232.17 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  232.18 +  <!--  are the properties of their respective authors.  All software      -->
  232.19 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  232.20 +  <!--                                                                     -->
  232.21 +  <!--=====================================================================-->
  232.22 +  <!--                      e-mail: info@interos.com                       -->
  232.23 +  <!--=====================================================================-->
  232.24 +
   233.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   233.2 +++ b/xhtml/cgi/welcome_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   233.3 @@ -0,0 +1,132 @@
   233.4 +<?xml version="1.0" encoding="utf-8"?>
   233.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   233.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   233.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   233.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" 
   233.9 +      style="background: #606060">
  233.10 +  <!--=================================================-->
  233.11 +  <!--    interos Standard Document Header - Markup    -->
  233.12 +  <!--=================================================-->
  233.13 +  <!--    URIs:  https://interos.com/welcome           -->
  233.14 +  <!--           https://www.interos.com/welcome       -->
  233.15 +  <!--   Title:  welcome to interos                    -->
  233.16 +  <!--  Author:  Brent Angeline                        -->
  233.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  233.18 +  <!--=================================================-->
  233.19 +  <head>
  233.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  233.21 +    <meta name="title" content="welcome to interos" />
  233.22 +    <meta name="description" content="internet operating system" />
  233.23 +    <meta name="author" content="Brent Angeline" />
  233.24 +    <meta name="copyright" 
  233.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  233.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  233.27 +    <title>welcome to interos</title>
  233.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  233.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  233.30 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  233.31 +          media="screen, projection" />
  233.32 +    <script type="text/javascript" src="/js/main.js"></script>
  233.33 +  </head>
  233.34 +  <body id="body" style="background: #606060">
  233.35 +    <center>
  233.36 +      <table id="topToolbar" width="100%" 
  233.37 +             border="0" cellpadding="0" cellspacing="0">
  233.38 +        <tr>
  233.39 +          <td width="72" 
  233.40 +              height="72"><center>
  233.41 +                            <a id="openButton" 
  233.42 +                               href="/interos?menu=open" 
  233.43 +                               style="padding: 26px 0 27px" 
  233.44 +                               target="_top"><strong>open</strong></a>
  233.45 +                          </center></td>
  233.46 +          <td><center>
  233.47 +                &nbsp;<span class="hidden">|</span>&nbsp;
  233.48 +              </center></td>
  233.49 +          <td width="72" 
  233.50 +              height="72"><center>
  233.51 +                            <a id="nextButton" 
  233.52 +                               href="/interos?menu=next" 
  233.53 +                               style="padding: 26px 0 27px" 
  233.54 +                               target="_top"><strong>next</strong></a>
  233.55 +                          </center></td>
  233.56 +        </tr>
  233.57 +      </table>
  233.58 +      <table id="welcomePanel">
  233.59 +        <thead>
  233.60 +          <tr>
  233.61 +            <th><center>
  233.62 +                  <h1>
  233.63 +                    welcome to interos
  233.64 +                  </h1>
  233.65 +                </center></th>
  233.66 +          </tr>
  233.67 +        </thead>
  233.68 +        <tfoot>
  233.69 +          <tr>
  233.70 +            <td><br /></td>
  233.71 +          </tr>
  233.72 +        </tfoot>
  233.73 +        <tbody>
  233.74 +          <tr>
  233.75 +            <td><center>
  233.76 +                  <h2>
  233.77 +                    Getting around is simple:
  233.78 +                  </h2>
  233.79 +                  <p>
  233.80 +                    Click the <strong id="new">new</strong>, 
  233.81 +                    <strong id="open">open</strong>, 
  233.82 +                    <strong id="next">next</strong>, or 
  233.83 +                    <strong id="settings">settings</strong> button 
  233.84 +                    to bring up its menu.
  233.85 +                  </p>
  233.86 +                  <p>
  233.87 +                    Try clicking <strong id="try">new</strong> to get started!
  233.88 +                  </p>
  233.89 +                </center></td>
  233.90 +          </tr>
  233.91 +        </tbody>
  233.92 +      </table>
  233.93 +      <table id="bottomToolbar" class="bottom" width="100%" 
  233.94 +             border="0" cellpadding="0" cellspacing="0">
  233.95 +        <tr>
  233.96 +          <td width="72" 
  233.97 +              height="72"><center>
  233.98 +                            <a id="newButton" 
  233.99 +                               href="/interos?menu=new" 
 233.100 +                               style="padding: 26px 0 27px" 
 233.101 +                               target="_top"><strong>new</strong></a>
 233.102 +                          </center></td>
 233.103 +          <td><center>
 233.104 +                &nbsp;<span class="hidden">|</span>&nbsp;
 233.105 +              </center></td>
 233.106 +          <td width="72" 
 233.107 +              height="72"><center>
 233.108 +                            <a id="settingsButton" 
 233.109 +                               href="/interos?menu=settings" 
 233.110 +                               style="padding: 26px 0 27px" 
 233.111 +                               target="_top"><strong>settings</strong></a>
 233.112 +                          </center></td>
 233.113 +        </tr>
 233.114 +      </table>
 233.115 +    </center>
 233.116 +  </body>
 233.117 +  <!--=====================================================================-->
 233.118 +  <!--                  Copyright and Trademark Statement                  -->
 233.119 +  <!--=====================================================================-->
 233.120 +  <!--                                                                     -->
 233.121 +  <!--          All original textual and graphical site content:           -->
 233.122 +  <!--                                                                     -->
 233.123 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 233.124 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 233.125 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 233.126 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 233.127 +  <!--  product, and service names mentioned herein may be the properties  -->
 233.128 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 233.129 +  <!--  are the properties of their respective authors.  All software      -->
 233.130 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 233.131 +  <!--                                                                     -->
 233.132 +  <!--=====================================================================-->
 233.133 +  <!--                      e-mail: info@interos.com                       -->
 233.134 +  <!--=====================================================================-->
 233.135 +</html>
   234.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   234.2 +++ b/xhtml/cgi/welcome_js_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   234.3 @@ -0,0 +1,132 @@
   234.4 +<?xml version="1.0" encoding="utf-8"?>
   234.5 +<?xml-stylesheet type="text/css" href="/style/main.css"?>
   234.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   234.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   234.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" 
   234.9 +      style="background: #606060">
  234.10 +  <!--=================================================-->
  234.11 +  <!--    interos Standard Document Header - Markup    -->
  234.12 +  <!--=================================================-->
  234.13 +  <!--    URIs:  https://interos.com/welcome           -->
  234.14 +  <!--           https://www.interos.com/welcome       -->
  234.15 +  <!--   Title:  welcome to interos                    -->
  234.16 +  <!--  Author:  Brent Angeline                        -->
  234.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  234.18 +  <!--=================================================-->
  234.19 +  <head>
  234.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  234.21 +    <meta name="title" content="welcome to interos" />
  234.22 +    <meta name="description" content="internet operating system" />
  234.23 +    <meta name="author" content="Brent Angeline" />
  234.24 +    <meta name="copyright" 
  234.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  234.26 +    <meta name="robots" content="noindex, nofollow, noarchive" />
  234.27 +    <title>welcome to interos</title>
  234.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  234.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  234.30 +    <link rel="stylesheet" type="text/css" href="/style/main.css" 
  234.31 +          media="screen, projection" />
  234.32 +    <script type="text/javascript" src="/js/main.js"></script>
  234.33 +  </head>
  234.34 +  <body id="body" style="background: #606060">
  234.35 +    <center>
  234.36 +      <table id="topToolbar" width="100%" 
  234.37 +             border="0" cellpadding="0" cellspacing="0">
  234.38 +        <tr>
  234.39 +          <td width="72" 
  234.40 +              height="72"><center>
  234.41 +                            <a id="openButton" 
  234.42 +                               href="/interos?menu=open" 
  234.43 +                               style="padding: 26px 0 27px" 
  234.44 +                               target="_top"><strong>open</strong></a>
  234.45 +                          </center></td>
  234.46 +          <td><center>
  234.47 +                &nbsp;<span class="hidden">|</span>&nbsp;
  234.48 +              </center></td>
  234.49 +          <td width="72" 
  234.50 +              height="72"><center>
  234.51 +                            <a id="nextButton" 
  234.52 +                               href="/interos?menu=next" 
  234.53 +                               style="padding: 26px 0 27px" 
  234.54 +                               target="_top"><strong>next</strong></a>
  234.55 +                          </center></td>
  234.56 +        </tr>
  234.57 +      </table>
  234.58 +      <table id="welcomePanel">
  234.59 +        <thead>
  234.60 +          <tr>
  234.61 +            <th><center>
  234.62 +                  <h1>
  234.63 +                    welcome to interos
  234.64 +                  </h1>
  234.65 +                </center></th>
  234.66 +          </tr>
  234.67 +        </thead>
  234.68 +        <tfoot>
  234.69 +          <tr>
  234.70 +            <td><br /></td>
  234.71 +          </tr>
  234.72 +        </tfoot>
  234.73 +        <tbody>
  234.74 +          <tr>
  234.75 +            <td><center>
  234.76 +                  <h2>
  234.77 +                    Getting around is simple:
  234.78 +                  </h2>
  234.79 +                  <p>
  234.80 +                    Click the <strong id="new">new</strong>, 
  234.81 +                    <strong id="open">open</strong>, 
  234.82 +                    <strong id="next">next</strong>, or 
  234.83 +                    <strong id="settings">settings</strong> button 
  234.84 +                    to bring up its menu.
  234.85 +                  </p>
  234.86 +                  <p>
  234.87 +                    Try clicking <strong id="try">new</strong> to get started!
  234.88 +                  </p>
  234.89 +                </center></td>
  234.90 +          </tr>
  234.91 +        </tbody>
  234.92 +      </table>
  234.93 +      <table id="bottomToolbar" class="bottom" width="100%" 
  234.94 +             border="0" cellpadding="0" cellspacing="0">
  234.95 +        <tr>
  234.96 +          <td width="72" 
  234.97 +              height="72"><center>
  234.98 +                            <a id="newButton" 
  234.99 +                               href="/interos?menu=new" 
 234.100 +                               style="padding: 26px 0 27px" 
 234.101 +                               target="_top"><strong>new</strong></a>
 234.102 +                          </center></td>
 234.103 +          <td><center>
 234.104 +                &nbsp;<span class="hidden">|</span>&nbsp;
 234.105 +              </center></td>
 234.106 +          <td width="72" 
 234.107 +              height="72"><center>
 234.108 +                            <a id="settingsButton" 
 234.109 +                               href="/interos?menu=settings" 
 234.110 +                               style="padding: 26px 0 27px" 
 234.111 +                               target="_top"><strong>settings</strong></a>
 234.112 +                          </center></td>
 234.113 +        </tr>
 234.114 +      </table>
 234.115 +    </center>
 234.116 +  </body>
 234.117 +  <!--=====================================================================-->
 234.118 +  <!--                  Copyright and Trademark Statement                  -->
 234.119 +  <!--=====================================================================-->
 234.120 +  <!--                                                                     -->
 234.121 +  <!--          All original textual and graphical site content:           -->
 234.122 +  <!--                                                                     -->
 234.123 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 234.124 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 234.125 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 234.126 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 234.127 +  <!--  product, and service names mentioned herein may be the properties  -->
 234.128 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 234.129 +  <!--  are the properties of their respective authors.  All software      -->
 234.130 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 234.131 +  <!--                                                                     -->
 234.132 +  <!--=====================================================================-->
 234.133 +  <!--                      e-mail: info@interos.com                       -->
 234.134 +  <!--=====================================================================-->
 234.135 +</html>
   235.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   235.2 +++ b/xhtml/docs/flash/text_editor/spec_interos.org.xhtml	Sat May 01 16:19:36 2010 -0400
   235.3 @@ -0,0 +1,292 @@
   235.4 +<?xml version="1.0" encoding="utf-8"?>
   235.5 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   235.6 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   235.7 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   235.8 +  <!--===============================================================-->
   235.9 +  <!--           interos Standard Document Header - Markup           -->
  235.10 +  <!--===============================================================-->
  235.11 +  <!--    URIs:  http://interos.org/docs/flash/text_editor/spec      -->
  235.12 +  <!--           http://www.interos.org/docs/flash/text_editor/spec  -->
  235.13 +  <!--   Title:  interos flash text editor                           -->
  235.14 +  <!--  Author:  Brent Angeline                                      -->
  235.15 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional                -->
  235.16 +  <!--===============================================================-->
  235.17 +  <head>
  235.18 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  235.19 +    <meta name="title" content="interos flash text editor" />
  235.20 +    <meta name="description" 
  235.21 +          content="interos flash text editor specification" />
  235.22 +    <meta name="author" content="Brent Angeline" />
  235.23 +    <meta name="copyright" 
  235.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  235.25 +    <meta name="robots" content="index, follow, noarchive" />
  235.26 +    <title>interos flash text editor</title>
  235.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  235.28 +    <link rel="icon" type="image/gif" href="/sys/images/favicon.gif" />
  235.29 +    <style type="text/css">
  235.30 +      html, body {
  235.31 +        color: #000000;
  235.32 +        background: #c0c0c0;
  235.33 +      }
  235.34 +      img {
  235.35 +        outline: 1px solid #000000;
  235.36 +      }
  235.37 +      ul {
  235.38 +        font-size: 1.08em;
  235.39 +      }
  235.40 +      .numeric {
  235.41 +        font: bold 1.5em serif;
  235.42 +      }
  235.43 +      .alphabetic {
  235.44 +        font-size: .78em;
  235.45 +      }
  235.46 +      .roman {
  235.47 +        font: normal .92em serif;
  235.48 +      }
  235.49 +      #initialize {
  235.50 +        font-weight: normal;
  235.51 +      }
  235.52 +    </style>
  235.53 +  </head>
  235.54 +  <body>
  235.55 +    <p>
  235.56 +      <br />
  235.57 +    </p>
  235.58 +    <center>
  235.59 +      <h1>
  235.60 +        interos flash text editor
  235.61 +      </h1>
  235.62 +    </center>
  235.63 +    <p>
  235.64 +      <br />
  235.65 +    </p>
  235.66 +    <ol class="numeric">
  235.67 +      <li>
  235.68 +        <p>
  235.69 +          Initialize
  235.70 +        </p>
  235.71 +        <img src="/docs/flash/text_editor/images/spec/1.gif" 
  235.72 +             alt="Fig. 1" title="Fig. 1" />
  235.73 +        <ol id="initialize" class="alphabetic" type="a">
  235.74 +          <li>
  235.75 +            <p>
  235.76 +              This application should be 768 x 432 pixels in size and should 
  235.77 +              immediately load and display the text_editor.psd skin.
  235.78 +            </p>
  235.79 +          </li>
  235.80 +          <li>
  235.81 +            <p>
  235.82 +              To start out, only the &ldquo;base&rdquo; layer should be visible.
  235.83 +            </p>
  235.84 +          </li>
  235.85 +          <li>
  235.86 +            <p>
  235.87 +              A text entry area with an empty text buffer should fill the white 
  235.88 +              rectangular area below the menu bar completely.
  235.89 +            </p>
  235.90 +          </li>
  235.91 +          <li>
  235.92 +            <p>
  235.93 +              A black text entry cursor should be blinking in the upper left 
  235.94 +              corner of the white text area.  Typing should input black text 
  235.95 +              into this area in a 10-point monospace font, e.g., Courier New.
  235.96 +            </p>
  235.97 +          </li>
  235.98 +        </ol>
  235.99 +      </li>
 235.100 +    </ol>
 235.101 +    <p>
 235.102 +      <br />
 235.103 +    </p>
 235.104 +    <ul>
 235.105 +      <li>
 235.106 +        <p>
 235.107 +          Once this initial setup is complete, the first functionality you'll 
 235.108 +          be working with is implementing the keyboard shortcuts.
 235.109 +        </p>
 235.110 +      </li>
 235.111 +      <li>
 235.112 +        <p>
 235.113 +          The first layers you'll be working with are the hidden menu bar 
 235.114 +          layers (file_hover, edit_hover, format_hover, view_hover, and 
 235.115 +          help_hover).
 235.116 +        </p>
 235.117 +      </li>
 235.118 +    </ul>
 235.119 +    <p>
 235.120 +      <br />
 235.121 +    </p>
 235.122 +    <ol class="numeric" start="2">
 235.123 +      <li>
 235.124 +        <p>
 235.125 +          Keyboard Shortcuts
 235.126 +        </p>
 235.127 +        <ol class="alphabetic" type="a">
 235.128 +          <li>
 235.129 +            <p>
 235.130 +              Menu Bar
 235.131 +            </p>
 235.132 +            <ol class="roman" type="i">
 235.133 +              <li>
 235.134 +                <p>
 235.135 +                  Pressing the Alt key should toggle the visibility of 
 235.136 +                  file_hover back and forth between visible and hidden.  When 
 235.137 +                  a menu hover is visible, the text entry cursor should stop 
 235.138 +                  blinking and disappear completely, and the further 
 235.139 +                  manipulation of text in the text area should be prevented.  
 235.140 +                  (This process should be reversed whenever menu mode 
 235.141 +                  is exited, returning the blinking cursor and text area 
 235.142 +                  editing).  When file_hover is visible, pressing the right 
 235.143 +                  arrow key should hide file_hover and show edit_hover, wheras 
 235.144 +                  pressing the left arrow key should hide file_hover and show 
 235.145 +                  help_hover.  Pressing the left or right arrow key from a 
 235.146 +                  visible edit_hover, format_hover, or view_hover should hide 
 235.147 +                  that hover layer and show the adjacent menu bar hover layer 
 235.148 +                  in the direction of the arrow key pressed.  When help_hover 
 235.149 +                  is visible, pressing the left arrow key should hide 
 235.150 +                  help_hover and show view_hover, whereas pressing the right 
 235.151 +                  arrow key should hide help_hover and show file_hover.
 235.152 +                </p>
 235.153 +                <img src="/docs/flash/text_editor/images/spec/2a-i.gif" 
 235.154 +                     alt="Fig. 2a(i)" title="Fig. 2a(i)" />
 235.155 +                <p>
 235.156 +                  <br />
 235.157 +                </p>
 235.158 +              </li>
 235.159 +              <li>
 235.160 +                <p>
 235.161 +                  While a menu bar hover layer is visible, pressing the down 
 235.162 +                  arrow key or Enter should display its corresponding menu 
 235.163 +                  layer (file_menu, edit_menu, format_menu, view_menu, or 
 235.164 +                  help_menu), hide the menu bar hover layer, and display the 
 235.165 +                  hover layer for the first non-inactive entry for that 
 235.166 +                  menu.  (If no non-inactive entries exist for that menu, no 
 235.167 +                  menu entry hover is displayed).
 235.168 +                </p>
 235.169 +                <img src="/docs/flash/text_editor/images/spec/2a-ii.gif" 
 235.170 +                     alt="Fig. 2a(ii)" title="Fig. 2a(ii)" />
 235.171 +                <p>
 235.172 +                  <br />
 235.173 +                </p>
 235.174 +              </li>
 235.175 +              <li>
 235.176 +                <p>
 235.177 +                  While a menu bar hover layer is visible, pressing a menu's 
 235.178 +                  corresponding shortcut key as denoted by its underlined 
 235.179 +                  letter (F for File, E for Edit, O for Format, V for view, or 
 235.180 +                  H for Help) should display its corresponding menu layer, hide 
 235.181 +                  all menu bar hover layers, and display the hover layer for 
 235.182 +                  the first non-inactive entry for that menu.  (If no 
 235.183 +                  non-inactive entries exist for that menu, no menu entry hover 
 235.184 +                  layer is displayed).
 235.185 +                </p>
 235.186 +                <img src="/docs/flash/text_editor/images/spec/2a-iii.gif" 
 235.187 +                     alt="Fig. 2a(iii)" title="Fig. 2a(iii)" />
 235.188 +                <p>
 235.189 +                  <br />
 235.190 +                </p>
 235.191 +              </li>
 235.192 +              <li>
 235.193 +                <p>
 235.194 +                  If any other key is pressed instead, the current menu bar 
 235.195 +                  hover layer should return to its hidden state.
 235.196 +                </p>
 235.197 +                <img src="/docs/flash/text_editor/images/spec/2a-iv.gif" 
 235.198 +                     alt="Fig. 2a(iv)" title="Fig. 2a(iv)" />
 235.199 +                <p>
 235.200 +                  <br />
 235.201 +                </p>
 235.202 +              </li>
 235.203 +            </ol>
 235.204 +          </li>
 235.205 +          <li>
 235.206 +            <p>
 235.207 +              Menus
 235.208 +            </p>
 235.209 +            <ol class="roman" type="i">
 235.210 +              <li>
 235.211 +                <p>
 235.212 +                  When no menu bar hover layer is visible, pressing Alt+F for 
 235.213 +                  File, Alt+E for Edit, Alt+O for Format, Alt+V for View, or 
 235.214 +                  Alt+H for Help should display the corresponding menu layer 
 235.215 +                  and the hover layer for the first non-inactive entry for that 
 235.216 +                  menu.  (If no non-inactive entries exist for that menu, no 
 235.217 +                  menu entry hover layer is displayed).
 235.218 +                </p>
 235.219 +                <img src="/docs/flash/text_editor/images/spec/2b-i.gif" 
 235.220 +                     alt="Fig. 2b(i)" title="Fig. 2b(i)" />
 235.221 +                <p>
 235.222 +                  <br />
 235.223 +                </p>
 235.224 +              </li>
 235.225 +              <li>
 235.226 +                <p>
 235.227 +                  While a menu layer is visible, pressing the left or right 
 235.228 +                  arrow keys should cycle between adjacent menus just like how 
 235.229 +                  the menu hovers behaved in Step 2a(i)&mdash;hiding the 
 235.230 +                  current menu layer and any visible menu entry hover layer, 
 235.231 +                  showing the adjacent menu layer in the direction pressed, and 
 235.232 +                  showing the hover layer for the first non-active entry for 
 235.233 +                  that menu.  (If no non-inactive entries exist for that menu, 
 235.234 +                  no menu entry hover layer is displayed).  When cycling left 
 235.235 +                  and right through the menus, the farthest left (File) and 
 235.236 +                  farthest right (Help) menus should loop around to each 
 235.237 +                  other&mdash;also just like how cycling through the menu hover 
 235.238 +                  layers behaved in Step 2a(i).
 235.239 +                </p>
 235.240 +                <img src="/docs/flash/text_editor/images/spec/2b-ii.gif" 
 235.241 +                     alt="Fig. 2b(ii)" title="Fig. 2b(ii)" />
 235.242 +                <p>
 235.243 +                  <br />
 235.244 +                </p>
 235.245 +              </li>
 235.246 +              <li>
 235.247 +                <p>
 235.248 +                  While a menu layer is visible, pressing a menu entry's 
 235.249 +                  corresponding shortcut key as denoted by the underlined 
 235.250 +                  letter in that menu entry's name should hide any visible menu 
 235.251 +                  entry hover layer, hide the current menu layer, and perform 
 235.252 +                  the selected entry's corresponding action.  Each entry's 
 235.253 +                  action will be discussed in detail later in this text.
 235.254 +                </p>
 235.255 +                <p>
 235.256 +                  <br />
 235.257 +                </p>
 235.258 +              </li>
 235.259 +              <li>
 235.260 +                <p>
 235.261 +                  While a menu layer is visible, pressing the up or down arrow 
 235.262 +                  keys should navigate through menu entries adjacent to the 
 235.263 +                  current visible menu entry hover layer in the direction of 
 235.264 +                  the arrow key pressed&mdash;skipping any inactive menu 
 235.265 +                  entries along the way.
 235.266 +                </p>
 235.267 +                <p>
 235.268 +                  <br />
 235.269 +                </p>
 235.270 +              </li>
 235.271 +            </ol>
 235.272 +          </li>
 235.273 +        </ol>
 235.274 +      </li>
 235.275 +    </ol>
 235.276 +  </body>
 235.277 +  <!--=====================================================================-->
 235.278 +  <!--                  Copyright and Trademark Statement                  -->
 235.279 +  <!--=====================================================================-->
 235.280 +  <!--                                                                     -->
 235.281 +  <!--          All original textual and graphical site content:           -->
 235.282 +  <!--                                                                     -->
 235.283 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 235.284 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 235.285 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 235.286 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 235.287 +  <!--  product, and service names mentioned herein may be the properties  -->
 235.288 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 235.289 +  <!--  are the properties of their respective authors.  All software      -->
 235.290 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 235.291 +  <!--                                                                     -->
 235.292 +  <!--=====================================================================-->
 235.293 +  <!--                      e-mail: info@interos.org                       -->
 235.294 +  <!--=====================================================================-->
 235.295 +</html>
   236.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   236.2 +++ b/xhtml/page/about_interos.com.xhtml	Sat May 01 16:19:36 2010 -0400
   236.3 @@ -0,0 +1,149 @@
   236.4 +<?xml version="1.0" encoding="utf-8"?>
   236.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   236.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   236.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   236.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   236.9 +  <!--=================================================-->
  236.10 +  <!--    interos Standard Document Header - Markup    -->
  236.11 +  <!--=================================================-->
  236.12 +  <!--    URIs:  http://interos.com/about              -->
  236.13 +  <!--           http://about.interos.com/             -->
  236.14 +  <!--           http://www.interos.com/about          -->
  236.15 +  <!--   Title:  about interos                         -->
  236.16 +  <!--  Author:  Brent Angeline                        -->
  236.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  236.18 +  <!--=================================================-->
  236.19 +  <head>
  236.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  236.21 +    <meta name="title" content="about interos" />
  236.22 +    <meta name="description" content="description of interos" />
  236.23 +    <meta name="author" content="Brent Angeline" />
  236.24 +    <meta name="copyright" 
  236.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  236.26 +    <meta name="robots" content="index, follow, noarchive" />
  236.27 +    <title>about interos</title>
  236.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  236.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  236.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  236.31 +          media="screen, projection" />
  236.32 +  </head>
  236.33 +  <body id="body">
  236.34 +    <center>
  236.35 +      <p id="navigation">
  236.36 +        about | 
  236.37 +        <a href="/blog">blog</a> | 
  236.38 +        <a href="/code">code</a> | 
  236.39 +        <a href="/demo">demo</a> | 
  236.40 +        <a href="/e-mail">e-mail</a> | 
  236.41 +        <a href="/faq">f.a.q.</a> | 
  236.42 +        <a href="/gear">gear</a> | 
  236.43 +        <a href="http://www.interos.com/">home</a>
  236.44 +      </p>
  236.45 +      <table id="titlePanel">
  236.46 +        <thead>
  236.47 +          <tr>
  236.48 +            <th><center>
  236.49 +                  <h1>
  236.50 +                    <a href="http://about.interos.com/">about interos</a>
  236.51 +                  </h1>
  236.52 +                  <h2>
  236.53 +                    Do more. .&nbsp;.&nbsp;. Do it all.
  236.54 +                  </h2>
  236.55 +                </center></th>
  236.56 +          </tr>
  236.57 +        </thead>
  236.58 +        <tbody>
  236.59 +          <tr>
  236.60 +            <td><br /></td>
  236.61 +          </tr>
  236.62 +        </tbody>
  236.63 +      </table>
  236.64 +    </center>
  236.65 +    <div class="box">
  236.66 +      <h3>
  236.67 +        what is interos?
  236.68 +      </h3>
  236.69 +      <p>
  236.70 +        <strong>
  236.71 +          interos is all about empowering you to do more with your digital 
  236.72 +          world.
  236.73 +        </strong>
  236.74 +      </p>
  236.75 +      <p>
  236.76 +        Get excited.&nbsp; You'll soon have access to your own secure online 
  236.77 +        virtual computer&mdash;absolutely free&mdash;and it's designed to work 
  236.78 +        in any web browser.&nbsp; This opens the doors to a whole new world of 
  236.79 +        possibilities in what you can do with your web-enabled gadgets.
  236.80 +      </p>
  236.81 +      <p>
  236.82 +        (coming soon)
  236.83 +      </p>
  236.84 +      <p>
  236.85 +        <br />
  236.86 +      </p>
  236.87 +    </div>
  236.88 +    <div class="box">
  236.89 +      <h3>
  236.90 +        <a href="http://www.interos.com/">interos.com</a>: 
  236.91 +        internet operating system
  236.92 +      </h3>
  236.93 +      <p>
  236.94 +        interos is an <a 
  236.95 +        href="http://en.wikipedia.org/wiki/Internet_Operating_Systems">internet 
  236.96 +        operating system</a> based on <a 
  236.97 +        href="http://en.wikipedia.org/wiki/FreeBSD">FreeBSD</a>.
  236.98 +      </p>
  236.99 +      <p>
 236.100 +        (more info soon)
 236.101 +      </p>
 236.102 +      <p>
 236.103 +        <br />
 236.104 +      </p>
 236.105 +    </div>
 236.106 +    <div class="box">
 236.107 +      <h3>
 236.108 +        <a href="http://interos.org/">interos.org</a>: internet open source
 236.109 +      </h3>
 236.110 +      <p>
 236.111 +        (more info soon)
 236.112 +      </p>
 236.113 +      <p>
 236.114 +        <br />
 236.115 +      </p>
 236.116 +    </div>
 236.117 +    <div class="box">
 236.118 +      <h3>
 236.119 +        interos history
 236.120 +      </h3>
 236.121 +      <p>
 236.122 +        (coming soon)
 236.123 +      </p>
 236.124 +      <p>
 236.125 +        <br />
 236.126 +      </p>
 236.127 +    </div>
 236.128 +    <center>
 236.129 +      <p id="copyrightDates">
 236.130 +        &copy; 2001&#8211;2009 interos
 236.131 +      </p>
 236.132 +    </center>
 236.133 +  </body>
 236.134 +  <!--=====================================================================-->
 236.135 +  <!--                  Copyright and Trademark Statement                  -->
 236.136 +  <!--=====================================================================-->
 236.137 +  <!--                                                                     -->
 236.138 +  <!--          All original textual and graphical site content:           -->
 236.139 +  <!--                                                                     -->
 236.140 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 236.141 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 236.142 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 236.143 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 236.144 +  <!--  product, and service names mentioned herein may be the properties  -->
 236.145 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 236.146 +  <!--  are the properties of their respective authors.  All software      -->
 236.147 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 236.148 +  <!--                                                                     -->
 236.149 +  <!--=====================================================================-->
 236.150 +  <!--                      e-mail: info@interos.com                       -->
 236.151 +  <!--=====================================================================-->
 236.152 +</html>
   237.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   237.2 +++ b/xhtml/page/about_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   237.3 @@ -0,0 +1,149 @@
   237.4 +<?xml version="1.0" encoding="utf-8"?>
   237.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   237.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   237.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   237.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   237.9 +  <!--=================================================-->
  237.10 +  <!--    interos Standard Document Header - Markup    -->
  237.11 +  <!--=================================================-->
  237.12 +  <!--    URIs:  https://interos.com/about             -->
  237.13 +  <!--           https://about.interos.com/            -->
  237.14 +  <!--           https://www.interos.com/about         -->
  237.15 +  <!--   Title:  about interos                         -->
  237.16 +  <!--  Author:  Brent Angeline                        -->
  237.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  237.18 +  <!--=================================================-->
  237.19 +  <head>
  237.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  237.21 +    <meta name="title" content="about interos" />
  237.22 +    <meta name="description" content="description of interos" />
  237.23 +    <meta name="author" content="Brent Angeline" />
  237.24 +    <meta name="copyright" 
  237.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  237.26 +    <meta name="robots" content="index, follow, noarchive" />
  237.27 +    <title>about interos</title>
  237.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  237.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  237.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  237.31 +          media="screen, projection" />
  237.32 +  </head>
  237.33 +  <body id="body">
  237.34 +    <center>
  237.35 +      <p id="navigation">
  237.36 +        about | 
  237.37 +        <a href="/blog">blog</a> | 
  237.38 +        <a href="/code">code</a> | 
  237.39 +        <a href="/demo">demo</a> | 
  237.40 +        <a href="/e-mail">e-mail</a> | 
  237.41 +        <a href="/faq">f.a.q.</a> | 
  237.42 +        <a href="/gear">gear</a> | 
  237.43 +        <a href="https://www.interos.com/">home</a>
  237.44 +      </p>
  237.45 +      <table id="titlePanel">
  237.46 +        <thead>
  237.47 +          <tr>
  237.48 +            <th><center>
  237.49 +                  <h1>
  237.50 +                    <a href="https://about.interos.com/">about interos</a>
  237.51 +                  </h1>
  237.52 +                  <h2>
  237.53 +                    Do more. .&nbsp;.&nbsp;. Do it all.
  237.54 +                  </h2>
  237.55 +                </center></th>
  237.56 +          </tr>
  237.57 +        </thead>
  237.58 +        <tbody>
  237.59 +          <tr>
  237.60 +            <td><br /></td>
  237.61 +          </tr>
  237.62 +        </tbody>
  237.63 +      </table>
  237.64 +    </center>
  237.65 +    <div class="box">
  237.66 +      <h3>
  237.67 +        what is interos?
  237.68 +      </h3>
  237.69 +      <p>
  237.70 +        <strong>
  237.71 +          interos is all about empowering you to do more with your digital 
  237.72 +          world.
  237.73 +        </strong>
  237.74 +      </p>
  237.75 +      <p>
  237.76 +        Get excited.&nbsp; You'll soon have access to your own secure online 
  237.77 +        virtual computer&mdash;absolutely free&mdash;and it's designed to work 
  237.78 +        in any web browser.&nbsp; This opens the doors to a whole new world of 
  237.79 +        possibilities in what you can do with your web-enabled gadgets.
  237.80 +      </p>
  237.81 +      <p>
  237.82 +        (coming soon)
  237.83 +      </p>
  237.84 +      <p>
  237.85 +        <br />
  237.86 +      </p>
  237.87 +    </div>
  237.88 +    <div class="box">
  237.89 +      <h3>
  237.90 +        <a href="https://www.interos.com/">interos.com</a>: 
  237.91 +        internet operating system
  237.92 +      </h3>
  237.93 +      <p>
  237.94 +        interos is an <a 
  237.95 +        href="http://en.wikipedia.org/wiki/Internet_Operating_Systems">internet 
  237.96 +        operating system</a> based on <a 
  237.97 +        href="http://en.wikipedia.org/wiki/FreeBSD">FreeBSD</a>.
  237.98 +      </p>
  237.99 +      <p>
 237.100 +        (more info soon)
 237.101 +      </p>
 237.102 +      <p>
 237.103 +        <br />
 237.104 +      </p>
 237.105 +    </div>
 237.106 +    <div class="box">
 237.107 +      <h3>
 237.108 +        <a href="https://interos.org/">interos.org</a>: internet open source
 237.109 +      </h3>
 237.110 +      <p>
 237.111 +        (more info soon)
 237.112 +      </p>
 237.113 +      <p>
 237.114 +        <br />
 237.115 +      </p>
 237.116 +    </div>
 237.117 +    <div class="box">
 237.118 +      <h3>
 237.119 +        interos history
 237.120 +      </h3>
 237.121 +      <p>
 237.122 +        (coming soon)
 237.123 +      </p>
 237.124 +      <p>
 237.125 +        <br />
 237.126 +      </p>
 237.127 +    </div>
 237.128 +    <center>
 237.129 +      <p id="copyrightDates">
 237.130 +        &copy; 2001&#8211;2009 interos
 237.131 +      </p>
 237.132 +    </center>
 237.133 +  </body>
 237.134 +  <!--=====================================================================-->
 237.135 +  <!--                  Copyright and Trademark Statement                  -->
 237.136 +  <!--=====================================================================-->
 237.137 +  <!--                                                                     -->
 237.138 +  <!--          All original textual and graphical site content:           -->
 237.139 +  <!--                                                                     -->
 237.140 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 237.141 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 237.142 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 237.143 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 237.144 +  <!--  product, and service names mentioned herein may be the properties  -->
 237.145 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 237.146 +  <!--  are the properties of their respective authors.  All software      -->
 237.147 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 237.148 +  <!--                                                                     -->
 237.149 +  <!--=====================================================================-->
 237.150 +  <!--                      e-mail: info@interos.com                       -->
 237.151 +  <!--=====================================================================-->
 237.152 +</html>
   238.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   238.2 +++ b/xhtml/page/about_interos.org.xhtml	Sat May 01 16:19:36 2010 -0400
   238.3 @@ -0,0 +1,149 @@
   238.4 +<?xml version="1.0" encoding="utf-8"?>
   238.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   238.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   238.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   238.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   238.9 +  <!--=================================================-->
  238.10 +  <!--    interos Standard Document Header - Markup    -->
  238.11 +  <!--=================================================-->
  238.12 +  <!--    URIs:  http://interos.org/about              -->
  238.13 +  <!--           http://about.interos.org/             -->
  238.14 +  <!--           http://www.interos.org/about          -->
  238.15 +  <!--   Title:  about interos                         -->
  238.16 +  <!--  Author:  Brent Angeline                        -->
  238.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  238.18 +  <!--=================================================-->
  238.19 +  <head>
  238.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  238.21 +    <meta name="title" content="about interos" />
  238.22 +    <meta name="description" content="description of interos" />
  238.23 +    <meta name="author" content="Brent Angeline" />
  238.24 +    <meta name="copyright" 
  238.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  238.26 +    <meta name="robots" content="index, follow, noarchive" />
  238.27 +    <title>about interos</title>
  238.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  238.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  238.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  238.31 +          media="screen, projection" />
  238.32 +  </head>
  238.33 +  <body id="body">
  238.34 +    <center>
  238.35 +      <p id="navigation">
  238.36 +        about | 
  238.37 +        <a href="/blog">blog</a> | 
  238.38 +        <a href="/code">code</a> | 
  238.39 +        <a href="/forums">develop</a> | 
  238.40 +        <a href="/e-mail">e-mail</a> | 
  238.41 +        <a href="/faq">f.a.q.</a> | 
  238.42 +        <a href="/gear">gear</a> | 
  238.43 +        <a href="http://interos.org/">home</a>
  238.44 +      </p>
  238.45 +      <table id="titlePanel">
  238.46 +        <thead>
  238.47 +          <tr>
  238.48 +            <th><center>
  238.49 +                  <h1>
  238.50 +                    <a href="http://about.interos.org/">about interos</a>
  238.51 +                  </h1>
  238.52 +                  <h2>
  238.53 +                    Do more. .&nbsp;.&nbsp;. Do it all.
  238.54 +                  </h2>
  238.55 +                </center></th>
  238.56 +          </tr>
  238.57 +        </thead>
  238.58 +        <tbody>
  238.59 +          <tr>
  238.60 +            <td><br /></td>
  238.61 +          </tr>
  238.62 +        </tbody>
  238.63 +      </table>
  238.64 +    </center>
  238.65 +    <div class="box">
  238.66 +      <h3>
  238.67 +        what is interos?
  238.68 +      </h3>
  238.69 +      <p>
  238.70 +        <strong>
  238.71 +          interos is all about empowering you to do more with your digital 
  238.72 +          world.
  238.73 +        </strong>
  238.74 +      </p>
  238.75 +      <p>
  238.76 +        Get excited.&nbsp; You'll soon have access to your own secure online 
  238.77 +        virtual computer&mdash;absolutely free&mdash;and it's designed to work 
  238.78 +        in any web browser.&nbsp; This opens the doors to a whole new world of 
  238.79 +        possibilities in what you can do with your web-enabled gadgets.
  238.80 +      </p>
  238.81 +      <p>
  238.82 +        (coming soon)
  238.83 +      </p>
  238.84 +      <p>
  238.85 +        <br />
  238.86 +      </p>
  238.87 +    </div>
  238.88 +    <div class="box">
  238.89 +      <h3>
  238.90 +        <a href="http://www.interos.com/">interos.com</a>: 
  238.91 +        internet operating system
  238.92 +      </h3>
  238.93 +      <p>
  238.94 +        interos is an <a 
  238.95 +        href="http://en.wikipedia.org/wiki/Internet_Operating_Systems">internet 
  238.96 +        operating system</a> based on <a 
  238.97 +        href="http://en.wikipedia.org/wiki/FreeBSD">FreeBSD</a>.
  238.98 +      </p>
  238.99 +      <p>
 238.100 +        (more info soon)
 238.101 +      </p>
 238.102 +      <p>
 238.103 +        <br />
 238.104 +      </p>
 238.105 +    </div>
 238.106 +    <div class="box">
 238.107 +      <h3>
 238.108 +        <a href="http://interos.org/">interos.org</a>: internet open source
 238.109 +      </h3>
 238.110 +      <p>
 238.111 +        (more info soon)
 238.112 +      </p>
 238.113 +      <p>
 238.114 +        <br />
 238.115 +      </p>
 238.116 +    </div>
 238.117 +    <div class="box">
 238.118 +      <h3>
 238.119 +        interos history
 238.120 +      </h3>
 238.121 +      <p>
 238.122 +        (coming soon)
 238.123 +      </p>
 238.124 +      <p>
 238.125 +        <br />
 238.126 +      </p>
 238.127 +    </div>
 238.128 +    <center>
 238.129 +      <p id="copyrightDates">
 238.130 +        &copy; 2001&#8211;2009 interos
 238.131 +      </p>
 238.132 +    </center>
 238.133 +  </body>
 238.134 +  <!--=====================================================================-->
 238.135 +  <!--                  Copyright and Trademark Statement                  -->
 238.136 +  <!--=====================================================================-->
 238.137 +  <!--                                                                     -->
 238.138 +  <!--          All original textual and graphical site content:           -->
 238.139 +  <!--                                                                     -->
 238.140 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 238.141 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 238.142 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 238.143 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 238.144 +  <!--  product, and service names mentioned herein may be the properties  -->
 238.145 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 238.146 +  <!--  are the properties of their respective authors.  All software      -->
 238.147 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 238.148 +  <!--                                                                     -->
 238.149 +  <!--=====================================================================-->
 238.150 +  <!--                      e-mail: info@interos.org                       -->
 238.151 +  <!--=====================================================================-->
 238.152 +</html>
   239.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   239.2 +++ b/xhtml/page/about_interos.org_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   239.3 @@ -0,0 +1,149 @@
   239.4 +<?xml version="1.0" encoding="utf-8"?>
   239.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   239.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   239.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   239.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   239.9 +  <!--=================================================-->
  239.10 +  <!--    interos Standard Document Header - Markup    -->
  239.11 +  <!--=================================================-->
  239.12 +  <!--    URIs:  https://interos.org/about             -->
  239.13 +  <!--           https://about.interos.org/            -->
  239.14 +  <!--           https://www.interos.org/about         -->
  239.15 +  <!--   Title:  about interos                         -->
  239.16 +  <!--  Author:  Brent Angeline                        -->
  239.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  239.18 +  <!--=================================================-->
  239.19 +  <head>
  239.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  239.21 +    <meta name="title" content="about interos" />
  239.22 +    <meta name="description" content="description of interos" />
  239.23 +    <meta name="author" content="Brent Angeline" />
  239.24 +    <meta name="copyright" 
  239.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  239.26 +    <meta name="robots" content="index, follow, noarchive" />
  239.27 +    <title>about interos</title>
  239.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  239.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  239.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  239.31 +          media="screen, projection" />
  239.32 +  </head>
  239.33 +  <body id="body">
  239.34 +    <center>
  239.35 +      <p id="navigation">
  239.36 +        about | 
  239.37 +        <a href="/blog">blog</a> | 
  239.38 +        <a href="/code">code</a> | 
  239.39 +        <a href="/forums">develop</a> | 
  239.40 +        <a href="/e-mail">e-mail</a> | 
  239.41 +        <a href="/faq">f.a.q.</a> | 
  239.42 +        <a href="/gear">gear</a> | 
  239.43 +        <a href="https://interos.org/">home</a>
  239.44 +      </p>
  239.45 +      <table id="titlePanel">
  239.46 +        <thead>
  239.47 +          <tr>
  239.48 +            <th><center>
  239.49 +                  <h1>
  239.50 +                    <a href="https://about.interos.org/">about interos</a>
  239.51 +                  </h1>
  239.52 +                  <h2>
  239.53 +                    Do more. .&nbsp;.&nbsp;. Do it all.
  239.54 +                  </h2>
  239.55 +                </center></th>
  239.56 +          </tr>
  239.57 +        </thead>
  239.58 +        <tbody>
  239.59 +          <tr>
  239.60 +            <td><br /></td>
  239.61 +          </tr>
  239.62 +        </tbody>
  239.63 +      </table>
  239.64 +    </center>
  239.65 +    <div class="box">
  239.66 +      <h3>
  239.67 +        what is interos?
  239.68 +      </h3>
  239.69 +      <p>
  239.70 +        <strong>
  239.71 +          interos is all about empowering you to do more with your digital 
  239.72 +          world.
  239.73 +        </strong>
  239.74 +      </p>
  239.75 +      <p>
  239.76 +        Get excited.&nbsp; You'll soon have access to your own secure online 
  239.77 +        virtual computer&mdash;absolutely free&mdash;and it's designed to work 
  239.78 +        in any web browser.&nbsp; This opens the doors to a whole new world of 
  239.79 +        possibilities in what you can do with your web-enabled gadgets.
  239.80 +      </p>
  239.81 +      <p>
  239.82 +        (coming soon)
  239.83 +      </p>
  239.84 +      <p>
  239.85 +        <br />
  239.86 +      </p>
  239.87 +    </div>
  239.88 +    <div class="box">
  239.89 +      <h3>
  239.90 +        <a href="https://www.interos.com/">interos.com</a>: 
  239.91 +        internet operating system
  239.92 +      </h3>
  239.93 +      <p>
  239.94 +        interos is an <a 
  239.95 +        href="http://en.wikipedia.org/wiki/Internet_Operating_Systems">internet 
  239.96 +        operating system</a> based on <a 
  239.97 +        href="http://en.wikipedia.org/wiki/FreeBSD">FreeBSD</a>.
  239.98 +      </p>
  239.99 +      <p>
 239.100 +        (more info soon)
 239.101 +      </p>
 239.102 +      <p>
 239.103 +        <br />
 239.104 +      </p>
 239.105 +    </div>
 239.106 +    <div class="box">
 239.107 +      <h3>
 239.108 +        <a href="https://interos.org/">interos.org</a>: internet open source
 239.109 +      </h3>
 239.110 +      <p>
 239.111 +        (more info soon)
 239.112 +      </p>
 239.113 +      <p>
 239.114 +        <br />
 239.115 +      </p>
 239.116 +    </div>
 239.117 +    <div class="box">
 239.118 +      <h3>
 239.119 +        interos history
 239.120 +      </h3>
 239.121 +      <p>
 239.122 +        (coming soon)
 239.123 +      </p>
 239.124 +      <p>
 239.125 +        <br />
 239.126 +      </p>
 239.127 +    </div>
 239.128 +    <center>
 239.129 +      <p id="copyrightDates">
 239.130 +        &copy; 2001&#8211;2009 interos
 239.131 +      </p>
 239.132 +    </center>
 239.133 +  </body>
 239.134 +  <!--=====================================================================-->
 239.135 +  <!--                  Copyright and Trademark Statement                  -->
 239.136 +  <!--=====================================================================-->
 239.137 +  <!--                                                                     -->
 239.138 +  <!--          All original textual and graphical site content:           -->
 239.139 +  <!--                                                                     -->
 239.140 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 239.141 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 239.142 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 239.143 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 239.144 +  <!--  product, and service names mentioned herein may be the properties  -->
 239.145 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 239.146 +  <!--  are the properties of their respective authors.  All software      -->
 239.147 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 239.148 +  <!--                                                                     -->
 239.149 +  <!--=====================================================================-->
 239.150 +  <!--                      e-mail: info@interos.org                       -->
 239.151 +  <!--=====================================================================-->
 239.152 +</html>
   240.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   240.2 +++ b/xhtml/page/blog_interos.com.xhtml	Sat May 01 16:19:36 2010 -0400
   240.3 @@ -0,0 +1,1189 @@
   240.4 +<?xml version="1.0" encoding="utf-8"?>
   240.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   240.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   240.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   240.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   240.9 +  <!--=================================================-->
  240.10 +  <!--    interos Standard Document Header - Markup    -->
  240.11 +  <!--=================================================-->
  240.12 +  <!--    URIs:  http://interos.com/blog               -->
  240.13 +  <!--           http://blog.interos.com/              -->
  240.14 +  <!--           http://www.interos.com/blog           -->
  240.15 +  <!--   Title:  interos blog                          -->
  240.16 +  <!--  Author:  Brent Angeline                        -->
  240.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  240.18 +  <!--=================================================-->
  240.19 +  <head>
  240.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  240.21 +    <meta name="title" content="interos blog" />
  240.22 +    <meta name="description" content="web log for interos" />
  240.23 +    <meta name="author" content="Brent Angeline" />
  240.24 +    <meta name="copyright" 
  240.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  240.26 +    <meta name="robots" content="index, follow, archive" />
  240.27 +    <title>interos blog</title>
  240.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  240.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  240.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  240.31 +          media="screen, projection" />
  240.32 +  </head>
  240.33 +  <body id="body">
  240.34 +    <center>
  240.35 +      <p id="navigation">
  240.36 +        <a href="/about">about</a> | 
  240.37 +        blog | 
  240.38 +        <a href="/code">code</a> | 
  240.39 +        <a href="/demo">demo</a> | 
  240.40 +        <a href="/e-mail">e-mail</a> | 
  240.41 +        <a href="/faq">f.a.q.</a> | 
  240.42 +        <a href="/gear">gear</a> | 
  240.43 +        <a href="http://www.interos.com/">home</a>
  240.44 +      </p>
  240.45 +      <table id="titlePanel">
  240.46 +        <thead>
  240.47 +          <tr>
  240.48 +            <th><center>
  240.49 +                  <h1>
  240.50 +                    <a href="http://blog.interos.com/">interos blog</a>
  240.51 +                  </h1>
  240.52 +                  <h2>
  240.53 +                    by Brent Angeline
  240.54 +                  </h2>
  240.55 +                </center></th>
  240.56 +          </tr>
  240.57 +        </thead>
  240.58 +        <tbody>
  240.59 +          <tr>
  240.60 +            <td><br /></td>
  240.61 +          </tr>
  240.62 +        </tbody>
  240.63 +      </table>
  240.64 +    </center>
  240.65 +    <div class="box">
  240.66 +      <h3>
  240.67 +        Current Status
  240.68 +      </h3>
  240.69 +      <p>
  240.70 +        interos is presently undergoing some big and exciting changes!&nbsp; 
  240.71 +        I'll bring the blog up to date and fill in all the details of the past 
  240.72 +        weeks' work as soon as this wave of development is complete.
  240.73 +      </p>
  240.74 +      <p>
  240.75 +        <br />
  240.76 +      </p>
  240.77 +    </div>
  240.78 +    <div class="box">
  240.79 +      <h3>
  240.80 +        January 19th, 2007
  240.81 +      </h3>
  240.82 +      <p>
  240.83 +        Today I brought the blog up to date.&nbsp; I'll continue keeping daily 
  240.84 +        log entries as I work, and I'll update them here online roughly weekly. 
  240.85 +      </p>
  240.86 +      <p>
  240.87 +        Work on Javascript continues. .&nbsp;.&nbsp;.
  240.88 +      </p>
  240.89 +      <p>
  240.90 +        <br />
  240.91 +      </p>
  240.92 +    </div>
  240.93 +    <div class="box">
  240.94 +      <h3>
  240.95 +        January 18th, 2007
  240.96 +      </h3>
  240.97 +      <p>
  240.98 +        Today was more compositing code and all the additional alterations that 
  240.99 +        come with it.
 240.100 +      </p>
 240.101 +      <p>
 240.102 +        <br />
 240.103 +      </p>
 240.104 +    </div>
 240.105 +    <div class="box">
 240.106 +      <h3>
 240.107 +        January 17th, 2007
 240.108 +      </h3>
 240.109 +      <p>
 240.110 +        I began compositing code from my prior experiments with variations on 
 240.111 +        style into the current JavaScript.
 240.112 +      </p>
 240.113 +      <p>
 240.114 +        <br />
 240.115 +      </p>
 240.116 +    </div>
 240.117 +    <div class="box">
 240.118 +      <h3>
 240.119 +        January 16th, 2007
 240.120 +      </h3>
 240.121 +      <p>
 240.122 +        A few slight changes to each file were necessary to further 
 240.123 +        cross-browser consistency when rendering some of the more advanced 
 240.124 +        styling and positioning elements.&nbsp; After encountering these visual 
 240.125 +        inconsistencies during testing and subsequently resolving them, the 
 240.126 +        central elements of the page are approaching visual completion as 
 240.127 +        development of the page's JavaScript continues to progress.
 240.128 +      </p>
 240.129 +      <p>
 240.130 +        <br />
 240.131 +      </p>
 240.132 +    </div>
 240.133 +    <div class="box">
 240.134 +      <h3>
 240.135 +        January 15th, 2007
 240.136 +      </h3>
 240.137 +      <p>
 240.138 +        Now that I have some visual feedback from the code to work with, I 
 240.139 +        experimented with a few variations on its appearance and decided on a 
 240.140 +        combination of stylistic elements to employ in an effort to maximize 
 240.141 +        aesthetics, readability, and interface compactness for mobile devices.
 240.142 +      </p>
 240.143 +      <p>
 240.144 +        <br />
 240.145 +      </p>
 240.146 +    </div>
 240.147 +    <div class="box">
 240.148 +      <h3>
 240.149 +        January 14th, 2007
 240.150 +      </h3>
 240.151 +      <p>
 240.152 +        The page is improving visually and with consistent behavior across 
 240.153 +        browsers, but there's still more work to be done.
 240.154 +      </p>
 240.155 +      <p>
 240.156 +        <br />
 240.157 +      </p>
 240.158 +    </div>
 240.159 +    <div class="box">
 240.160 +      <h3>
 240.161 +        January 13th, 2007
 240.162 +      </h3>
 240.163 +      <p>
 240.164 +        Today was more dynamic element positioning in JavaScript.
 240.165 +      </p>
 240.166 +      <p>
 240.167 +        <br />
 240.168 +      </p>
 240.169 +    </div>
 240.170 +    <div class="box">
 240.171 +      <h3>
 240.172 +        January 12th, 2007
 240.173 +      </h3>
 240.174 +      <p>
 240.175 +        Work on JavaScript continues.&nbsp; Dynamic element positioning is 
 240.176 +        coming along nicely.
 240.177 +      </p>
 240.178 +      <p>
 240.179 +        <br />
 240.180 +      </p>
 240.181 +    </div>
 240.182 +    <div class="box">
 240.183 +      <h3>
 240.184 +        January 11th, 2007
 240.185 +      </h3>
 240.186 +      <p>
 240.187 +        I had to make some additional tweaks to the XHTML and its style sheet 
 240.188 +        for better interoperability with the JavaScript as it develops 
 240.189 +        further.&nbsp; Both the XHTML and JavaScript have been developed to be 
 240.190 +        compatible with serving the XHTML as multiple MIME types.&nbsp; I'll 
 240.191 +        have to make a few alterations to the server configuration in order to 
 240.192 +        implement content negotiation.&nbsp; This way the page will be served 
 240.193 +        as the MIME type that is best-suited for the current user's browser.
 240.194 +      </p>
 240.195 +      <p>
 240.196 +        <br />
 240.197 +      </p>
 240.198 +    </div>
 240.199 +    <div class="box">
 240.200 +      <h3>
 240.201 +        January 10th, 2007
 240.202 +      </h3>
 240.203 +      <p>
 240.204 +        The style sheet now validates without any warnings.&nbsp; This gives 
 240.205 +        us: the back-end, the XHTML, and the cascading style sheet.&nbsp; Now 
 240.206 +        it's time to begin adding the final component of this page: the 
 240.207 +        JavaScript.
 240.208 +      </p>
 240.209 +      <p>
 240.210 +        Once JavaScript is finished for this page, I will have all the 
 240.211 +        components necessary for a complete, working, and polished user-driven 
 240.212 +        system module.&nbsp; It will set the standard for the other pages that 
 240.213 +        also act as functional modules, and I should be able to take the new 
 240.214 +        techniques employed and apply them throughout the site fairly quickly, 
 240.215 +        since most pages aren't as complex as the current module.
 240.216 +      </p>
 240.217 +      <p>
 240.218 +        <br />
 240.219 +      </p>
 240.220 +    </div>
 240.221 +    <div class="box">
 240.222 +      <h3>
 240.223 +        January 9th, 2007
 240.224 +      </h3>
 240.225 +      <p>
 240.226 +        I've applied all the needed styling to elements of one of the more 
 240.227 +        complex pages.&nbsp; It validates with no errors, but there are some 
 240.228 +        warnings.&nbsp; I'll have to see about working those out tomorrow. 
 240.229 +      </p>
 240.230 +      <p>
 240.231 +        <br />
 240.232 +      </p>
 240.233 +    </div>
 240.234 +    <div class="box">
 240.235 +      <h3>
 240.236 +        January 8th, 2007
 240.237 +      </h3>
 240.238 +      <p>
 240.239 +        I'm thrilled to say that my new approach was right on the money!&nbsp; 
 240.240 +        Elements in the structural hierarchy of the page's code now translate 
 240.241 +        to making full visual sense as well.&nbsp; And after a few tweaks, it's 
 240.242 +        looking like page visual renderings will shape up to being more or less 
 240.243 +        pixel-perfect reproductions from one browser to the next in its class.
 240.244 +      </p>
 240.245 +      <p>
 240.246 +        <br />
 240.247 +      </p>
 240.248 +    </div>
 240.249 +    <div class="box">
 240.250 +      <h3>
 240.251 +        January 7th, 2007
 240.252 +      </h3>
 240.253 +      <p>
 240.254 +        I spent the day experimenting with different approaches to developing a 
 240.255 +        cross-browser style that could be implemented across all interos site 
 240.256 +        content.&nbsp; I was met with varying degrees of success in each 
 240.257 +        attempted implementation, but I think I'm starting to see some common 
 240.258 +        threads.&nbsp; In the end, I wound up completely scrapping all the 
 240.259 +        style work I'd put together today.&nbsp; But all is not lost, as I've 
 240.260 +        learned a great deal from my experiments, and they're already giving me 
 240.261 +        some ideas.&nbsp; I'm confident that after some rest, I can get a fresh 
 240.262 +        start tomorrow on taking what I've learned and applying it to the new 
 240.263 +        approach I'm beginning to formulate.
 240.264 +      </p>
 240.265 +      <p>
 240.266 +        <br />
 240.267 +      </p>
 240.268 +    </div>
 240.269 +    <div class="box">
 240.270 +      <h3>
 240.271 +        January 6th, 2007
 240.272 +      </h3>
 240.273 +      <p>
 240.274 +        Today I took care of some correspondence toward getting more 
 240.275 +        development underway on web applications that integrate with the 
 240.276 +        interos platform.&nbsp; I have some exciting prospects.&nbsp; I also 
 240.277 +        spent some time bringing the blog up to date, and work will continue 
 240.278 +        into the night with a concentration on getting this style sheet mess 
 240.279 +        sorted out once and for all!
 240.280 +      </p>
 240.281 +      <p>
 240.282 +        <br />
 240.283 +      </p>
 240.284 +    </div>
 240.285 +    <div class="box">
 240.286 +      <h3>
 240.287 +        January 5th, 2007
 240.288 +      </h3>
 240.289 +      <p>
 240.290 +        Today I made a series of minor changes to each page on the site.&nbsp; 
 240.291 +        It was time-consuming but necessary, and I'm glad it's out of the way 
 240.292 +        now.
 240.293 +      </p>
 240.294 +      <p>
 240.295 +        <br />
 240.296 +      </p>
 240.297 +    </div>
 240.298 +    <div class="box">
 240.299 +      <h3>
 240.300 +        January 4th, 2007
 240.301 +      </h3>
 240.302 +      <p>
 240.303 +        Master control directory linking of style sheets continues.
 240.304 +      </p>
 240.305 +      <p>
 240.306 +        <br />
 240.307 +      </p>
 240.308 +    </div>
 240.309 +    <div class="box">
 240.310 +      <h3>
 240.311 +        January 3rd, 2007
 240.312 +      </h3>
 240.313 +      <p>
 240.314 +        I created a few of the new style sheets and began making link entries 
 240.315 +        in the master control directory.
 240.316 +      </p>
 240.317 +      <p>
 240.318 +        <br />
 240.319 +      </p>
 240.320 +    </div>
 240.321 +    <div class="box">
 240.322 +      <h3>
 240.323 +        January 2nd, 2007
 240.324 +      </h3>
 240.325 +      <p>
 240.326 +        I began organizing style sheet elements into categories: elements to be 
 240.327 +        applied globally across all pages containted on the site, elements to 
 240.328 +        be applied only under certain circumstances, and elements to be applied 
 240.329 +        by default in the absence of predefined circumstance.
 240.330 +      </p>
 240.331 +      <p>
 240.332 +        <br />
 240.333 +      </p>
 240.334 +    </div>
 240.335 +    <div class="box">
 240.336 +      <h3>
 240.337 +        January 1st, 2007
 240.338 +      </h3>
 240.339 +      <p>
 240.340 +        <strong>Happy New Year</strong> from <strong>interos</strong>!
 240.341 +      </p>
 240.342 +      <p>
 240.343 +        <br />
 240.344 +      </p>
 240.345 +    </div>
 240.346 +    <div class="box">
 240.347 +      <h3>
 240.348 +        December 31st, 2006
 240.349 +      </h3>
 240.350 +      <p>
 240.351 +        2006 closes with the United States and international publications of 
 240.352 +        the interos patent applications, interos code running properly on a 
 240.353 +        genuine web server, and a public demo of interos well on its way.&nbsp; 
 240.354 +        It was a big year for the fledgling interos project, and here's hoping 
 240.355 +        that 2007 is even bigger!
 240.356 +      </p>
 240.357 +      <p>
 240.358 +        <br />
 240.359 +      </p>
 240.360 +    </div>
 240.361 +    <div class="box">
 240.362 +      <h3>
 240.363 +        December 30th, 2006
 240.364 +      </h3>
 240.365 +      <p>
 240.366 +        I've had a look at the style sheet situation, and I've gotten a feel 
 240.367 +        for how styling would best be implemented across the sites.&nbsp; 
 240.368 +        Structurally, it's a complete overhaul&mdash;but I have done a number 
 240.369 +        of things correctly already, so I should be able to integrate my 
 240.370 +        existing work into the new paradigm fairly quickly once restructuring 
 240.371 +        is completed.
 240.372 +      </p>
 240.373 +      <p>
 240.374 +        <br />
 240.375 +      </p>
 240.376 +    </div>
 240.377 +    <div class="box">
 240.378 +      <h3>
 240.379 +        December 29th, 2006
 240.380 +      </h3>
 240.381 +      <p>
 240.382 +        I finished the changes, and the core modules to the operating 
 240.383 +        environment are now working just fine with the new server 
 240.384 +        configuration.&nbsp; Some style sheet work needs to be done in order 
 240.385 +        for everything to make visual sense, but after that's completed and a 
 240.386 +        few tweaks are made here and there, I should have something that I'm 
 240.387 +        willing to link to from the demo page.
 240.388 +      </p>
 240.389 +      <p>
 240.390 +        <br />
 240.391 +      </p>
 240.392 +    </div>
 240.393 +    <div class="box">
 240.394 +      <h3>
 240.395 +        December 28th, 2006
 240.396 +      </h3>
 240.397 +      <p>
 240.398 +        I'm just about done with applying the required modifications to all of 
 240.399 +        the modules of the system.
 240.400 +      </p>
 240.401 +      <p>
 240.402 +        <br />
 240.403 +      </p>
 240.404 +    </div>
 240.405 +    <div class="box">
 240.406 +      <h3>
 240.407 +        December 27th, 2006
 240.408 +      </h3>
 240.409 +      <p>
 240.410 +        I'm about half of the way through making necessary changes to system 
 240.411 +        modules.&nbsp; Further work on it will continue tomorrow.
 240.412 +      </p>
 240.413 +      <p>
 240.414 +        <br />
 240.415 +      </p>
 240.416 +    </div>
 240.417 +    <div class="box">
 240.418 +      <h3>
 240.419 +        December 26th, 2006
 240.420 +      </h3>
 240.421 +      <p>
 240.422 +        I finished modifications to the next system module.&nbsp; I'll start on 
 240.423 +        the others tomorrow.
 240.424 +      </p>
 240.425 +      <p>
 240.426 +        <br />
 240.427 +      </p>
 240.428 +    </div>
 240.429 +    <div class="box">
 240.430 +      <h3>
 240.431 +        December 25th, 2006
 240.432 +      </h3>
 240.433 +      <p>
 240.434 +        <strong>Merry Christmas</strong> from <strong>interos</strong>!
 240.435 +      </p>
 240.436 +      <p>
 240.437 +        <br />
 240.438 +      </p>
 240.439 +    </div>
 240.440 +    <div class="box">
 240.441 +      <h3>
 240.442 +        December 24th, 2006
 240.443 +      </h3>
 240.444 +      <p>
 240.445 +        With the holiday and all that comes with it, I only got the chance to 
 240.446 +        start making changes to one of the other system modules.&nbsp; I'll be 
 240.447 +        right back at it soon.
 240.448 +      </p>
 240.449 +      <p>
 240.450 +        <br />
 240.451 +      </p>
 240.452 +    </div>
 240.453 +    <div class="box">
 240.454 +      <h3>
 240.455 +        December 23rd, 2006
 240.456 +      </h3>
 240.457 +      <p>
 240.458 +        I completed modifications to the first back-end system module.&nbsp; 
 240.459 +        After some testing and a couple quick changes, it's working just 
 240.460 +        great!&nbsp; So I'm going to go ahead and start applying these changes 
 240.461 +        to the other system modules.
 240.462 +      </p>
 240.463 +      <p>
 240.464 +        <br />
 240.465 +      </p>
 240.466 +    </div>
 240.467 +    <div class="box">
 240.468 +      <h3>
 240.469 +        December 22nd, 2006
 240.470 +      </h3>
 240.471 +      <p>
 240.472 +        Today I began extensive modifications to the interos environment 
 240.473 +        back-end to get it working with the new server configuration.&nbsp; 
 240.474 +        Changes were made to reflect the new directory hierarchy from when the 
 240.475 +        master control directory was implemented.&nbsp; Memory allocation 
 240.476 +        routines needed to be altered as well.
 240.477 +      </p>
 240.478 +      <p>
 240.479 +        <br />
 240.480 +      </p>
 240.481 +    </div>
 240.482 +    <div class="box">
 240.483 +      <h3>
 240.484 +        December 21st, 2006
 240.485 +      </h3>
 240.486 +      <p>
 240.487 +        I finished the changes to interos environment XHTML and started 
 240.488 +        applying them to the back-end modules.&nbsp; The first module is 
 240.489 +        outputting the new XHTML properly, but it appears the back-end needs 
 240.490 +        some additional alterations in order to work with the new server 
 240.491 +        configuration.
 240.492 +      </p>
 240.493 +      <p>
 240.494 +        <br />
 240.495 +      </p>
 240.496 +    </div>
 240.497 +    <div class="box">
 240.498 +      <h3>
 240.499 +        December 20th, 2006
 240.500 +      </h3>
 240.501 +      <p>
 240.502 +        The XHTML is starting to shape up as I'd intended.&nbsp; I should be 
 240.503 +        finished with it tomorrow so I can begin applying this new XHTML format 
 240.504 +        to the back-end.
 240.505 +      </p>
 240.506 +      <p>
 240.507 +        <br />
 240.508 +      </p>
 240.509 +    </div>
 240.510 +    <div class="box">
 240.511 +      <h3>
 240.512 +        December 19th, 2006
 240.513 +      </h3>
 240.514 +      <p>
 240.515 +        Today I began some necessary alterations to the XHTML that describes 
 240.516 +        the interos user environment.&nbsp; Once I finish the changes, I can 
 240.517 +        apply them to the back-end so that it dynamically outputs the user 
 240.518 +        environment in the proper format.
 240.519 +      </p>
 240.520 +      <p>
 240.521 +        <br />
 240.522 +      </p>
 240.523 +    </div>
 240.524 +    <div class="box">
 240.525 +      <h3>
 240.526 +        December 18th, 2006
 240.527 +      </h3>
 240.528 +      <p>
 240.529 +        My birthday today was marked with the international publication of the 
 240.530 +        patent application for interos.&nbsp; The United States patent 
 240.531 +        application was published on November 29th.
 240.532 +      </p>
 240.533 +      <p>
 240.534 +        <br />
 240.535 +      </p>
 240.536 +    </div>
 240.537 +    <div class="box">
 240.538 +      <h3>
 240.539 +        December 17th, 2006
 240.540 +      </h3>
 240.541 +      <p>
 240.542 +        The back-end for logging in is now working.&nbsp; Next up is getting 
 240.543 +        the code for the interos environment working.
 240.544 +      </p>
 240.545 +      <p>
 240.546 +        <br />
 240.547 +      </p>
 240.548 +    </div>
 240.549 +    <div class="box">
 240.550 +      <h3>
 240.551 +        December 16th, 2006
 240.552 +      </h3>
 240.553 +      <p>
 240.554 +        The code for the easy login back-end requires some additional changes 
 240.555 +        in order to work with the new server configuration.&nbsp; I should be 
 240.556 +        able to have them implemented by some point tomorrow.
 240.557 +      </p>
 240.558 +      <p>
 240.559 +        <br />
 240.560 +      </p>
 240.561 +    </div>
 240.562 +    <div class="box">
 240.563 +      <h3>
 240.564 +        December 15th, 2006
 240.565 +      </h3>
 240.566 +      <p>
 240.567 +        I finished interlinking the pages of the site to form a new and larger 
 240.568 +        skeletal site structure.&nbsp; It's mostly just placeholder pages that 
 240.569 +        are light on content, but that's the part that comes next.&nbsp; What 
 240.570 +        I <em>have</em> done is made sure that <strong>things have a place to 
 240.571 +        go</strong>.&nbsp; Beefing up content of these pages and adding a 
 240.572 +        public demo of interos are my next main areas of concentration.
 240.573 +      </p>
 240.574 +      <p>
 240.575 +        <br />
 240.576 +      </p>
 240.577 +    </div>
 240.578 +    <div class="box">
 240.579 +      <h3>
 240.580 +        December 14th, 2006
 240.581 +      </h3>
 240.582 +      <p>
 240.583 +        I finished the master control directory linking and started 
 240.584 +        interlinking the existing skeletal site content with the new expanded 
 240.585 +        material. 
 240.586 +      </p>
 240.587 +      <p>
 240.588 +        <br />
 240.589 +      </p>
 240.590 +    </div>
 240.591 +    <div class="box">
 240.592 +      <h3>
 240.593 +        December 13th, 2006
 240.594 +      </h3>
 240.595 +      <p>
 240.596 +        Today I did most of the necessary master control directory linking for 
 240.597 +        the expanded site content.
 240.598 +      </p>
 240.599 +      <p>
 240.600 +        <br />
 240.601 +      </p>
 240.602 +    </div>
 240.603 +    <div class="box">
 240.604 +      <h3>
 240.605 +        December 12th, 2006
 240.606 +      </h3>
 240.607 +      <p>
 240.608 +        I've gotten a lot of work done toward expanding the site.&nbsp; Changes 
 240.609 +        will start showing up as I start linking them together with current 
 240.610 +        site content.&nbsp; I also performed a great many web server 
 240.611 +        configuration tweaks to accommodate the expanded content and improve 
 240.612 +        site behavior.
 240.613 +      </p>
 240.614 +      <p>
 240.615 +        <br />
 240.616 +      </p>
 240.617 +    </div>
 240.618 +    <div class="box">
 240.619 +      <h3>
 240.620 +        December 11th, 2006
 240.621 +      </h3>
 240.622 +      <p>
 240.623 +        Today I brought the blog up to date!&nbsp; Now that that's done, I'm 
 240.624 +        going to go write more <strong>code</strong>. 
 240.625 +      </p>
 240.626 +      <p>
 240.627 +        <br />
 240.628 +      </p>
 240.629 +    </div>
 240.630 +    <div class="box">
 240.631 +      <h3>
 240.632 +        December 10th, 2006
 240.633 +      </h3>
 240.634 +      <p>
 240.635 +        I did some more work in configuring the web server to execute interos 
 240.636 +        back-end code.
 240.637 +      </p>
 240.638 +      <p>
 240.639 +        <br />
 240.640 +      </p>
 240.641 +    </div>
 240.642 +    <div class="box">
 240.643 +      <h3>
 240.644 +        December 9th, 2006
 240.645 +      </h3>
 240.646 +      <p>
 240.647 +        I had another meeting with intern Hardik V. Shah regarding 
 240.648 +        <strong>Java</strong> code integration.&nbsp; Everything seems to be 
 240.649 +        coming along well.
 240.650 +      </p>
 240.651 +      <p>
 240.652 +        <br />
 240.653 +      </p>
 240.654 +    </div>
 240.655 +    <div class="box">
 240.656 +      <h3>
 240.657 +        December 8th, 2006
 240.658 +      </h3>
 240.659 +      <p>
 240.660 +        Work on tying in the back-end continues...
 240.661 +      </p>
 240.662 +      <p>
 240.663 +        <br />
 240.664 +      </p>
 240.665 +    </div>
 240.666 +    <div class="box">
 240.667 +      <h3>
 240.668 +        December 7th, 2006
 240.669 +      </h3>
 240.670 +      <p>
 240.671 +        Today I continue work on back-end porting and testing.
 240.672 +      </p>
 240.673 +      <p>
 240.674 +        <br />
 240.675 +      </p>
 240.676 +    </div>
 240.677 +    <div class="box">
 240.678 +      <h3>
 240.679 +        December 6th, 2006
 240.680 +      </h3>
 240.681 +      <p>
 240.682 +        I started work porting the back-end to the server and modifying it to 
 240.683 +        output XHTML in the new format.
 240.684 +      </p>
 240.685 +      <p>
 240.686 +        <br />
 240.687 +      </p>
 240.688 +    </div>
 240.689 +    <div class="box">
 240.690 +      <h3>
 240.691 +        December 5th, 2006
 240.692 +      </h3>
 240.693 +      <p>
 240.694 +        The new login form is completed.&nbsp; I'm currently repeating the 
 240.695 +        process for the form for new users to create a login.&nbsp; I also 
 240.696 +        started work to interface both forms with the back-end.&nbsp; I 
 240.697 +        performed some additional code cleanup on various site pages as well.
 240.698 +      </p>
 240.699 +      <p>
 240.700 +        <br />
 240.701 +      </p>
 240.702 +    </div>
 240.703 +    <div class="box">
 240.704 +      <h3>
 240.705 +        December 4th, 2006
 240.706 +      </h3>
 240.707 +      <p>
 240.708 +        The first element necessary for the demo is the <strong>easy 
 240.709 +        login</strong>.&nbsp; I took the existing code I developed for this and 
 240.710 +        reimplemented it in the new standard format using one of the templates 
 240.711 +        I created.&nbsp; I also made some modifications to improve 
 240.712 +        accessibility.&nbsp; There's going to be a fair amount of this sort of 
 240.713 +        post over the next week or so as I apply this process to the code I've 
 240.714 +        developed for the other elements of the demo.
 240.715 +      </p>
 240.716 +      <p>
 240.717 +        <br />
 240.718 +      </p>
 240.719 +    </div>
 240.720 +    <div class="box">
 240.721 +      <h3>
 240.722 +        December 3rd, 2006
 240.723 +      </h3>
 240.724 +      <p>
 240.725 +        Today I started work on bringing the demo to the server.&nbsp; Once 
 240.726 +        enough of it is in place, it will be <strong>accessible</strong> from 
 240.727 +        the <a href="/demo">demo</a> section.
 240.728 +      </p>
 240.729 +      <p>
 240.730 +        <br />
 240.731 +      </p>
 240.732 +    </div>
 240.733 +    <div class="box">
 240.734 +      <h3>
 240.735 +        December 2nd, 2006
 240.736 +      </h3>
 240.737 +      <p>
 240.738 +        Tagging is now completed.&nbsp; I also started preparing the server for 
 240.739 +        the next sections I have planned.
 240.740 +      </p>
 240.741 +      <p>
 240.742 +        <br />
 240.743 +      </p>
 240.744 +    </div>
 240.745 +    <div class="box">
 240.746 +      <h3>
 240.747 +        December 1st, 2006
 240.748 +      </h3>
 240.749 +      <p>
 240.750 +        I finally finished getting the last of everything on the server 
 240.751 +        properly <strong>organized</strong>, and I've finished tagging most of 
 240.752 +        it as well.
 240.753 +      </p>
 240.754 +      <p>
 240.755 +        <br />
 240.756 +      </p>
 240.757 +    </div>
 240.758 +    <div class="box">
 240.759 +      <h3>
 240.760 +        November 30th, 2006
 240.761 +      </h3>
 240.762 +      <p>
 240.763 +        Site skeletal layout is <strong>firmly in place</strong>, and all areas 
 240.764 +        are <strong>well-defined</strong> parts of the overall 
 240.765 +        <strong>structure.</strong>&nbsp; It's now time to begin fleshing out 
 240.766 +        site content.
 240.767 +      </p>
 240.768 +      <p>
 240.769 +        <br />
 240.770 +      </p>
 240.771 +    </div>
 240.772 +    <div class="box">
 240.773 +      <h3>
 240.774 +        November 29th, 2006
 240.775 +      </h3>
 240.776 +      <p>
 240.777 +        I linked basic style sheets in a manner to maximize 
 240.778 +        <strong>efficiency</strong> and site <strong>consistency</strong>.
 240.779 +      </p>
 240.780 +      <p>
 240.781 +        <br />
 240.782 +      </p>
 240.783 +    </div>
 240.784 +    <div class="box">
 240.785 +      <h3>
 240.786 +        November 28th, 2006
 240.787 +      </h3>
 240.788 +      <p>
 240.789 +        The audit of existing XHTML continues with an emphasis on 
 240.790 +        <strong>semantic correctness</strong> in code. 
 240.791 +      </p>
 240.792 +      <p>
 240.793 +        <br />
 240.794 +      </p>
 240.795 +    </div>
 240.796 +    <div class="box">
 240.797 +      <h3>
 240.798 +        November 27th, 2006
 240.799 +      </h3>
 240.800 +      <p>
 240.801 +        The aforementioned templates further establish a standard format for 
 240.802 +        site content, so I started an audit of existing XHTML code by beginning 
 240.803 +        to apply the precedents set forth in said templates.&nbsp; This will 
 240.804 +        further maximize the <strong>compatibility</strong> and 
 240.805 +        <strong>accessibility</strong> of interos.
 240.806 +      </p>
 240.807 +      <p>
 240.808 +        <br />
 240.809 +      </p>
 240.810 +    </div>
 240.811 +    <div class="box">
 240.812 +      <h3>
 240.813 +        November 26th, 2006
 240.814 +      </h3>
 240.815 +      <p>
 240.816 +        I created some <strong>templates</strong> for the next wave of content.
 240.817 +      </p>
 240.818 +      <p>
 240.819 +        <br />
 240.820 +      </p>
 240.821 +    </div>
 240.822 +    <div class="box">
 240.823 +      <h3>
 240.824 +        November 25th, 2006
 240.825 +      </h3>
 240.826 +      <p>
 240.827 +        Today brings some site <strong>updates</strong> and a meeting.
 240.828 +      </p>
 240.829 +      <p>
 240.830 +        <br />
 240.831 +      </p>
 240.832 +    </div>
 240.833 +    <div class="box">
 240.834 +      <h3>
 240.835 +        November 24th, 2006
 240.836 +      </h3>
 240.837 +      <p>
 240.838 +        The <strong>master control directory</strong> is now 
 240.839 +        <strong>completed</strong>.
 240.840 +      </p>
 240.841 +      <p>
 240.842 +        <br />
 240.843 +      </p>
 240.844 +    </div>
 240.845 +    <div class="box">
 240.846 +      <h3>
 240.847 +        November 23rd, 2006
 240.848 +      </h3>
 240.849 +      <p>
 240.850 +        <strong>Happy Thanksgiving</strong> from <strong>interos</strong>!
 240.851 +      </p>
 240.852 +      <p>
 240.853 +        <br />
 240.854 +      </p>
 240.855 +    </div>
 240.856 +    <div class="box">
 240.857 +      <h3>
 240.858 +        November 22nd, 2006
 240.859 +      </h3>
 240.860 +      <p>
 240.861 +        The <strong>server configuration</strong> is now updated to reflect the 
 240.862 +        changes from linking virtual hosts to a master control directory.
 240.863 +      </p>
 240.864 +      <p>
 240.865 +        <br />
 240.866 +      </p>
 240.867 +    </div>
 240.868 +    <div class="box">
 240.869 +      <h3>
 240.870 +        November 21st, 2006
 240.871 +      </h3>
 240.872 +      <p>
 240.873 +        After a great deal of experimenting, I figured out the <strong>best 
 240.874 +        method</strong> for linking everything in a way that will both work and 
 240.875 +        be easy to update.&nbsp; It took all day to implement, but now common 
 240.876 +        address requests can easily be linked to the proper corresponding 
 240.877 +        resources.
 240.878 +      </p>
 240.879 +      <p>
 240.880 +        <br />
 240.881 +      </p>
 240.882 +    </div>
 240.883 +    <div class="box">
 240.884 +      <h3>
 240.885 +        November 20th, 2006
 240.886 +      </h3>
 240.887 +      <p>
 240.888 +        I was having difficulty managing all the virtual hosts that define the 
 240.889 +        interconnected sections of the interos site layout.&nbsp; Then I had 
 240.890 +        the idea to implement a <strong>master control directory</strong>.
 240.891 +      </p>
 240.892 +      <p>
 240.893 +        <br />
 240.894 +      </p>
 240.895 +    </div>
 240.896 +    <div class="box">
 240.897 +      <h3>
 240.898 +        November 19th, 2006
 240.899 +      </h3>
 240.900 +      <p>
 240.901 +        Last night I mapped out a <strong>logical web filesystem 
 240.902 +        layout</strong> to coincide with the aforementioned easy web 
 240.903 +        addresses.&nbsp; I still have some more time today, so I have some odds 
 240.904 +        and ends in mind to spend it working on.&nbsp; The sooner I get them 
 240.905 +        out of the way, the sooner I can get to posting the exciting stuff.
 240.906 +      </p>
 240.907 +      <p>
 240.908 +        <br />
 240.909 +      </p>
 240.910 +    </div>
 240.911 +    <div class="box">
 240.912 +      <h3>
 240.913 +        November 18th, 2006
 240.914 +      </h3>
 240.915 +      <p>
 240.916 +        Today was various updates to site content, including a link to what an 
 240.917 +        <strong><a
 240.918 +        href="http://en.wikipedia.org/wiki/Internet_Operating_Systems">internet 
 240.919 +        operating system</a></strong> is.
 240.920 +      </p>
 240.921 +      <p>
 240.922 +        <br />
 240.923 +      </p>
 240.924 +    </div>
 240.925 +    <div class="box">
 240.926 +      <h3>
 240.927 +        November 17th, 2006
 240.928 +      </h3>
 240.929 +      <p>
 240.930 +        I've gone through and cleaned up most of the code, and I've established 
 240.931 +        a <strong>standard format</strong> for delivering site content.
 240.932 +      </p>
 240.933 +      <p>
 240.934 +        <br />
 240.935 +      </p>
 240.936 +    </div>
 240.937 +    <div class="box">
 240.938 +      <h3>
 240.939 +        November 16th, 2006
 240.940 +      </h3>
 240.941 +      <p>
 240.942 +        The new configuration is working well, and I've been able to implement 
 240.943 +        site-wide changes a lot faster.&nbsp; This is already leading to 
 240.944 +        cleaner code and a more <strong>consistent look and feel</strong>.
 240.945 +      </p>
 240.946 +      <p>
 240.947 +        <br />
 240.948 +      </p>
 240.949 +    </div>
 240.950 +    <div class="box">
 240.951 +      <h3>
 240.952 +        November 15th, 2006
 240.953 +      </h3>
 240.954 +      <p>
 240.955 +        I've now finished enough work on the local systems that I can get 
 240.956 +        started on <strong>rapid deployment</strong> of site content.
 240.957 +      </p>
 240.958 +      <p>
 240.959 +        <br />
 240.960 +      </p>
 240.961 +    </div>
 240.962 +    <div class="box">
 240.963 +      <h3>
 240.964 +        November 14th, 2006
 240.965 +      </h3>
 240.966 +      <p>
 240.967 +        Some changes to my <strong>development environment</strong> should make 
 240.968 +        my work a lot <strong>easier</strong> from now on.
 240.969 +      </p>
 240.970 +      <p>
 240.971 +        <br />
 240.972 +      </p>
 240.973 +    </div>
 240.974 +    <div class="box">
 240.975 +      <h3>
 240.976 +        November 13th, 2006
 240.977 +      </h3>
 240.978 +      <p>
 240.979 +        Today was yet more work on the local <strong>development and 
 240.980 +        testing</strong> servers.&nbsp; It's all coming along nicely, but it's 
 240.981 +        a fair amount of work to assemble a specific server software framework 
 240.982 +        on <strong>multiple platforms</strong> simultaneously.
 240.983 +      </p>
 240.984 +      <p>
 240.985 +        <br />
 240.986 +      </p>
 240.987 +    </div>
 240.988 +    <div class="box">
 240.989 +      <h3>
 240.990 +        November 12th, 2006
 240.991 +      </h3>
 240.992 +      <p>
 240.993 +        After running code through validators and making the appropriate 
 240.994 +        alterations, interos now uses only <strong>valid CSS</strong> for 
 240.995 +        maximum interoperability.
 240.996 +      </p>
 240.997 +      <p>
 240.998 +        <br />
 240.999 +      </p>
240.1000 +    </div>
240.1001 +    <div class="box">
240.1002 +      <h3>
240.1003 +        November 11th, 2006
240.1004 +      </h3>
240.1005 +      <p>
240.1006 +        After running code through validators and making the appropriate 
240.1007 +        alterations, interos now uses only <strong>valid XHTML</strong> for 
240.1008 +        maximum interoperability.
240.1009 +      </p>
240.1010 +      <p>
240.1011 +        <br />
240.1012 +      </p>
240.1013 +    </div>
240.1014 +    <div class="box">
240.1015 +      <h3>
240.1016 +        November 10th, 2006
240.1017 +      </h3>
240.1018 +      <p>
240.1019 +        Today I started work on new local development and testing servers to 
240.1020 +        speed up finalizing code for production and to serve as a 
240.1021 +        <strong>backup</strong>.&nbsp; interos uses only <strong>free</strong> 
240.1022 +        and <strong>open source</strong> software.
240.1023 +      </p>
240.1024 +      <p>
240.1025 +        <br />
240.1026 +      </p>
240.1027 +    </div>
240.1028 +    <div class="box">
240.1029 +      <h3>
240.1030 +        November 9th, 2006
240.1031 +      </h3>
240.1032 +      <p>
240.1033 +        interos is now set up to have <strong>easy web addresses</strong>.
240.1034 +      </p>
240.1035 +      <p>
240.1036 +        <br />
240.1037 +      </p>
240.1038 +    </div>
240.1039 +    <div class="box">
240.1040 +      <h3>
240.1041 +        November 8th, 2006
240.1042 +      </h3>
240.1043 +      <p>
240.1044 +        Today was a lot of <strong>correspondence</strong> regarding the design 
240.1045 +        goals of interos.
240.1046 +      </p>
240.1047 +      <p>
240.1048 +        <br />
240.1049 +      </p>
240.1050 +    </div>
240.1051 +    <div class="box">
240.1052 +      <h3>
240.1053 +        November 7th, 2006
240.1054 +      </h3>
240.1055 +      <p>
240.1056 +        I met with Hardik Shah today to discuss the <strong>integration of 
240.1057 +        code</strong> that he, Rajdeep Bhowmik, Andrew Paroski and Amol 
240.1058 +        Panchabhai have developed.
240.1059 +      </p>
240.1060 +      <p>
240.1061 +        <br />
240.1062 +      </p>
240.1063 +    </div>
240.1064 +    <div class="box">
240.1065 +      <h3>
240.1066 +        November 6th, 2006
240.1067 +      </h3>
240.1068 +      <p>
240.1069 +        I did a lot of work today to <strong>maximize accessibility and ease of 
240.1070 +        use</strong> of the forthcoming site content.&nbsp; I'm excited that 
240.1071 +        everything's going to work so nicely.
240.1072 +      </p>
240.1073 +      <p>
240.1074 +        <br />
240.1075 +      </p>
240.1076 +    </div>
240.1077 +    <div class="box">
240.1078 +      <h3>
240.1079 +        November 5th, 2006
240.1080 +      </h3>
240.1081 +      <p>
240.1082 +        Today was about taking care of miscellaneous odds and ends.&nbsp; There 
240.1083 +        were various tweaks to configuration files and a few alterations to 
240.1084 +        <strong>file permissions for security</strong> while I restructured 
240.1085 +        some file hierarchies.&nbsp; The served content directories are 
240.1086 +        starting to feel a great deal more <strong>organized and 
240.1087 +        logical</strong>.&nbsp; This will make <strong>content 
240.1088 +        management</strong> a lot easier.
240.1089 +      </p>
240.1090 +      <p>
240.1091 +        <br />
240.1092 +      </p>
240.1093 +    </div>
240.1094 +    <div class="box">
240.1095 +      <h3>
240.1096 +        November 4th, 2006
240.1097 +      </h3>
240.1098 +      <p>
240.1099 +        I took the time to set up some administrative <strong>e-mail</strong> 
240.1100 +        accounts on each domain.&nbsp; I also performed any necessary address 
240.1101 +        aliasing and/or forwarding. Now the sites have working 
240.1102 +        <a href="mailto:info@interos.com">contact</a> links.
240.1103 +      </p>
240.1104 +      <p>
240.1105 +        <br />
240.1106 +      </p>
240.1107 +    </div>
240.1108 +    <div class="box">
240.1109 +      <h3>
240.1110 +        November 3rd, 2006
240.1111 +      </h3>
240.1112 +      <p>
240.1113 +        The interos sites are <strong>now secured</strong> using a free 
240.1114 +        multi-domain SSL/TLS certificate thanks to 
240.1115 +        <a href="http://www.cacert.org/">CAcert.org</a> and 
240.1116 +        <a href="http://guillaume.romagny.free.fr/evaldo/csr.sh">this 
240.1117 +        script</a>.&nbsp; Our sites leverage the strength of the AES-256 
240.1118 +        encryption algorithm for securing user data and a 1024-bit RSA key for 
240.1119 +        <strong>maximum browser compatibility</strong>.&nbsp; The web server 
240.1120 +        configuration and directory structures for site content have been 
240.1121 +        modified accordingly.
240.1122 +      </p>
240.1123 +      <p>
240.1124 +        <br />
240.1125 +      </p>
240.1126 +    </div>
240.1127 +    <div class="box">
240.1128 +      <h3>
240.1129 +        November 2nd, 2006
240.1130 +      </h3>
240.1131 +      <p>
240.1132 +        I finished performing numerous <strong>optimizations</strong> to the 
240.1133 +        server system.&nbsp; The physical server was rebooted and everything 
240.1134 +        seems to be <strong>humming away nicely</strong>. I have some further 
240.1135 +        optimizations in mind, but I'll look into those some other time when 
240.1136 +        there isn't quite so much to be done!
240.1137 +      </p>
240.1138 +      <p>
240.1139 +        <br />
240.1140 +      </p>
240.1141 +    </div>
240.1142 +    <div class="box">
240.1143 +      <h3>
240.1144 +        November 1st, 2006
240.1145 +      </h3>
240.1146 +      <p>
240.1147 +        The <strong>interos server is online</strong> and the 
240.1148 +        <a href="http://www.interos.com/">interos.com</a> and 
240.1149 +        <a href="http://interos.org/">interos.org</a> domain names have been 
240.1150 +        associated with it.
240.1151 +      </p>
240.1152 +      <p>
240.1153 +        I've begun populating the sites with some <strong>rough skeletal 
240.1154 +        content</strong> in order to test the web server configuration.&nbsp; 
240.1155 +        This skeletal content also acts as a foundation for the content I 
240.1156 +        ultimately intend for these sites to contain.&nbsp; In addition, I've 
240.1157 +        started this <strong>daily blog</strong> as a continuing record of the 
240.1158 +        progress I've made and the goals that follow.
240.1159 +      </p>
240.1160 +      <p>
240.1161 +        For a description of interos and its history so far, see the 
240.1162 +        <a href="/about">about</a> section as content is added to it.
240.1163 +      </p>
240.1164 +      <p>
240.1165 +        <br />
240.1166 +      </p>
240.1167 +    </div>
240.1168 +    <center>
240.1169 +      <p id="copyrightDates">
240.1170 +        &copy; 2001&#8211;2009 interos
240.1171 +      </p>
240.1172 +    </center>
240.1173 +  </body>
240.1174 +  <!--=====================================================================-->
240.1175 +  <!--                  Copyright and Trademark Statement                  -->
240.1176 +  <!--=====================================================================-->
240.1177 +  <!--                                                                     -->
240.1178 +  <!--          All original textual and graphical site content:           -->
240.1179 +  <!--                                                                     -->
240.1180 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
240.1181 +  <!--  reserved.  Reproduction in whole or in part without written        -->
240.1182 +  <!--  permission is prohibited.  interos and the interos logos are       -->
240.1183 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
240.1184 +  <!--  product, and service names mentioned herein may be the properties  -->
240.1185 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
240.1186 +  <!--  are the properties of their respective authors.  All software      -->
240.1187 +  <!--  developed in the forums is open source and belongs to everyone.    -->
240.1188 +  <!--                                                                     -->
240.1189 +  <!--=====================================================================-->
240.1190 +  <!--                      e-mail: info@interos.com                       -->
240.1191 +  <!--=====================================================================-->
240.1192 +</html>
   241.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   241.2 +++ b/xhtml/page/blog_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   241.3 @@ -0,0 +1,1476 @@
   241.4 +<?xml version="1.0" encoding="utf-8"?>
   241.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   241.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   241.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   241.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   241.9 +  <!--=================================================-->
  241.10 +  <!--    interos Standard Document Header - Markup    -->
  241.11 +  <!--=================================================-->
  241.12 +  <!--    URIs:  https://interos.com/blog              -->
  241.13 +  <!--           https://blog.interos.com/             -->
  241.14 +  <!--           https://www.interos.com/blog          -->
  241.15 +  <!--   Title:  interos blog                          -->
  241.16 +  <!--  Author:  Brent Angeline                        -->
  241.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  241.18 +  <!--=================================================-->
  241.19 +  <head>
  241.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  241.21 +    <meta name="title" content="interos blog" />
  241.22 +    <meta name="description" content="web log for interos" />
  241.23 +    <meta name="author" content="Brent Angeline" />
  241.24 +    <meta name="copyright" 
  241.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  241.26 +    <meta name="robots" content="index, follow, archive" />
  241.27 +    <title>interos blog</title>
  241.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  241.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  241.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  241.31 +          media="screen, projection" />
  241.32 +  </head>
  241.33 +  <body id="body">
  241.34 +    <center>
  241.35 +      <p id="navigation">
  241.36 +        <a href="/about">about</a> | 
  241.37 +        blog | 
  241.38 +        <a href="/code">code</a> | 
  241.39 +        <a href="/demo">demo</a> | 
  241.40 +        <a href="/e-mail">e-mail</a> | 
  241.41 +        <a href="/faq">f.a.q.</a> | 
  241.42 +        <a href="/gear">gear</a> | 
  241.43 +        <a href="https://www.interos.com/">home</a>
  241.44 +      </p>
  241.45 +      <table id="titlePanel">
  241.46 +        <thead>
  241.47 +          <tr>
  241.48 +            <th><center>
  241.49 +                  <h1>
  241.50 +                    <a href="https://blog.interos.com/">interos blog</a>
  241.51 +                  </h1>
  241.52 +                  <h2>
  241.53 +                    by Brent Angeline
  241.54 +                  </h2>
  241.55 +                </center></th>
  241.56 +          </tr>
  241.57 +        </thead>
  241.58 +        <tbody>
  241.59 +          <tr>
  241.60 +            <td><br /></td>
  241.61 +          </tr>
  241.62 +        </tbody>
  241.63 +      </table>
  241.64 +    </center>
  241.65 +    <div class="box">
  241.66 +      <h3>
  241.67 +        Current Status
  241.68 +      </h3>
  241.69 +      <p>
  241.70 +        interos is presently undergoing some big and exciting changes!&nbsp; 
  241.71 +        I'll bring the blog up to date and fill in all the details of the past 
  241.72 +        months' work as soon as this wave of development is complete.
  241.73 +      </p>
  241.74 +      <p>
  241.75 +        <br />
  241.76 +      </p>
  241.77 +    </div>
  241.78 +  <!--
  241.79 +    <div class="box">
  241.80 +      <h3>
  241.81 +        March 7th, 2007
  241.82 +      </h3>
  241.83 +      <p>
  241.84 +        correspondence
  241.85 +      </p>
  241.86 +      <p>
  241.87 +        <br />
  241.88 +      </p>
  241.89 +    </div>
  241.90 +    <div class="box">
  241.91 +      <h3>
  241.92 +        March 6th, 2007
  241.93 +      </h3>
  241.94 +      <p>
  241.95 +        completed style sheet for new cross-browser site-wide style
  241.96 +      </p>
  241.97 +      <p>
  241.98 +        <br />
  241.99 +      </p>
 241.100 +    </div>
 241.101 +    <div class="box">
 241.102 +      <h3>
 241.103 +        March 5th, 2007
 241.104 +      </h3>
 241.105 +      <p>
 241.106 +        style sheet 
 241.107 +        resized background images
 241.108 +      </p>
 241.109 +      <p>
 241.110 +        <br />
 241.111 +      </p>
 241.112 +    </div>
 241.113 +    <div class="box">
 241.114 +      <h3>
 241.115 +        March 4th, 2007
 241.116 +      </h3>
 241.117 +      <p>
 241.118 +        style sheet 
 241.119 +        resized background images
 241.120 +      </p>
 241.121 +      <p>
 241.122 +        <br />
 241.123 +      </p>
 241.124 +    </div>
 241.125 +    <div class="box">
 241.126 +      <h3>
 241.127 +        March 3rd, 2007
 241.128 +      </h3>
 241.129 +      <p>
 241.130 +        measured
 241.131 +      </p>
 241.132 +      <p>
 241.133 +        <br />
 241.134 +      </p>
 241.135 +    </div>
 241.136 +    <div class="box">
 241.137 +      <h3>
 241.138 +        March 2nd, 2007
 241.139 +      </h3>
 241.140 +      <p>
 241.141 +        style sheets and images
 241.142 +
 241.143 +      </p>
 241.144 +      <p>
 241.145 +        <br />
 241.146 +      </p>
 241.147 +    </div>
 241.148 +    <div class="box">
 241.149 +      <h3>
 241.150 +        March 1st, 2007
 241.151 +      </h3>
 241.152 +      <p>
 241.153 +        web server configuration
 241.154 +
 241.155 +      </p>
 241.156 +      <p>
 241.157 +        <br />
 241.158 +      </p>
 241.159 +    </div>
 241.160 +    <div class="box">
 241.161 +      <h3>
 241.162 +        February 28th, 2007
 241.163 +      </h3>
 241.164 +      <p>
 241.165 +        attended Southern Tier Linux Users Group meeting last night.
 241.166 +
 241.167 +      </p>
 241.168 +      <p>
 241.169 +        <br />
 241.170 +      </p>
 241.171 +    </div>
 241.172 +    <div class="box">
 241.173 +      <h3>
 241.174 +        February 27th, 2007
 241.175 +      </h3>
 241.176 +      <p>
 241.177 +        ported and tested original demo code
 241.178 +        richer, more robust visual overview of interos for the meeting I plan 
 241.179 +        on attending tonight
 241.180 +      </p>
 241.181 +      <p>
 241.182 +        <br />
 241.183 +      </p>
 241.184 +    </div>
 241.185 +    <div class="box">
 241.186 +      <h3>
 241.187 +        February 26th, 2007
 241.188 +      </h3>
 241.189 +      <p>
 241.190 +
 241.191 +        correspondence
 241.192 +
 241.193 +
 241.194 +      </p>
 241.195 +      <p>
 241.196 +        <br />
 241.197 +      </p>
 241.198 +    </div>
 241.199 +    <div class="box">
 241.200 +      <h3>
 241.201 +        February 2nd, 2007
 241.202 +      </h3>
 241.203 +      <p>
 241.204 +        <strong>Happy Groundhog Day</strong> from <strong>interos</strong>!
 241.205 +        
 241.206 +      </p>
 241.207 +      <p>
 241.208 +        <br />
 241.209 +      </p>
 241.210 +    </div>
 241.211 +    <div class="box">
 241.212 +      <h3>
 241.213 +        February 1st, 2007
 241.214 +      </h3>
 241.215 +      <p>
 241.216 +        
 241.217 +      </p>
 241.218 +      <p>
 241.219 +        <br />
 241.220 +      </p>
 241.221 +    </div>
 241.222 +    <div class="box">
 241.223 +      <h3>
 241.224 +        January 30th, 2007
 241.225 +      </h3>
 241.226 +      <p>
 241.227 +        
 241.228 +      </p>
 241.229 +      <p>
 241.230 +        <br />
 241.231 +      </p>
 241.232 +    </div>
 241.233 +    <div class="box">
 241.234 +      <h3>
 241.235 +        January 29th, 2007
 241.236 +      </h3>
 241.237 +      <p>
 241.238 +        style
 241.239 +        
 241.240 +      </p>
 241.241 +      <p>
 241.242 +        <br />
 241.243 +      </p>
 241.244 +    </div>
 241.245 +    <div class="box">
 241.246 +      <h3>
 241.247 +        January 28th, 2007
 241.248 +      </h3>
 241.249 +      <p>
 241.250 +        style
 241.251 +
 241.252 +      </p>
 241.253 +      <p>
 241.254 +        <br />
 241.255 +      </p>
 241.256 +    </div>
 241.257 +    <div class="box">
 241.258 +      <h3>
 241.259 +        January 27th, 2007
 241.260 +      </h3>
 241.261 +      <p>
 241.262 +        style
 241.263 +
 241.264 +      </p>
 241.265 +      <p>
 241.266 +        <br />
 241.267 +      </p>
 241.268 +    </div>
 241.269 +    <div class="box">
 241.270 +      <h3>
 241.271 +        January 26th, 2007
 241.272 +      </h3>
 241.273 +      <p>
 241.274 +        ADSL modem
 241.275 +        network up
 241.276 +      </p>
 241.277 +      <p>
 241.278 +        <br />
 241.279 +      </p>
 241.280 +    </div>
 241.281 +    <div class="box">
 241.282 +      <h3>
 241.283 +        January 25th, 2007
 241.284 +      </h3>
 241.285 +      <p>
 241.286 +        network down
 241.287 +        the javascript had been coming along well
 241.288 +        not happy with style
 241.289 +        changing gears
 241.290 +        after meeting
 241.291 +      </p>
 241.292 +      <p>
 241.293 +        <br />
 241.294 +      </p>
 241.295 +    </div>
 241.296 +    <div class="box">
 241.297 +      <h3>
 241.298 +        January 24th, 2007
 241.299 +      </h3>
 241.300 +      <p>
 241.301 +        meeting
 241.302 +        network down
 241.303 +        up all night
 241.304 +        call
 241.305 +        rest
 241.306 +        look at it tomorrow
 241.307 +
 241.308 +      </p>
 241.309 +      <p>
 241.310 +        <br />
 241.311 +      </p>
 241.312 +    </div>
 241.313 +    <div class="box">
 241.314 +      <h3>
 241.315 +        January 23rd, 2007
 241.316 +      </h3>
 241.317 +      <p>
 241.318 +        meeting tomorrow
 241.319 +        network
 241.320 +      </p>
 241.321 +      <p>
 241.322 +        <br />
 241.323 +      </p>
 241.324 +    </div>
 241.325 +    <div class="box">
 241.326 +      <h3>
 241.327 +        January 22nd, 2007
 241.328 +      </h3>
 241.329 +      <p>
 241.330 +        meeting
 241.331 +        run through the site and through the demo 
 241.332 +        quick changes
 241.333 +      </p>
 241.334 +      <p>
 241.335 +        <br />
 241.336 +      </p>
 241.337 +    </div>
 241.338 +  -->
 241.339 +    <div class="box">
 241.340 +      <h3>
 241.341 +        January 21st, 2007
 241.342 +      </h3>
 241.343 +      <p>
 241.344 +        I added a number of the needed visual elements to the JavaScript 
 241.345 +        dynamic layout engine.  There are still more, plus there is also still 
 241.346 +        the need for scripting of events upon interaction with each element.
 241.347 +      </p>
 241.348 +      <p>
 241.349 +        <br />
 241.350 +      </p>
 241.351 +    </div>
 241.352 +    <div class="box">
 241.353 +      <h3>
 241.354 +        January 20th, 2007
 241.355 +      </h3>
 241.356 +      <p>
 241.357 +        The results from the new cross-browser JavaScript for dynamic layout 
 241.358 +        are starting to look as I intended, but there are still a few more 
 241.359 +        visual elements that need to be added.
 241.360 +      </p>
 241.361 +      <p>
 241.362 +        <br />
 241.363 +      </p>
 241.364 +    </div>
 241.365 +    <div class="box">
 241.366 +      <h3>
 241.367 +        January 19th, 2007
 241.368 +      </h3>
 241.369 +      <p>
 241.370 +        Today I brought the blog up to date.&nbsp; I'll continue keeping daily 
 241.371 +        log entries as I work, and I'll update them here online roughly weekly. 
 241.372 +      </p>
 241.373 +      <p>
 241.374 +        Work on Javascript continues. .&nbsp;.&nbsp;.
 241.375 +      </p>
 241.376 +      <p>
 241.377 +        <br />
 241.378 +      </p>
 241.379 +    </div>
 241.380 +    <div class="box">
 241.381 +      <h3>
 241.382 +        January 18th, 2007
 241.383 +      </h3>
 241.384 +      <p>
 241.385 +        Today was more compositing code and all the additional alterations that 
 241.386 +        come with it.
 241.387 +      </p>
 241.388 +      <p>
 241.389 +        <br />
 241.390 +      </p>
 241.391 +    </div>
 241.392 +    <div class="box">
 241.393 +      <h3>
 241.394 +        January 17th, 2007
 241.395 +      </h3>
 241.396 +      <p>
 241.397 +        I began compositing code from my prior experiments with variations on 
 241.398 +        style into the current JavaScript.
 241.399 +      </p>
 241.400 +      <p>
 241.401 +        <br />
 241.402 +      </p>
 241.403 +    </div>
 241.404 +    <div class="box">
 241.405 +      <h3>
 241.406 +        January 16th, 2007
 241.407 +      </h3>
 241.408 +      <p>
 241.409 +        A few slight changes to each file were necessary to further 
 241.410 +        cross-browser consistency when rendering some of the more advanced 
 241.411 +        styling and positioning elements.&nbsp; After encountering these visual 
 241.412 +        inconsistencies during testing and subsequently resolving them, the 
 241.413 +        central elements of the page are approaching visual completion as 
 241.414 +        development of the page's JavaScript continues to progress.
 241.415 +      </p>
 241.416 +      <p>
 241.417 +        <br />
 241.418 +      </p>
 241.419 +    </div>
 241.420 +    <div class="box">
 241.421 +      <h3>
 241.422 +        January 15th, 2007
 241.423 +      </h3>
 241.424 +      <p>
 241.425 +        Now that I have some visual feedback from the code to work with, I 
 241.426 +        experimented with a few variations on its appearance and decided on a 
 241.427 +        combination of stylistic elements to employ in an effort to maximize 
 241.428 +        aesthetics, readability, and interface compactness for mobile devices.
 241.429 +      </p>
 241.430 +      <p>
 241.431 +        <br />
 241.432 +      </p>
 241.433 +    </div>
 241.434 +    <div class="box">
 241.435 +      <h3>
 241.436 +        January 14th, 2007
 241.437 +      </h3>
 241.438 +      <p>
 241.439 +        The page is improving visually and with consistent behavior across 
 241.440 +        browsers, but there's still more work to be done.
 241.441 +      </p>
 241.442 +      <p>
 241.443 +        <br />
 241.444 +      </p>
 241.445 +    </div>
 241.446 +    <div class="box">
 241.447 +      <h3>
 241.448 +        January 13th, 2007
 241.449 +      </h3>
 241.450 +      <p>
 241.451 +        Today was more dynamic element positioning in JavaScript.
 241.452 +      </p>
 241.453 +      <p>
 241.454 +        <br />
 241.455 +      </p>
 241.456 +    </div>
 241.457 +    <div class="box">
 241.458 +      <h3>
 241.459 +        January 12th, 2007
 241.460 +      </h3>
 241.461 +      <p>
 241.462 +        Work on JavaScript continues.&nbsp; Dynamic element positioning is 
 241.463 +        coming along nicely.
 241.464 +      </p>
 241.465 +      <p>
 241.466 +        <br />
 241.467 +      </p>
 241.468 +    </div>
 241.469 +    <div class="box">
 241.470 +      <h3>
 241.471 +        January 11th, 2007
 241.472 +      </h3>
 241.473 +      <p>
 241.474 +        I had to make some additional tweaks to the XHTML and its style sheet 
 241.475 +        for better interoperability with the JavaScript as it develops 
 241.476 +        further.&nbsp; Both the XHTML and JavaScript have been developed to be 
 241.477 +        compatible with serving the XHTML as multiple MIME types.&nbsp; I'll 
 241.478 +        have to make a few alterations to the server configuration in order to 
 241.479 +        implement content negotiation.&nbsp; This way the page will be served 
 241.480 +        as the MIME type that is best-suited for the current user's browser.
 241.481 +      </p>
 241.482 +      <p>
 241.483 +        <br />
 241.484 +      </p>
 241.485 +    </div>
 241.486 +    <div class="box">
 241.487 +      <h3>
 241.488 +        January 10th, 2007
 241.489 +      </h3>
 241.490 +      <p>
 241.491 +        The style sheet now validates without any warnings.&nbsp; This gives 
 241.492 +        us: the back-end, the XHTML, and the cascading style sheet.&nbsp; Now 
 241.493 +        it's time to begin adding the final component of this page: the 
 241.494 +        JavaScript.
 241.495 +      </p>
 241.496 +      <p>
 241.497 +        Once JavaScript is finished for this page, I will have all the 
 241.498 +        components necessary for a complete, working, and polished user-driven 
 241.499 +        system module.&nbsp; It will set the standard for the other pages that 
 241.500 +        also act as functional modules, and I should be able to take the new 
 241.501 +        techniques employed and apply them throughout the site fairly quickly, 
 241.502 +        since most pages aren't as complex as the current module.
 241.503 +      </p>
 241.504 +      <p>
 241.505 +        <br />
 241.506 +      </p>
 241.507 +    </div>
 241.508 +    <div class="box">
 241.509 +      <h3>
 241.510 +        January 9th, 2007
 241.511 +      </h3>
 241.512 +      <p>
 241.513 +        I've applied all the needed styling to elements of one of the more 
 241.514 +        complex pages.&nbsp; It validates with no errors, but there are some 
 241.515 +        warnings.&nbsp; I'll have to see about working those out tomorrow. 
 241.516 +      </p>
 241.517 +      <p>
 241.518 +        <br />
 241.519 +      </p>
 241.520 +    </div>
 241.521 +    <div class="box">
 241.522 +      <h3>
 241.523 +        January 8th, 2007
 241.524 +      </h3>
 241.525 +      <p>
 241.526 +        I'm thrilled to say that my new approach was right on the money!&nbsp; 
 241.527 +        Elements in the structural hierarchy of the page's code now translate 
 241.528 +        to making full visual sense as well.&nbsp; And after a few tweaks, it's 
 241.529 +        looking like page visual renderings will shape up to being more or less 
 241.530 +        pixel-perfect reproductions from one browser to the next in its class.
 241.531 +      </p>
 241.532 +    </div>
 241.533 +    <div class="box">
 241.534 +      <p>
 241.535 +        <br />
 241.536 +      </p>
 241.537 +      <h3>
 241.538 +        January 7th, 2007
 241.539 +      </h3>
 241.540 +      <p>
 241.541 +        I spent the day experimenting with different approaches to developing a 
 241.542 +        cross-browser style that could be implemented across all interos site 
 241.543 +        content.&nbsp; I was met with varying degrees of success in each 
 241.544 +        attempted implementation, but I think I'm starting to see some common 
 241.545 +        threads.&nbsp; In the end, I wound up completely scrapping all the 
 241.546 +        style work I'd put together today.&nbsp; But all is not lost, as I've 
 241.547 +        learned a great deal from my experiments, and they're already giving me 
 241.548 +        some  ideas.&nbsp; I'm confident that after some rest, I can get a 
 241.549 +        fresh start tomorrow on taking what I've learned and applying it to the 
 241.550 +        new approach I'm beginning to formulate.
 241.551 +      </p>
 241.552 +      <p>
 241.553 +        <br />
 241.554 +      </p>
 241.555 +    </div>
 241.556 +    <div class="box">
 241.557 +      <h3>
 241.558 +        January 6th, 2007
 241.559 +      </h3>
 241.560 +      <p>
 241.561 +        Today I took care of some correspondence toward getting more 
 241.562 +        development underway on web applications that integrate with the 
 241.563 +        interos platform.&nbsp; I have some exciting prospects.&nbsp; I also 
 241.564 +        spent some time bringing the blog up to date, and work will continue 
 241.565 +        into the night with a concentration on getting this style sheet mess 
 241.566 +        sorted out once and for all!
 241.567 +      </p>
 241.568 +      <p>
 241.569 +        <br />
 241.570 +      </p>
 241.571 +    </div>
 241.572 +    <div class="box">
 241.573 +      <h3>
 241.574 +        January 5th, 2007
 241.575 +      </h3>
 241.576 +      <p>
 241.577 +        Today I made a series of minor changes to each page on the site.&nbsp; 
 241.578 +        It was time-consuming but necessary, and I'm glad it's out of the way 
 241.579 +        now.
 241.580 +      </p>
 241.581 +      <p>
 241.582 +        <br />
 241.583 +      </p>
 241.584 +    </div>
 241.585 +    <div class="box">
 241.586 +      <h3>
 241.587 +        January 4th, 2007
 241.588 +      </h3>
 241.589 +      <p>
 241.590 +        Master control directory linking of style sheets continues.
 241.591 +      </p>
 241.592 +      <p>
 241.593 +        <br />
 241.594 +      </p>
 241.595 +    </div>
 241.596 +    <div class="box">
 241.597 +      <h3>
 241.598 +        January 3rd, 2007
 241.599 +      </h3>
 241.600 +      <p>
 241.601 +        I created a few of the new style sheets and began making link entries 
 241.602 +        in the master control directory.
 241.603 +      </p>
 241.604 +      <p>
 241.605 +        <br />
 241.606 +      </p>
 241.607 +    </div>
 241.608 +    <div class="box">
 241.609 +      <h3>
 241.610 +        January 2nd, 2007
 241.611 +      </h3>
 241.612 +      <p>
 241.613 +        I began organizing style sheet elements into categories: elements to be 
 241.614 +        applied globally across all pages containted on the site, elements to 
 241.615 +        be applied only under certain circumstances, and elements to be applied 
 241.616 +        by default in the absence of predefined circumstance.
 241.617 +      </p>
 241.618 +      <p>
 241.619 +        <br />
 241.620 +      </p>
 241.621 +    </div>
 241.622 +    <div class="box">
 241.623 +      <h3>
 241.624 +        January 1st, 2007
 241.625 +      </h3>
 241.626 +      <p>
 241.627 +        <strong>Happy New Year</strong> from <strong>interos</strong>!
 241.628 +      </p>
 241.629 +      <p>
 241.630 +        <br />
 241.631 +      </p>
 241.632 +    </div>
 241.633 +    <div class="box">
 241.634 +      <h3>
 241.635 +        December 31st, 2006
 241.636 +      </h3>
 241.637 +      <p>
 241.638 +        2006 closes with the United States and international publications of 
 241.639 +        the interos patent applications, interos code running properly on a 
 241.640 +        genuine web server, and a public demo of interos well on its way.&nbsp; 
 241.641 +        It was a big year for the fledgling interos project, and here's hoping 
 241.642 +        that 2007 is even bigger!
 241.643 +      </p>
 241.644 +      <p>
 241.645 +        <br />
 241.646 +      </p>
 241.647 +    </div>
 241.648 +    <div class="box">
 241.649 +      <h3>
 241.650 +        December 30th, 2006
 241.651 +      </h3>
 241.652 +      <p>
 241.653 +        I've had a look at the style sheet situation, and I've gotten a feel 
 241.654 +        for how styling would best be implemented across the sites.&nbsp; 
 241.655 +        Structurally, it's a complete overhaul&mdash;but I have done a number 
 241.656 +        of things correctly already, so I should be able to integrate my 
 241.657 +        existing work into the new paradigm fairly quickly once restructuring 
 241.658 +        is completed.
 241.659 +      </p>
 241.660 +      <p>
 241.661 +        <br />
 241.662 +      </p>
 241.663 +    </div>
 241.664 +    <div class="box">
 241.665 +      <h3>
 241.666 +        December 29th, 2006
 241.667 +      </h3>
 241.668 +      <p>
 241.669 +        I finished the changes, and the core modules to the operating 
 241.670 +        environment are now working just fine with the new server 
 241.671 +        configuration.&nbsp; Some style sheet work needs to be done in order 
 241.672 +        for everything to make visual sense, but after that's completed and a 
 241.673 +        few tweaks are made here and there, I should have something that I'm 
 241.674 +        willing to link to from the demo page.
 241.675 +      </p>
 241.676 +      <p>
 241.677 +        <br />
 241.678 +      </p>
 241.679 +    </div>
 241.680 +    <div class="box">
 241.681 +      <h3>
 241.682 +        December 28th, 2006
 241.683 +      </h3>
 241.684 +      <p>
 241.685 +        I'm just about done with applying the required modifications to all of 
 241.686 +        the modules of the system.
 241.687 +      </p>
 241.688 +      <p>
 241.689 +        <br />
 241.690 +      </p>
 241.691 +    </div>
 241.692 +    <div class="box">
 241.693 +      <h3>
 241.694 +        December 27th, 2006
 241.695 +      </h3>
 241.696 +      <p>
 241.697 +        I'm about half of the way through making necessary changes to system 
 241.698 +        modules.&nbsp; Further work on it will continue tomorrow.
 241.699 +      </p>
 241.700 +      <p>
 241.701 +        <br />
 241.702 +      </p>
 241.703 +    </div>
 241.704 +    <div class="box">
 241.705 +      <h3>
 241.706 +        December 26th, 2006
 241.707 +      </h3>
 241.708 +      <p>
 241.709 +        I finished modifications to the next system module.&nbsp; I'll start on 
 241.710 +        the others tomorrow.
 241.711 +      </p>
 241.712 +      <p>
 241.713 +        <br />
 241.714 +      </p>
 241.715 +    </div>
 241.716 +    <div class="box">
 241.717 +      <h3>
 241.718 +        December 25th, 2006
 241.719 +      </h3>
 241.720 +      <p>
 241.721 +        <strong>Merry Christmas</strong> from <strong>interos</strong>!
 241.722 +      </p>
 241.723 +      <p>
 241.724 +        <br />
 241.725 +      </p>
 241.726 +    </div>
 241.727 +    <div class="box">
 241.728 +      <h3>
 241.729 +        December 24th, 2006
 241.730 +      </h3>
 241.731 +      <p>
 241.732 +        With the holiday and all that comes with it, I only got the chance to 
 241.733 +        start making changes to one of the other system modules.&nbsp; I'll be 
 241.734 +        right back at it soon.
 241.735 +      </p>
 241.736 +      <p>
 241.737 +        <br />
 241.738 +      </p>
 241.739 +    </div>
 241.740 +    <div class="box">
 241.741 +      <h3>
 241.742 +        December 23rd, 2006
 241.743 +      </h3>
 241.744 +      <p>
 241.745 +        I completed modifications to the first back-end system module.&nbsp; 
 241.746 +        After some testing and a couple quick changes, it's working just 
 241.747 +        great!&nbsp; So I'm going to go ahead and start applying these changes 
 241.748 +        to the other system modules.
 241.749 +      </p>
 241.750 +      <p>
 241.751 +        <br />
 241.752 +      </p>
 241.753 +    </div>
 241.754 +    <div class="box">
 241.755 +      <h3>
 241.756 +        December 22nd, 2006
 241.757 +      </h3>
 241.758 +      <p>
 241.759 +        Today I began extensive modifications to the interos environment 
 241.760 +        back-end to get it working with the new server configuration.&nbsp; 
 241.761 +        Changes were made to reflect the new directory hierarchy from when the 
 241.762 +        master control directory was implemented.&nbsp; Memory allocation 
 241.763 +        routines needed to be altered as well.
 241.764 +      </p>
 241.765 +      <p>
 241.766 +        <br />
 241.767 +      </p>
 241.768 +    </div>
 241.769 +    <div class="box">
 241.770 +      <h3>
 241.771 +        December 21st, 2006
 241.772 +      </h3>
 241.773 +      <p>
 241.774 +        I finished the changes to interos environment XHTML and started 
 241.775 +        applying them to the back-end modules.&nbsp; The first module is 
 241.776 +        outputting the new XHTML properly, but it appears the back-end needs 
 241.777 +        some additional alterations in order to work with the new server 
 241.778 +        configuration.
 241.779 +      </p>
 241.780 +      <p>
 241.781 +        <br />
 241.782 +      </p>
 241.783 +    </div>
 241.784 +    <div class="box">
 241.785 +      <h3>
 241.786 +        December 20th, 2006
 241.787 +      </h3>
 241.788 +      <p>
 241.789 +        The XHTML is starting to shape up as I'd intended.&nbsp; I should be 
 241.790 +        finished with it tomorrow so I can begin applying this new XHTML format 
 241.791 +        to the back-end.
 241.792 +      </p>
 241.793 +      <p>
 241.794 +        <br />
 241.795 +      </p>
 241.796 +    </div>
 241.797 +    <div class="box">
 241.798 +      <h3>
 241.799 +        December 19th, 2006
 241.800 +      </h3>
 241.801 +      <p>
 241.802 +        Today I began some necessary alterations to the XHTML that describes 
 241.803 +        the interos user environment.&nbsp; Once I finish the changes, I can 
 241.804 +        apply them to the back-end so that it dynamically outputs the user 
 241.805 +        environment in the proper format.
 241.806 +      </p>
 241.807 +      <p>
 241.808 +        <br />
 241.809 +      </p>
 241.810 +    </div>
 241.811 +    <div class="box">
 241.812 +      <h3>
 241.813 +        December 18th, 2006
 241.814 +      </h3>
 241.815 +      <p>
 241.816 +        My birthday today was marked with the international publication of the 
 241.817 +        patent application for interos.&nbsp; The United States patent 
 241.818 +        application was published on November 29th.
 241.819 +      </p>
 241.820 +      <p>
 241.821 +        <br />
 241.822 +      </p>
 241.823 +    </div>
 241.824 +    <div class="box">
 241.825 +      <h3>
 241.826 +        December 17th, 2006
 241.827 +      </h3>
 241.828 +      <p>
 241.829 +        The back-end for logging in is now working.&nbsp; Next up is getting 
 241.830 +        the code for the interos environment working.
 241.831 +      </p>
 241.832 +      <p>
 241.833 +        <br />
 241.834 +      </p>
 241.835 +    </div>
 241.836 +    <div class="box">
 241.837 +      <h3>
 241.838 +        December 16th, 2006
 241.839 +      </h3>
 241.840 +      <p>
 241.841 +        The code for the easy login back-end requires some additional changes 
 241.842 +        in order to work with the new server configuration.&nbsp; I should be 
 241.843 +        able to have them implemented by some point tomorrow.
 241.844 +      </p>
 241.845 +      <p>
 241.846 +        <br />
 241.847 +      </p>
 241.848 +    </div>
 241.849 +    <div class="box">
 241.850 +      <h3>
 241.851 +        December 15th, 2006
 241.852 +      </h3>
 241.853 +      <p>
 241.854 +        I finished interlinking the pages of the site to form a new and larger 
 241.855 +        skeletal site structure.&nbsp; It's mostly just placeholder pages that 
 241.856 +        are light on content, but that's the part that comes next.&nbsp; What 
 241.857 +        I <em>have</em> done is made sure that <strong>things have a place to 
 241.858 +        go</strong>.&nbsp; Beefing up content of these pages and adding a 
 241.859 +        public demo of interos are my next main areas of concentration.
 241.860 +      </p>
 241.861 +      <p>
 241.862 +        <br />
 241.863 +      </p>
 241.864 +    </div>
 241.865 +    <div class="box">
 241.866 +      <h3>
 241.867 +        December 14th, 2006
 241.868 +      </h3>
 241.869 +      <p>
 241.870 +        I finished the master control directory linking and started 
 241.871 +        interlinking the existing skeletal site content with the new expanded 
 241.872 +        material. 
 241.873 +      </p>
 241.874 +      <p>
 241.875 +        <br />
 241.876 +      </p>
 241.877 +    </div>
 241.878 +    <div class="box">
 241.879 +      <h3>
 241.880 +        December 13th, 2006
 241.881 +      </h3>
 241.882 +      <p>
 241.883 +        Today I did most of the necessary master control directory linking for 
 241.884 +        the expanded site content.
 241.885 +      </p>
 241.886 +      <p>
 241.887 +        <br />
 241.888 +      </p>
 241.889 +    </div>
 241.890 +    <div class="box">
 241.891 +      <h3>
 241.892 +        December 12th, 2006
 241.893 +      </h3>
 241.894 +      <p>
 241.895 +        I've gotten a lot of work done toward expanding the site.&nbsp; Changes 
 241.896 +        will start showing up as I start linking them together with current 
 241.897 +        site content.&nbsp; I also performed a great many web server 
 241.898 +        configuration tweaks to accommodate the expanded content and improve 
 241.899 +        site behavior.
 241.900 +      </p>
 241.901 +      <p>
 241.902 +        <br />
 241.903 +      </p>
 241.904 +    </div>
 241.905 +    <div class="box">
 241.906 +      <h3>
 241.907 +        December 11th, 2006
 241.908 +      </h3>
 241.909 +      <p>
 241.910 +        Today I brought the blog up to date!&nbsp; Now that that's done, I'm 
 241.911 +        going to go write more <strong>code</strong>. 
 241.912 +      </p>
 241.913 +      <p>
 241.914 +        <br />
 241.915 +      </p>
 241.916 +    </div>
 241.917 +    <div class="box">
 241.918 +      <h3>
 241.919 +        December 10th, 2006
 241.920 +      </h3>
 241.921 +      <p>
 241.922 +        I did some more work in configuring the web server to execute interos 
 241.923 +        back-end code.
 241.924 +      </p>
 241.925 +      <p>
 241.926 +        <br />
 241.927 +      </p>
 241.928 +    </div>
 241.929 +    <div class="box">
 241.930 +      <h3>
 241.931 +        December 9th, 2006
 241.932 +      </h3>
 241.933 +      <p>
 241.934 +        I had another meeting with intern Hardik V. Shah regarding 
 241.935 +        <strong>Java</strong> code integration.&nbsp; Everything seems to be 
 241.936 +        coming along well.
 241.937 +      </p>
 241.938 +      <p>
 241.939 +        <br />
 241.940 +      </p>
 241.941 +    </div>
 241.942 +    <div class="box">
 241.943 +      <h3>
 241.944 +        December 8th, 2006
 241.945 +      </h3>
 241.946 +      <p>
 241.947 +        Work on tying in the back-end continues...
 241.948 +      </p>
 241.949 +      <p>
 241.950 +        <br />
 241.951 +      </p>
 241.952 +    </div>
 241.953 +    <div class="box">
 241.954 +      <h3>
 241.955 +        December 7th, 2006
 241.956 +      </h3>
 241.957 +      <p>
 241.958 +        Today I continue work on back-end porting and testing.
 241.959 +      </p>
 241.960 +      <p>
 241.961 +        <br />
 241.962 +      </p>
 241.963 +    </div>
 241.964 +    <div class="box">
 241.965 +      <h3>
 241.966 +        December 6th, 2006
 241.967 +      </h3>
 241.968 +      <p>
 241.969 +        I started work porting the back-end to the server and modifying it to 
 241.970 +        output XHTML in the new format.
 241.971 +      </p>
 241.972 +      <p>
 241.973 +        <br />
 241.974 +      </p>
 241.975 +    </div>
 241.976 +    <div class="box">
 241.977 +      <h3>
 241.978 +        December 5th, 2006
 241.979 +      </h3>
 241.980 +      <p>
 241.981 +        The new login form is completed.&nbsp; I'm currently repeating the 
 241.982 +        process for the form for new users to create a login.&nbsp; I also 
 241.983 +        started work to interface both forms with the back-end.&nbsp; I 
 241.984 +        performed some additional code cleanup on various site pages as well.
 241.985 +      </p>
 241.986 +      <p>
 241.987 +        <br />
 241.988 +      </p>
 241.989 +    </div>
 241.990 +    <div class="box">
 241.991 +      <h3>
 241.992 +        December 4th, 2006
 241.993 +      </h3>
 241.994 +      <p>
 241.995 +        The first element necessary for the demo is the <strong>easy 
 241.996 +        login</strong>.&nbsp; I took the existing code I developed for this and 
 241.997 +        reimplemented it in the new standard format using one of the templates 
 241.998 +        I created.&nbsp; I also made some modifications to improve 
 241.999 +        accessibility.&nbsp; There's going to be a fair amount of this sort of 
241.1000 +        post over the next week or so as I apply this process to the code I've 
241.1001 +        developed for the other elements of the demo.
241.1002 +      </p>
241.1003 +      <p>
241.1004 +        <br />
241.1005 +      </p>
241.1006 +    </div>
241.1007 +    <div class="box">
241.1008 +      <h3>
241.1009 +        December 3rd, 2006
241.1010 +      </h3>
241.1011 +      <p>
241.1012 +        Today I started work on bringing the demo to the server.&nbsp; Once 
241.1013 +        enough of it is in place, it will be <strong>accessible</strong> from 
241.1014 +        the <a href="/demo">demo</a> section.
241.1015 +      </p>
241.1016 +      <p>
241.1017 +        <br />
241.1018 +      </p>
241.1019 +    </div>
241.1020 +    <div class="box">
241.1021 +      <h3>
241.1022 +        December 2nd, 2006
241.1023 +      </h3>
241.1024 +      <p>
241.1025 +        Tagging is now completed.&nbsp; I also started preparing the server for 
241.1026 +        the next sections I have planned.
241.1027 +      </p>
241.1028 +      <p>
241.1029 +        <br />
241.1030 +      </p>
241.1031 +    </div>
241.1032 +    <div class="box">
241.1033 +      <h3>
241.1034 +        December 1st, 2006
241.1035 +      </h3>
241.1036 +      <p>
241.1037 +        I finally finished getting the last of everything on the server 
241.1038 +        properly <strong>organized</strong>, and I've finished tagging most of 
241.1039 +        it as well.
241.1040 +      </p>
241.1041 +      <p>
241.1042 +        <br />
241.1043 +      </p>
241.1044 +    </div>
241.1045 +    <div class="box">
241.1046 +      <h3>
241.1047 +        November 30th, 2006
241.1048 +      </h3>
241.1049 +      <p>
241.1050 +        Site skeletal layout is <strong>firmly in place</strong>, and all areas 
241.1051 +        are <strong>well-defined</strong> parts of the overall 
241.1052 +        <strong>structure.</strong>&nbsp; It's now time to begin fleshing out 
241.1053 +        site content.
241.1054 +      </p>
241.1055 +      <p>
241.1056 +        <br />
241.1057 +      </p>
241.1058 +    </div>
241.1059 +    <div class="box">
241.1060 +      <h3>
241.1061 +        November 29th, 2006
241.1062 +      </h3>
241.1063 +      <p>
241.1064 +        I linked basic style sheets in a manner to maximize 
241.1065 +        <strong>efficiency</strong> and site <strong>consistency</strong>.
241.1066 +      </p>
241.1067 +      <p>
241.1068 +        <br />
241.1069 +      </p>
241.1070 +    </div>
241.1071 +    <div class="box">
241.1072 +      <h3>
241.1073 +        November 28th, 2006
241.1074 +      </h3>
241.1075 +      <p>
241.1076 +        The audit of existing XHTML continues with an emphasis on 
241.1077 +        <strong>semantic correctness</strong> in code. 
241.1078 +      </p>
241.1079 +      <p>
241.1080 +        <br />
241.1081 +      </p>
241.1082 +    </div>
241.1083 +    <div class="box">
241.1084 +      <h3>
241.1085 +        November 27th, 2006
241.1086 +      </h3>
241.1087 +      <p>
241.1088 +        The aforementioned templates further establish a standard format for 
241.1089 +        site content, so I started an audit of existing XHTML code by beginning 
241.1090 +        to apply the precedents set forth in said templates.&nbsp; This will 
241.1091 +        further maximize the <strong>compatibility</strong> and 
241.1092 +        <strong>accessibility</strong> of interos.
241.1093 +      </p>
241.1094 +      <p>
241.1095 +        <br />
241.1096 +      </p>
241.1097 +    </div>
241.1098 +    <div class="box">
241.1099 +      <h3>
241.1100 +        November 26th, 2006
241.1101 +      </h3>
241.1102 +      <p>
241.1103 +        I created some <strong>templates</strong> for the next wave of content.
241.1104 +      </p>
241.1105 +      <p>
241.1106 +        <br />
241.1107 +      </p>
241.1108 +    </div>
241.1109 +    <div class="box">
241.1110 +      <h3>
241.1111 +        November 25th, 2006
241.1112 +      </h3>
241.1113 +      <p>
241.1114 +        Today brings some site <strong>updates</strong> and a meeting.
241.1115 +      </p>
241.1116 +      <p>
241.1117 +        <br />
241.1118 +      </p>
241.1119 +    </div>
241.1120 +    <div class="box">
241.1121 +      <h3>
241.1122 +        November 24th, 2006
241.1123 +      </h3>
241.1124 +      <p>
241.1125 +        The <strong>master control directory</strong> is now 
241.1126 +        <strong>completed</strong>.
241.1127 +      </p>
241.1128 +      <p>
241.1129 +        <br />
241.1130 +      </p>
241.1131 +    </div>
241.1132 +    <div class="box">
241.1133 +      <h3>
241.1134 +        November 23rd, 2006
241.1135 +      </h3>
241.1136 +      <p>
241.1137 +        <strong>Happy Thanksgiving</strong> from <strong>interos</strong>!
241.1138 +      </p>
241.1139 +      <p>
241.1140 +        <br />
241.1141 +      </p>
241.1142 +    </div>
241.1143 +    <div class="box">
241.1144 +      <h3>
241.1145 +        November 22nd, 2006
241.1146 +      </h3>
241.1147 +      <p>
241.1148 +        The <strong>server configuration</strong> is now updated to reflect the 
241.1149 +        changes from linking virtual hosts to a master control directory.
241.1150 +      </p>
241.1151 +      <p>
241.1152 +        <br />
241.1153 +      </p>
241.1154 +    </div>
241.1155 +    <div class="box">
241.1156 +      <h3>
241.1157 +        November 21st, 2006
241.1158 +      </h3>
241.1159 +      <p>
241.1160 +        After a great deal of experimenting, I figured out the <strong>best 
241.1161 +        method</strong> for linking everything in a way that will both work and 
241.1162 +        be easy to update.&nbsp; It took all day to implement, but now common 
241.1163 +        address requests can easily be linked to the proper corresponding 
241.1164 +        resources.
241.1165 +      </p>
241.1166 +      <p>
241.1167 +        <br />
241.1168 +      </p>
241.1169 +    </div>
241.1170 +    <div class="box">
241.1171 +      <h3>
241.1172 +        November 20th, 2006
241.1173 +      </h3>
241.1174 +      <p>
241.1175 +        I was having difficulty managing all the virtual hosts that define the 
241.1176 +        interconnected sections of the interos site layout.&nbsp; Then I had 
241.1177 +        the idea to implement a <strong>master control directory</strong>.
241.1178 +      </p>
241.1179 +      <p>
241.1180 +        <br />
241.1181 +      </p>
241.1182 +    </div>
241.1183 +    <div class="box">
241.1184 +      <h3>
241.1185 +        November 19th, 2006
241.1186 +      </h3>
241.1187 +      <p>
241.1188 +        Last night I mapped out a <strong>logical web filesystem 
241.1189 +        layout</strong> to coincide with the aforementioned easy web 
241.1190 +        addresses.&nbsp; I still have some more time today, so I have some odds 
241.1191 +        and ends in mind to spend it working on.&nbsp; The sooner I get them 
241.1192 +        out of the way, the sooner I can get to posting the exciting stuff.
241.1193 +      </p>
241.1194 +      <p>
241.1195 +        <br />
241.1196 +      </p>
241.1197 +    </div>
241.1198 +    <div class="box">
241.1199 +      <h3>
241.1200 +        November 18th, 2006
241.1201 +      </h3>
241.1202 +      <p>
241.1203 +        Today was various updates to site content, including a link to what an 
241.1204 +        <strong><a 
241.1205 +        href="http://en.wikipedia.org/wiki/Internet_Operating_Systems">internet 
241.1206 +        operating system</a></strong> is.
241.1207 +      </p>
241.1208 +      <p>
241.1209 +        <br />
241.1210 +      </p>
241.1211 +    </div>
241.1212 +    <div class="box">
241.1213 +      <h3>
241.1214 +        November 17th, 2006
241.1215 +      </h3>
241.1216 +      <p>
241.1217 +        I've gone through and cleaned up most of the code, and I've established 
241.1218 +        a <strong>standard format</strong> for delivering site content.
241.1219 +      </p>
241.1220 +      <p>
241.1221 +        <br />
241.1222 +      </p>
241.1223 +    </div>
241.1224 +    <div class="box">
241.1225 +      <h3>
241.1226 +        November 16th, 2006
241.1227 +      </h3>
241.1228 +      <p>
241.1229 +        The new configuration is working well, and I've been able to implement 
241.1230 +        site-wide changes a lot faster.&nbsp; This is already leading to 
241.1231 +        cleaner code and a more <strong>consistent look and feel</strong>.
241.1232 +      </p>
241.1233 +      <p>
241.1234 +        <br />
241.1235 +      </p>
241.1236 +    </div>
241.1237 +    <div class="box">
241.1238 +      <h3>
241.1239 +        November 15th, 2006
241.1240 +      </h3>
241.1241 +      <p>
241.1242 +        I've now finished enough work on the local systems that I can get 
241.1243 +        started on <strong>rapid deployment</strong> of site content.
241.1244 +      </p>
241.1245 +      <p>
241.1246 +        <br />
241.1247 +      </p>
241.1248 +    </div>
241.1249 +    <div class="box">
241.1250 +      <h3>
241.1251 +        November 14th, 2006
241.1252 +      </h3>
241.1253 +      <p>
241.1254 +        Some changes to my <strong>development environment</strong> should make 
241.1255 +        my work a lot <strong>easier</strong> from now on.
241.1256 +      </p>
241.1257 +      <p>
241.1258 +        <br />
241.1259 +      </p>
241.1260 +    </div>
241.1261 +    <div class="box">
241.1262 +      <h3>
241.1263 +        November 13th, 2006
241.1264 +      </h3>
241.1265 +      <p>
241.1266 +        Today was yet more work on the local <strong>development and 
241.1267 +        testing</strong> servers.&nbsp; It's all coming along nicely, but it's 
241.1268 +        a fair amount of work to assemble a specific server software framework 
241.1269 +        on <strong>multiple platforms</strong> simultaneously.
241.1270 +      </p>
241.1271 +      <p>
241.1272 +        <br />
241.1273 +      </p>
241.1274 +    </div>
241.1275 +    <div class="box">
241.1276 +      <h3>
241.1277 +        November 12th, 2006
241.1278 +      </h3>
241.1279 +      <p>
241.1280 +        After running code through validators and making the appropriate 
241.1281 +        alterations, interos now uses only <strong>valid CSS</strong> for 
241.1282 +        maximum interoperability.
241.1283 +      </p>
241.1284 +      <p>
241.1285 +        <br />
241.1286 +      </p>
241.1287 +    </div>
241.1288 +    <div class="box">
241.1289 +      <h3>
241.1290 +        November 11th, 2006
241.1291 +      </h3>
241.1292 +      <p>
241.1293 +        After running code through validators and making the appropriate 
241.1294 +        alterations, interos now uses only <strong>valid XHTML</strong> for 
241.1295 +        maximum interoperability.
241.1296 +      </p>
241.1297 +      <p>
241.1298 +        <br />
241.1299 +      </p>
241.1300 +    </div>
241.1301 +    <div class="box">
241.1302 +      <h3>
241.1303 +        November 10th, 2006
241.1304 +      </h3>
241.1305 +      <p>
241.1306 +        Today I started work on new local development and testing servers to 
241.1307 +        speed up finalizing code for production and to serve as a 
241.1308 +        <strong>backup</strong>.&nbsp; interos uses only <strong>free</strong> 
241.1309 +        and <strong>open source</strong> software.
241.1310 +      </p>
241.1311 +      <p>
241.1312 +        <br />
241.1313 +      </p>
241.1314 +    </div>
241.1315 +    <div class="box">
241.1316 +      <h3>
241.1317 +        November 9th, 2006
241.1318 +      </h3>
241.1319 +      <p>
241.1320 +        interos is now set up to have <strong>easy web addresses</strong>.
241.1321 +      </p>
241.1322 +      <p>
241.1323 +        <br />
241.1324 +      </p>
241.1325 +    </div>
241.1326 +    <div class="box">
241.1327 +      <h3>
241.1328 +        November 8th, 2006
241.1329 +      </h3>
241.1330 +      <p>
241.1331 +        Today was a lot of <strong>correspondence</strong> regarding the design 
241.1332 +        goals of interos.
241.1333 +      </p>
241.1334 +      <p>
241.1335 +        <br />
241.1336 +      </p>
241.1337 +    </div>
241.1338 +    <div class="box">
241.1339 +      <h3>
241.1340 +        November 7th, 2006
241.1341 +      </h3>
241.1342 +      <p>
241.1343 +        I met with Hardik Shah today to discuss the <strong>integration of 
241.1344 +        code</strong> that he, Rajdeep Bhowmik, Andrew Paroski and Amol 
241.1345 +        Panchabhai have developed.
241.1346 +      </p>
241.1347 +      <p>
241.1348 +        <br />
241.1349 +      </p>
241.1350 +    </div>
241.1351 +    <div class="box">
241.1352 +      <h3>
241.1353 +        November 6th, 2006
241.1354 +      </h3>
241.1355 +      <p>
241.1356 +        I did a lot of work today to <strong>maximize accessibility and ease of 
241.1357 +        use</strong> of the forthcoming site content.&nbsp; I'm excited that 
241.1358 +        everything's going to work so nicely.
241.1359 +      </p>
241.1360 +      <p>
241.1361 +        <br />
241.1362 +      </p>
241.1363 +    </div>
241.1364 +    <div class="box">
241.1365 +      <h3>
241.1366 +        November 5th, 2006
241.1367 +      </h3>
241.1368 +      <p>
241.1369 +        Today was about taking care of miscellaneous odds and ends.&nbsp; There 
241.1370 +        were various tweaks to configuration files and a few alterations to 
241.1371 +        <strong>file permissions for security</strong> while I restructured 
241.1372 +        some file hierarchies.&nbsp; The served content directories are 
241.1373 +        starting to feel a great deal more <strong>organized and 
241.1374 +        logical</strong>.&nbsp; This will make <strong>content 
241.1375 +        management</strong> a lot easier.
241.1376 +      </p>
241.1377 +      <p>
241.1378 +        <br />
241.1379 +      </p>
241.1380 +    </div>
241.1381 +    <div class="box">
241.1382 +      <h3>
241.1383 +        November 4th, 2006
241.1384 +      </h3>
241.1385 +      <p>
241.1386 +        I took the time to set up some administrative <strong>e-mail</strong> 
241.1387 +        accounts on each domain.&nbsp; I also performed any necessary address 
241.1388 +        aliasing and/or forwarding.&nbsp; Now the sites have working 
241.1389 +        <a href="mailto:info@interos.com">contact</a> links.
241.1390 +      </p>
241.1391 +      <p>
241.1392 +        <br />
241.1393 +      </p>
241.1394 +    </div>
241.1395 +    <div class="box">
241.1396 +      <h3>
241.1397 +        November 3rd, 2006
241.1398 +      </h3>
241.1399 +      <p>
241.1400 +        The interos sites are <strong>now secured</strong> using a free 
241.1401 +        multi-domain SSL/TLS certificate thanks to 
241.1402 +        <a href="http://www.cacert.org/">CAcert.org</a> and 
241.1403 +        <a href="http://guillaume.romagny.free.fr/evaldo/csr.sh">this 
241.1404 +        script</a>.&nbsp; Our sites leverage the strength of the AES-256 
241.1405 +        encryption algorithm for securing user data and a 1024-bit RSA key for 
241.1406 +        <strong>maximum browser compatibility</strong>.&nbsp; The web server 
241.1407 +        configuration and directory structures for site content have been 
241.1408 +        modified accordingly.
241.1409 +      </p>
241.1410 +      <p>
241.1411 +        <br />
241.1412 +      </p>
241.1413 +    </div>
241.1414 +    <div class="box">
241.1415 +      <h3>
241.1416 +        November 2nd, 2006
241.1417 +      </h3>
241.1418 +      <p>
241.1419 +        I finished performing numerous <strong>optimizations</strong> to the 
241.1420 +        server system.&nbsp;  The physical server was rebooted and everything 
241.1421 +        seems to be <strong>humming away nicely</strong>. I have some further 
241.1422 +        optimizations in mind, but I'll look into those some other time when 
241.1423 +        there isn't quite so much to be done!
241.1424 +      </p>
241.1425 +      <p>
241.1426 +        <br />
241.1427 +      </p>
241.1428 +    </div>
241.1429 +    <div class="box">
241.1430 +      <h3>
241.1431 +        November 1st, 2006
241.1432 +      </h3>
241.1433 +      <p>
241.1434 +        The <strong>interos server is online</strong> and the 
241.1435 +        <a href="https://www.interos.com/">interos.com</a> and 
241.1436 +        <a href="https://interos.org/">interos.org</a> domain names have been 
241.1437 +        associated with it.
241.1438 +      </p>
241.1439 +      <p>
241.1440 +        I've begun populating the sites with some <strong>rough skeletal 
241.1441 +        content</strong> in order to test the web server configuration.&nbsp; 
241.1442 +        This skeletal content also acts as a foundation for the content I 
241.1443 +        ultimately intend for these sites to contain.&nbsp; In addition, I've 
241.1444 +        started this <strong>daily blog</strong> as a continuing record of the 
241.1445 +        progress I've made and the goals that follow.
241.1446 +      </p>
241.1447 +      <p>
241.1448 +        For a description of interos and its history so far, see the 
241.1449 +        <a href="/about">about</a> section as content is added to it.
241.1450 +      </p>
241.1451 +      <p>
241.1452 +        <br />
241.1453 +      </p>
241.1454 +    </div>
241.1455 +    <center>
241.1456 +      <p id="copyrightDates">
241.1457 +        &copy; 2001&#8211;2009 interos
241.1458 +      </p>
241.1459 +    </center>
241.1460 +  </body>
241.1461 +  <!--=====================================================================-->
241.1462 +  <!--                  Copyright and Trademark Statement                  -->
241.1463 +  <!--=====================================================================-->
241.1464 +  <!--                                                                     -->
241.1465 +  <!--          All original textual and graphical site content:           -->
241.1466 +  <!--                                                                     -->
241.1467 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
241.1468 +  <!--  reserved.  Reproduction in whole or in part without written        -->
241.1469 +  <!--  permission is prohibited.  interos and the interos logos are       -->
241.1470 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
241.1471 +  <!--  product, and service names mentioned herein may be the properties  -->
241.1472 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
241.1473 +  <!--  are the properties of their respective authors.  All software      -->
241.1474 +  <!--  developed in the forums is open source and belongs to everyone.    -->
241.1475 +  <!--                                                                     -->
241.1476 +  <!--=====================================================================-->
241.1477 +  <!--                      e-mail: info@interos.com                       -->
241.1478 +  <!--=====================================================================-->
241.1479 +</html>
   242.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   242.2 +++ b/xhtml/page/blog_interos.org.xhtml	Sat May 01 16:19:36 2010 -0400
   242.3 @@ -0,0 +1,1189 @@
   242.4 +<?xml version="1.0" encoding="utf-8"?>
   242.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   242.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   242.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   242.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   242.9 +  <!--=================================================-->
  242.10 +  <!--    interos Standard Document Header - Markup    -->
  242.11 +  <!--=================================================-->
  242.12 +  <!--    URIs:  http://interos.org/blog               -->
  242.13 +  <!--           http://blog.interos.org/              -->
  242.14 +  <!--           http://www.interos.org/blog           -->
  242.15 +  <!--   Title:  interos blog                          -->
  242.16 +  <!--  Author:  Brent Angeline                        -->
  242.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  242.18 +  <!--=================================================-->
  242.19 +  <head>
  242.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  242.21 +    <meta name="title" content="interos blog" />
  242.22 +    <meta name="description" content="web log for interos" />
  242.23 +    <meta name="author" content="Brent Angeline" />
  242.24 +    <meta name="copyright" 
  242.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  242.26 +    <meta name="robots" content="index, follow, archive" />
  242.27 +    <title>interos blog</title>
  242.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  242.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  242.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  242.31 +          media="screen, projection" />
  242.32 +  </head>
  242.33 +  <body id="body">
  242.34 +    <center>
  242.35 +      <p id="navigation">
  242.36 +        <a href="/about">about</a> | 
  242.37 +        blog | 
  242.38 +        <a href="/code">code</a> | 
  242.39 +        <a href="/forums">develop</a> | 
  242.40 +        <a href="/e-mail">e-mail</a> | 
  242.41 +        <a href="/faq">f.a.q.</a> | 
  242.42 +        <a href="/gear">gear</a> | 
  242.43 +        <a href="http://interos.org/">home</a>
  242.44 +      </p>
  242.45 +      <table id="titlePanel">
  242.46 +        <thead>
  242.47 +          <tr>
  242.48 +            <th><center>
  242.49 +                  <h1>
  242.50 +                    <a href="http://blog.interos.org/">interos blog</a>
  242.51 +                  </h1>
  242.52 +                  <h2>
  242.53 +                    by Brent Angeline
  242.54 +                  </h2>
  242.55 +                </center></th>
  242.56 +          </tr>
  242.57 +        </thead>
  242.58 +        <tbody>
  242.59 +          <tr>
  242.60 +            <td><br /></td>
  242.61 +          </tr>
  242.62 +        </tbody>
  242.63 +      </table>
  242.64 +    </center>
  242.65 +    <div class="box">
  242.66 +      <h3>
  242.67 +        Current Status
  242.68 +      </h3>
  242.69 +      <p>
  242.70 +        interos is presently undergoing some big and exciting changes!&nbsp; 
  242.71 +        I'll bring the blog up to date and fill in all the details of the past 
  242.72 +        weeks' work as soon as this wave of development is complete.
  242.73 +      </p>
  242.74 +      <p>
  242.75 +        <br />
  242.76 +      </p>
  242.77 +    </div>
  242.78 +    <div class="box">
  242.79 +      <h3>
  242.80 +        January 19th, 2007
  242.81 +      </h3>
  242.82 +      <p>
  242.83 +        Today I brought the blog up to date.&nbsp; I'll continue keeping daily 
  242.84 +        log entries as I work, and I'll update them here online roughly weekly. 
  242.85 +      </p>
  242.86 +      <p>
  242.87 +        Work on Javascript continues. .&nbsp;.&nbsp;.
  242.88 +      </p>
  242.89 +      <p>
  242.90 +        <br />
  242.91 +      </p>
  242.92 +    </div>
  242.93 +    <div class="box">
  242.94 +      <h3>
  242.95 +        January 18th, 2007
  242.96 +      </h3>
  242.97 +      <p>
  242.98 +        Today was more compositing code and all the additional alterations that 
  242.99 +        come with it.
 242.100 +      </p>
 242.101 +      <p>
 242.102 +        <br />
 242.103 +      </p>
 242.104 +    </div>
 242.105 +    <div class="box">
 242.106 +      <h3>
 242.107 +        January 17th, 2007
 242.108 +      </h3>
 242.109 +      <p>
 242.110 +        I began compositing code from my prior experiments with variations on 
 242.111 +        style into the current JavaScript.
 242.112 +      </p>
 242.113 +      <p>
 242.114 +        <br />
 242.115 +      </p>
 242.116 +    </div>
 242.117 +    <div class="box">
 242.118 +      <h3>
 242.119 +        January 16th, 2007
 242.120 +      </h3>
 242.121 +      <p>
 242.122 +        A few slight changes to each file were necessary to further 
 242.123 +        cross-browser consistency when rendering some of the more advanced 
 242.124 +        styling and positioning elements.&nbsp; After encountering these visual 
 242.125 +        inconsistencies during testing and subsequently resolving them, the 
 242.126 +        central elements of the page are approaching visual completion as 
 242.127 +        development of the page's JavaScript continues to progress.
 242.128 +      </p>
 242.129 +      <p>
 242.130 +        <br />
 242.131 +      </p>
 242.132 +    </div>
 242.133 +    <div class="box">
 242.134 +      <h3>
 242.135 +        January 15th, 2007
 242.136 +      </h3>
 242.137 +      <p>
 242.138 +        Now that I have some visual feedback from the code to work with, I 
 242.139 +        experimented with a few variations on its appearance and decided on a 
 242.140 +        combination of stylistic elements to employ in an effort to maximize 
 242.141 +        aesthetics, readability, and interface compactness for mobile devices.
 242.142 +      </p>
 242.143 +      <p>
 242.144 +        <br />
 242.145 +      </p>
 242.146 +    </div>
 242.147 +    <div class="box">
 242.148 +      <h3>
 242.149 +        January 14th, 2007
 242.150 +      </h3>
 242.151 +      <p>
 242.152 +        The page is improving visually and with consistent behavior across 
 242.153 +        browsers, but there's still more work to be done.
 242.154 +      </p>
 242.155 +      <p>
 242.156 +        <br />
 242.157 +      </p>
 242.158 +    </div>
 242.159 +    <div class="box">
 242.160 +      <h3>
 242.161 +        January 13th, 2007
 242.162 +      </h3>
 242.163 +      <p>
 242.164 +        Today was more dynamic element positioning in JavaScript.
 242.165 +      </p>
 242.166 +      <p>
 242.167 +        <br />
 242.168 +      </p>
 242.169 +    </div>
 242.170 +    <div class="box">
 242.171 +      <h3>
 242.172 +        January 12th, 2007
 242.173 +      </h3>
 242.174 +      <p>
 242.175 +        Work on JavaScript continues.&nbsp; Dynamic element positioning is 
 242.176 +        coming along nicely.
 242.177 +      </p>
 242.178 +      <p>
 242.179 +        <br />
 242.180 +      </p>
 242.181 +    </div>
 242.182 +    <div class="box">
 242.183 +      <h3>
 242.184 +        January 11th, 2007
 242.185 +      </h3>
 242.186 +      <p>
 242.187 +        I had to make some additional tweaks to the XHTML and its style sheet 
 242.188 +        for better interoperability with the JavaScript as it develops 
 242.189 +        further.&nbsp; Both the XHTML and JavaScript have been developed to be 
 242.190 +        compatible with serving the XHTML as multiple MIME types.&nbsp; I'll 
 242.191 +        have to make a few alterations to the server configuration in order to 
 242.192 +        implement content negotiation.&nbsp; This way the page will be served 
 242.193 +        as the MIME type that is best-suited for the current user's browser.
 242.194 +      </p>
 242.195 +      <p>
 242.196 +        <br />
 242.197 +      </p>
 242.198 +    </div>
 242.199 +    <div class="box">
 242.200 +      <h3>
 242.201 +        January 10th, 2007
 242.202 +      </h3>
 242.203 +      <p>
 242.204 +        The style sheet now validates without any warnings.&nbsp; This gives 
 242.205 +        us: the back-end, the XHTML, and the cascading style sheet.&nbsp; Now 
 242.206 +        it's time to begin adding the final component of this page: the 
 242.207 +        JavaScript.
 242.208 +      </p>
 242.209 +      <p>
 242.210 +        Once JavaScript is finished for this page, I will have all the 
 242.211 +        components necessary for a complete, working, and polished user-driven 
 242.212 +        system module.&nbsp; It will set the standard for the other pages that 
 242.213 +        also act as functional modules, and I should be able to take the new 
 242.214 +        techniques employed and apply them throughout the site fairly quickly, 
 242.215 +        since most pages aren't as complex as the current module.
 242.216 +      </p>
 242.217 +      <p>
 242.218 +        <br />
 242.219 +      </p>
 242.220 +    </div>
 242.221 +    <div class="box">
 242.222 +      <h3>
 242.223 +        January 9th, 2007
 242.224 +      </h3>
 242.225 +      <p>
 242.226 +        I've applied all the needed styling to elements of one of the more 
 242.227 +        complex pages.&nbsp; It validates with no errors, but there are some 
 242.228 +        warnings.&nbsp; I'll have to see about working those out tomorrow. 
 242.229 +      </p>
 242.230 +      <p>
 242.231 +        <br />
 242.232 +      </p>
 242.233 +    </div>
 242.234 +    <div class="box">
 242.235 +      <h3>
 242.236 +        January 8th, 2007
 242.237 +      </h3>
 242.238 +      <p>
 242.239 +        I'm thrilled to say that my new approach was right on the money!&nbsp; 
 242.240 +        Elements in the structural hierarchy of the page's code now translate 
 242.241 +        to making full visual sense as well.&nbsp; And after a few tweaks, it's 
 242.242 +        looking like page visual renderings will shape up to being more or less 
 242.243 +        pixel-perfect reproductions from one browser to the next in its class.
 242.244 +      </p>
 242.245 +      <p>
 242.246 +        <br />
 242.247 +      </p>
 242.248 +    </div>
 242.249 +    <div class="box">
 242.250 +      <h3>
 242.251 +        January 7th, 2007
 242.252 +      </h3>
 242.253 +      <p>
 242.254 +        I spent the day experimenting with different approaches to developing a 
 242.255 +        cross-browser style that could be implemented across all interos site 
 242.256 +        content.&nbsp; I was met with varying degrees of success in each 
 242.257 +        attempted implementation, but I think I'm starting to see some common 
 242.258 +        threads.&nbsp; In the end, I wound up completely scrapping all the 
 242.259 +        style work I'd put together today.&nbsp; But all is not lost, as I've 
 242.260 +        learned a great deal from my experiments, and they're already giving me 
 242.261 +        some ideas.&nbsp; I'm confident that after some rest, I can get a fresh 
 242.262 +        start tomorrow on taking what I've learned and applying it to the new 
 242.263 +        approach I'm beginning to formulate.
 242.264 +      </p>
 242.265 +      <p>
 242.266 +        <br />
 242.267 +      </p>
 242.268 +    </div>
 242.269 +    <div class="box">
 242.270 +      <h3>
 242.271 +        January 6th, 2007
 242.272 +      </h3>
 242.273 +      <p>
 242.274 +        Today I took care of some correspondence toward getting more 
 242.275 +        development underway on web applications that integrate with the 
 242.276 +        interos platform.&nbsp; I have some exciting prospects.&nbsp; I also 
 242.277 +        spent some time bringing the blog up to date, and work will continue 
 242.278 +        into the night with a concentration on getting this style sheet mess 
 242.279 +        sorted out once and for all!
 242.280 +      </p>
 242.281 +      <p>
 242.282 +        <br />
 242.283 +      </p>
 242.284 +    </div>
 242.285 +    <div class="box">
 242.286 +      <h3>
 242.287 +        January 5th, 2007
 242.288 +      </h3>
 242.289 +      <p>
 242.290 +        Today I made a series of minor changes to each page on the site.&nbsp; 
 242.291 +        It was time-consuming but necessary, and I'm glad it's out of the way 
 242.292 +        now.
 242.293 +      </p>
 242.294 +      <p>
 242.295 +        <br />
 242.296 +      </p>
 242.297 +    </div>
 242.298 +    <div class="box">
 242.299 +      <h3>
 242.300 +        January 4th, 2007
 242.301 +      </h3>
 242.302 +      <p>
 242.303 +        Master control directory linking of style sheets continues.
 242.304 +      </p>
 242.305 +      <p>
 242.306 +        <br />
 242.307 +      </p>
 242.308 +    </div>
 242.309 +    <div class="box">
 242.310 +      <h3>
 242.311 +        January 3rd, 2007
 242.312 +      </h3>
 242.313 +      <p>
 242.314 +        I created a few of the new style sheets and began making link entries 
 242.315 +        in the master control directory.
 242.316 +      </p>
 242.317 +      <p>
 242.318 +        <br />
 242.319 +      </p>
 242.320 +    </div>
 242.321 +    <div class="box">
 242.322 +      <h3>
 242.323 +        January 2nd, 2007
 242.324 +      </h3>
 242.325 +      <p>
 242.326 +        I began organizing style sheet elements into categories: elements to be 
 242.327 +        applied globally across all pages containted on the site, elements to 
 242.328 +        be applied only under certain circumstances, and elements to be applied 
 242.329 +        by default in the absence of predefined circumstance.
 242.330 +      </p>
 242.331 +      <p>
 242.332 +        <br />
 242.333 +      </p>
 242.334 +    </div>
 242.335 +    <div class="box">
 242.336 +      <h3>
 242.337 +        January 1st, 2007
 242.338 +      </h3>
 242.339 +      <p>
 242.340 +        <strong>Happy New Year</strong> from <strong>interos</strong>!
 242.341 +      </p>
 242.342 +      <p>
 242.343 +        <br />
 242.344 +      </p>
 242.345 +    </div>
 242.346 +    <div class="box">
 242.347 +      <h3>
 242.348 +        December 31st, 2006
 242.349 +      </h3>
 242.350 +      <p>
 242.351 +        2006 closes with the United States and international publications of 
 242.352 +        the interos patent applications, interos code running properly on a 
 242.353 +        genuine web server, and a public demo of interos well on its way.&nbsp; 
 242.354 +        It was a big year for the fledgling interos project, and here's hoping 
 242.355 +        that 2007 is even bigger!
 242.356 +      </p>
 242.357 +      <p>
 242.358 +        <br />
 242.359 +      </p>
 242.360 +    </div>
 242.361 +    <div class="box">
 242.362 +      <h3>
 242.363 +        December 30th, 2006
 242.364 +      </h3>
 242.365 +      <p>
 242.366 +        I've had a look at the style sheet situation, and I've gotten a feel 
 242.367 +        for how styling would best be implemented across the sites.&nbsp; 
 242.368 +        Structurally, it's a complete overhaul&mdash;but I have done a number 
 242.369 +        of things correctly already, so I should be able to integrate my 
 242.370 +        existing work into the new paradigm fairly quickly once restructuring 
 242.371 +        is completed.
 242.372 +      </p>
 242.373 +      <p>
 242.374 +        <br />
 242.375 +      </p>
 242.376 +    </div>
 242.377 +    <div class="box">
 242.378 +      <h3>
 242.379 +        December 29th, 2006
 242.380 +      </h3>
 242.381 +      <p>
 242.382 +        I finished the changes, and the core modules to the operating 
 242.383 +        environment are now working just fine with the new server 
 242.384 +        configuration.&nbsp; Some style sheet work needs to be done in order 
 242.385 +        for everything to make visual sense, but after that's completed and a 
 242.386 +        few tweaks are made here and there, I should have something that I'm 
 242.387 +        willing to link to from the demo page.
 242.388 +      </p>
 242.389 +      <p>
 242.390 +        <br />
 242.391 +      </p>
 242.392 +    </div>
 242.393 +    <div class="box">
 242.394 +      <h3>
 242.395 +        December 28th, 2006
 242.396 +      </h3>
 242.397 +      <p>
 242.398 +        I'm just about done with applying the required modifications to all of 
 242.399 +        the modules of the system.
 242.400 +      </p>
 242.401 +      <p>
 242.402 +        <br />
 242.403 +      </p>
 242.404 +    </div>
 242.405 +    <div class="box">
 242.406 +      <h3>
 242.407 +        December 27th, 2006
 242.408 +      </h3>
 242.409 +      <p>
 242.410 +        I'm about half of the way through making necessary changes to system 
 242.411 +        modules.&nbsp; Further work on it will continue tomorrow.
 242.412 +      </p>
 242.413 +      <p>
 242.414 +        <br />
 242.415 +      </p>
 242.416 +    </div>
 242.417 +    <div class="box">
 242.418 +      <h3>
 242.419 +        December 26th, 2006
 242.420 +      </h3>
 242.421 +      <p>
 242.422 +        I finished modifications to the next system module.&nbsp; I'll start on 
 242.423 +        the others tomorrow.
 242.424 +      </p>
 242.425 +      <p>
 242.426 +        <br />
 242.427 +      </p>
 242.428 +    </div>
 242.429 +    <div class="box">
 242.430 +      <h3>
 242.431 +        December 25th, 2006
 242.432 +      </h3>
 242.433 +      <p>
 242.434 +        <strong>Merry Christmas</strong> from <strong>interos</strong>!
 242.435 +      </p>
 242.436 +      <p>
 242.437 +        <br />
 242.438 +      </p>
 242.439 +    </div>
 242.440 +    <div class="box">
 242.441 +      <h3>
 242.442 +        December 24th, 2006
 242.443 +      </h3>
 242.444 +      <p>
 242.445 +        With the holiday and all that comes with it, I only got the chance to 
 242.446 +        start making changes to one of the other system modules.&nbsp; I'll be 
 242.447 +        right back at it soon.
 242.448 +      </p>
 242.449 +      <p>
 242.450 +        <br />
 242.451 +      </p>
 242.452 +    </div>
 242.453 +    <div class="box">
 242.454 +      <h3>
 242.455 +        December 23rd, 2006
 242.456 +      </h3>
 242.457 +      <p>
 242.458 +        I completed modifications to the first back-end system module.&nbsp; 
 242.459 +        After some testing and a couple quick changes, it's working just 
 242.460 +        great!&nbsp; So I'm going to go ahead and start applying these changes 
 242.461 +        to the other system modules.
 242.462 +      </p>
 242.463 +      <p>
 242.464 +        <br />
 242.465 +      </p>
 242.466 +    </div>
 242.467 +    <div class="box">
 242.468 +      <h3>
 242.469 +        December 22nd, 2006
 242.470 +      </h3>
 242.471 +      <p>
 242.472 +        Today I began extensive modifications to the interos environment 
 242.473 +        back-end to get it working with the new server configuration.&nbsp; 
 242.474 +        Changes were made to reflect the new directory hierarchy from when the 
 242.475 +        master control directory was implemented.&nbsp; Memory allocation 
 242.476 +        routines needed to be altered as well.
 242.477 +      </p>
 242.478 +      <p>
 242.479 +        <br />
 242.480 +      </p>
 242.481 +    </div>
 242.482 +    <div class="box">
 242.483 +      <h3>
 242.484 +        December 21st, 2006
 242.485 +      </h3>
 242.486 +      <p>
 242.487 +        I finished the changes to interos environment XHTML and started 
 242.488 +        applying them to the back-end modules.&nbsp; The first module is 
 242.489 +        outputting the new XHTML properly, but it appears the back-end needs 
 242.490 +        some additional alterations in order to work with the new server 
 242.491 +        configuration.
 242.492 +      </p>
 242.493 +      <p>
 242.494 +        <br />
 242.495 +      </p>
 242.496 +    </div>
 242.497 +    <div class="box">
 242.498 +      <h3>
 242.499 +        December 20th, 2006
 242.500 +      </h3>
 242.501 +      <p>
 242.502 +        The XHTML is starting to shape up as I'd intended.&nbsp; I should be 
 242.503 +        finished with it tomorrow so I can begin applying this new XHTML format 
 242.504 +        to the back-end.
 242.505 +      </p>
 242.506 +      <p>
 242.507 +        <br />
 242.508 +      </p>
 242.509 +    </div>
 242.510 +    <div class="box">
 242.511 +      <h3>
 242.512 +        December 19th, 2006
 242.513 +      </h3>
 242.514 +      <p>
 242.515 +        Today I began some necessary alterations to the XHTML that describes 
 242.516 +        the interos user environment.&nbsp; Once I finish the changes, I can 
 242.517 +        apply them to the back-end so that it dynamically outputs the user 
 242.518 +        environment in the proper format.
 242.519 +      </p>
 242.520 +      <p>
 242.521 +        <br />
 242.522 +      </p>
 242.523 +    </div>
 242.524 +    <div class="box">
 242.525 +      <h3>
 242.526 +        December 18th, 2006
 242.527 +      </h3>
 242.528 +      <p>
 242.529 +        My birthday today was marked with the international publication of the 
 242.530 +        patent application for interos.&nbsp; The United States patent 
 242.531 +        application was published on November 29th.
 242.532 +      </p>
 242.533 +      <p>
 242.534 +        <br />
 242.535 +      </p>
 242.536 +    </div>
 242.537 +    <div class="box">
 242.538 +      <h3>
 242.539 +        December 17th, 2006
 242.540 +      </h3>
 242.541 +      <p>
 242.542 +        The back-end for logging in is now working.&nbsp; Next up is getting 
 242.543 +        the code for the interos environment working.
 242.544 +      </p>
 242.545 +      <p>
 242.546 +        <br />
 242.547 +      </p>
 242.548 +    </div>
 242.549 +    <div class="box">
 242.550 +      <h3>
 242.551 +        December 16th, 2006
 242.552 +      </h3>
 242.553 +      <p>
 242.554 +        The code for the easy login back-end requires some additional changes 
 242.555 +        in order to work with the new server configuration.&nbsp; I should be 
 242.556 +        able to have them implemented by some point tomorrow.
 242.557 +      </p>
 242.558 +      <p>
 242.559 +        <br />
 242.560 +      </p>
 242.561 +    </div>
 242.562 +    <div class="box">
 242.563 +      <h3>
 242.564 +        December 15th, 2006
 242.565 +      </h3>
 242.566 +      <p>
 242.567 +        I finished interlinking the pages of the site to form a new and larger 
 242.568 +        skeletal site structure.&nbsp; It's mostly just placeholder pages that 
 242.569 +        are light on content, but that's the part that comes next.&nbsp; What 
 242.570 +        I <em>have</em> done is made sure that <strong>things have a place to 
 242.571 +        go</strong>.&nbsp; Beefing up content of these pages and adding a 
 242.572 +        public demo of interos are my next main areas of concentration.
 242.573 +      </p>
 242.574 +      <p>
 242.575 +        <br />
 242.576 +      </p>
 242.577 +    </div>
 242.578 +    <div class="box">
 242.579 +      <h3>
 242.580 +        December 14th, 2006
 242.581 +      </h3>
 242.582 +      <p>
 242.583 +        I finished the master control directory linking and started 
 242.584 +        interlinking the existing skeletal site content with the new expanded 
 242.585 +        material. 
 242.586 +      </p>
 242.587 +      <p>
 242.588 +        <br />
 242.589 +      </p>
 242.590 +    </div>
 242.591 +    <div class="box">
 242.592 +      <h3>
 242.593 +        December 13th, 2006
 242.594 +      </h3>
 242.595 +      <p>
 242.596 +        Today I did most of the necessary master control directory linking for 
 242.597 +        the expanded site content.
 242.598 +      </p>
 242.599 +      <p>
 242.600 +        <br />
 242.601 +      </p>
 242.602 +    </div>
 242.603 +    <div class="box">
 242.604 +      <h3>
 242.605 +        December 12th, 2006
 242.606 +      </h3>
 242.607 +      <p>
 242.608 +        I've gotten a lot of work done toward expanding the site.&nbsp; Changes 
 242.609 +        will start showing up as I start linking them together with current 
 242.610 +        site content.&nbsp; I also performed a great many web server 
 242.611 +        configuration tweaks to accommodate the expanded content and improve 
 242.612 +        site behavior.
 242.613 +      </p>
 242.614 +      <p>
 242.615 +        <br />
 242.616 +      </p>
 242.617 +    </div>
 242.618 +    <div class="box">
 242.619 +      <h3>
 242.620 +        December 11th, 2006
 242.621 +      </h3>
 242.622 +      <p>
 242.623 +        Today I brought the blog up to date!&nbsp; Now that that's done, I'm 
 242.624 +        going to go write more <strong>code</strong>. 
 242.625 +      </p>
 242.626 +      <p>
 242.627 +        <br />
 242.628 +      </p>
 242.629 +    </div>
 242.630 +    <div class="box">
 242.631 +      <h3>
 242.632 +        December 10th, 2006
 242.633 +      </h3>
 242.634 +      <p>
 242.635 +        I did some more work in configuring the web server to execute interos 
 242.636 +        back-end code.
 242.637 +      </p>
 242.638 +      <p>
 242.639 +        <br />
 242.640 +      </p>
 242.641 +    </div>
 242.642 +    <div class="box">
 242.643 +      <h3>
 242.644 +        December 9th, 2006
 242.645 +      </h3>
 242.646 +      <p>
 242.647 +        I had another meeting with intern Hardik V. Shah regarding 
 242.648 +        <strong>Java</strong> code integration.&nbsp; Everything seems to be 
 242.649 +        coming along well.
 242.650 +      </p>
 242.651 +      <p>
 242.652 +        <br />
 242.653 +      </p>
 242.654 +    </div>
 242.655 +    <div class="box">
 242.656 +      <h3>
 242.657 +        December 8th, 2006
 242.658 +      </h3>
 242.659 +      <p>
 242.660 +        Work on tying in the back-end continues...
 242.661 +      </p>
 242.662 +      <p>
 242.663 +        <br />
 242.664 +      </p>
 242.665 +    </div>
 242.666 +    <div class="box">
 242.667 +      <h3>
 242.668 +        December 7th, 2006
 242.669 +      </h3>
 242.670 +      <p>
 242.671 +        Today I continue work on back-end porting and testing.
 242.672 +      </p>
 242.673 +      <p>
 242.674 +        <br />
 242.675 +      </p>
 242.676 +    </div>
 242.677 +    <div class="box">
 242.678 +      <h3>
 242.679 +        December 6th, 2006
 242.680 +      </h3>
 242.681 +      <p>
 242.682 +        I started work porting the back-end to the server and modifying it to 
 242.683 +        output XHTML in the new format.
 242.684 +      </p>
 242.685 +      <p>
 242.686 +        <br />
 242.687 +      </p>
 242.688 +    </div>
 242.689 +    <div class="box">
 242.690 +      <h3>
 242.691 +        December 5th, 2006
 242.692 +      </h3>
 242.693 +      <p>
 242.694 +        The new login form is completed.&nbsp; I'm currently repeating the 
 242.695 +        process for the form for new users to create a login.&nbsp; I also 
 242.696 +        started work to interface both forms with the back-end.&nbsp; I 
 242.697 +        performed some additional code cleanup on various site pages as well.
 242.698 +      </p>
 242.699 +      <p>
 242.700 +        <br />
 242.701 +      </p>
 242.702 +    </div>
 242.703 +    <div class="box">
 242.704 +      <h3>
 242.705 +        December 4th, 2006
 242.706 +      </h3>
 242.707 +      <p>
 242.708 +        The first element necessary for the demo is the <strong>easy 
 242.709 +        login</strong>.&nbsp; I took the existing code I developed for this and 
 242.710 +        reimplemented it in the new standard format using one of the templates 
 242.711 +        I created.&nbsp; I also made some modifications to improve 
 242.712 +        accessibility.&nbsp; There's going to be a fair amount of this sort of 
 242.713 +        post over the next week or so as I apply this process to the code I've 
 242.714 +        developed for the other elements of the demo.
 242.715 +      </p>
 242.716 +      <p>
 242.717 +        <br />
 242.718 +      </p>
 242.719 +    </div>
 242.720 +    <div class="box">
 242.721 +      <h3>
 242.722 +        December 3rd, 2006
 242.723 +      </h3>
 242.724 +      <p>
 242.725 +        Today I started work on bringing the demo to the server.&nbsp; Once 
 242.726 +        enough of it is in place, it will be <strong>accessible</strong> from 
 242.727 +        the <a href="http://www.interos.com/demo">demo</a> section.
 242.728 +      </p>
 242.729 +      <p>
 242.730 +        <br />
 242.731 +      </p>
 242.732 +    </div>
 242.733 +    <div class="box">
 242.734 +      <h3>
 242.735 +        December 2nd, 2006
 242.736 +      </h3>
 242.737 +      <p>
 242.738 +        Tagging is now completed.&nbsp; I also started preparing the server for 
 242.739 +        the next sections I have planned.
 242.740 +      </p>
 242.741 +      <p>
 242.742 +        <br />
 242.743 +      </p>
 242.744 +    </div>
 242.745 +    <div class="box">
 242.746 +      <h3>
 242.747 +        December 1st, 2006
 242.748 +      </h3>
 242.749 +      <p>
 242.750 +        I finally finished getting the last of everything on the server 
 242.751 +        properly <strong>organized</strong>, and I've finished tagging most of 
 242.752 +        it as well.
 242.753 +      </p>
 242.754 +      <p>
 242.755 +        <br />
 242.756 +      </p>
 242.757 +    </div>
 242.758 +    <div class="box">
 242.759 +      <h3>
 242.760 +        November 30th, 2006
 242.761 +      </h3>
 242.762 +      <p>
 242.763 +        Site skeletal layout is <strong>firmly in place</strong>, and all areas 
 242.764 +        are <strong>well-defined</strong> parts of the overall 
 242.765 +        <strong>structure.</strong>&nbsp; It's now time to begin fleshing out 
 242.766 +        site content.
 242.767 +      </p>
 242.768 +      <p>
 242.769 +        <br />
 242.770 +      </p>
 242.771 +    </div>
 242.772 +    <div class="box">
 242.773 +      <h3>
 242.774 +        November 29th, 2006
 242.775 +      </h3>
 242.776 +      <p>
 242.777 +        I linked basic style sheets in a manner to maximize 
 242.778 +        <strong>efficiency</strong> and site <strong>consistency</strong>.
 242.779 +      </p>
 242.780 +      <p>
 242.781 +        <br />
 242.782 +      </p>
 242.783 +    </div>
 242.784 +    <div class="box">
 242.785 +      <h3>
 242.786 +        November 28th, 2006
 242.787 +      </h3>
 242.788 +      <p>
 242.789 +        The audit of existing XHTML continues with an emphasis on 
 242.790 +        <strong>semantic correctness</strong> in code. 
 242.791 +      </p>
 242.792 +      <p>
 242.793 +        <br />
 242.794 +      </p>
 242.795 +    </div>
 242.796 +    <div class="box">
 242.797 +      <h3>
 242.798 +        November 27th, 2006
 242.799 +      </h3>
 242.800 +      <p>
 242.801 +        The aforementioned templates further establish a standard format for 
 242.802 +        site content, so I started an audit of existing XHTML code by beginning 
 242.803 +        to apply the precedents set forth in said templates.&nbsp; This will 
 242.804 +        further maximize the <strong>compatibility</strong> and 
 242.805 +        <strong>accessibility</strong> of interos.
 242.806 +      </p>
 242.807 +      <p>
 242.808 +        <br />
 242.809 +      </p>
 242.810 +    </div>
 242.811 +    <div class="box">
 242.812 +      <h3>
 242.813 +        November 26th, 2006
 242.814 +      </h3>
 242.815 +      <p>
 242.816 +        I created some <strong>templates</strong> for the next wave of content.
 242.817 +      </p>
 242.818 +      <p>
 242.819 +        <br />
 242.820 +      </p>
 242.821 +    </div>
 242.822 +    <div class="box">
 242.823 +      <h3>
 242.824 +        November 25th, 2006
 242.825 +      </h3>
 242.826 +      <p>
 242.827 +        Today brings some site <strong>updates</strong> and a meeting.
 242.828 +      </p>
 242.829 +      <p>
 242.830 +        <br />
 242.831 +      </p>
 242.832 +    </div>
 242.833 +    <div class="box">
 242.834 +      <h3>
 242.835 +        November 24th, 2006
 242.836 +      </h3>
 242.837 +      <p>
 242.838 +        The <strong>master control directory</strong> is now 
 242.839 +        <strong>completed</strong>.
 242.840 +      </p>
 242.841 +      <p>
 242.842 +        <br />
 242.843 +      </p>
 242.844 +    </div>
 242.845 +    <div class="box">
 242.846 +      <h3>
 242.847 +        November 23rd, 2006
 242.848 +      </h3>
 242.849 +      <p>
 242.850 +        <strong>Happy Thanksgiving</strong> from <strong>interos</strong>!
 242.851 +      </p>
 242.852 +      <p>
 242.853 +        <br />
 242.854 +      </p>
 242.855 +    </div>
 242.856 +    <div class="box">
 242.857 +      <h3>
 242.858 +        November 22nd, 2006
 242.859 +      </h3>
 242.860 +      <p>
 242.861 +        The <strong>server configuration</strong> is now updated to reflect the 
 242.862 +        changes from linking virtual hosts to a master control directory.
 242.863 +      </p>
 242.864 +      <p>
 242.865 +        <br />
 242.866 +      </p>
 242.867 +    </div>
 242.868 +    <div class="box">
 242.869 +      <h3>
 242.870 +        November 21st, 2006
 242.871 +      </h3>
 242.872 +      <p>
 242.873 +        After a great deal of experimenting, I figured out the <strong>best 
 242.874 +        method</strong> for linking everything in a way that will both work and 
 242.875 +        be easy to update.&nbsp; It took all day to implement, but now common 
 242.876 +        address requests can easily be linked to the proper corresponding 
 242.877 +        resources.
 242.878 +      </p>
 242.879 +      <p>
 242.880 +        <br />
 242.881 +      </p>
 242.882 +    </div>
 242.883 +    <div class="box">
 242.884 +      <h3>
 242.885 +        November 20th, 2006
 242.886 +      </h3>
 242.887 +      <p>
 242.888 +        I was having difficulty managing all the virtual hosts that define the 
 242.889 +        interconnected sections of the interos site layout.&nbsp; Then I had 
 242.890 +        the idea to implement a <strong>master control directory</strong>.
 242.891 +      </p>
 242.892 +      <p>
 242.893 +        <br />
 242.894 +      </p>
 242.895 +    </div>
 242.896 +    <div class="box">
 242.897 +      <h3>
 242.898 +        November 19th, 2006
 242.899 +      </h3>
 242.900 +      <p>
 242.901 +        Last night I mapped out a <strong>logical web filesystem 
 242.902 +        layout</strong> to coincide with the aforementioned easy web 
 242.903 +        addresses.&nbsp; I still have some more time today, so I have some odds 
 242.904 +        and ends in mind to spend it working on.&nbsp; The sooner I get them 
 242.905 +        out of the way, the sooner I can get to posting the exciting stuff.
 242.906 +      </p>
 242.907 +      <p>
 242.908 +        <br />
 242.909 +      </p>
 242.910 +    </div>
 242.911 +    <div class="box">
 242.912 +      <h3>
 242.913 +        November 18th, 2006
 242.914 +      </h3>
 242.915 +      <p>
 242.916 +        Today was various updates to site content, including a link to what an 
 242.917 +        <strong><a 
 242.918 +        href="http://en.wikipedia.org/wiki/Internet_Operating_Systems">internet 
 242.919 +        operating system</a></strong> is.
 242.920 +      </p>
 242.921 +      <p>
 242.922 +        <br />
 242.923 +      </p>
 242.924 +    </div>
 242.925 +    <div class="box">
 242.926 +      <h3>
 242.927 +        November 17th, 2006
 242.928 +      </h3>
 242.929 +      <p>
 242.930 +        I've gone through and cleaned up most of the code, and I've established 
 242.931 +        a <strong>standard format</strong> for delivering site content.
 242.932 +      </p>
 242.933 +      <p>
 242.934 +        <br />
 242.935 +      </p>
 242.936 +    </div>
 242.937 +    <div class="box">
 242.938 +      <h3>
 242.939 +        November 16th, 2006
 242.940 +      </h3>
 242.941 +      <p>
 242.942 +        The new configuration is working well, and I've been able to implement 
 242.943 +        site-wide changes a lot faster.&nbsp; This is already leading to 
 242.944 +        cleaner code and a more <strong>consistent look and feel</strong>.
 242.945 +      </p>
 242.946 +      <p>
 242.947 +        <br />
 242.948 +      </p>
 242.949 +    </div>
 242.950 +    <div class="box">
 242.951 +      <h3>
 242.952 +        November 15th, 2006
 242.953 +      </h3>
 242.954 +      <p>
 242.955 +        I've now finished enough work on the local systems that I can get 
 242.956 +        started on <strong>rapid deployment</strong> of site content.
 242.957 +      </p>
 242.958 +      <p>
 242.959 +        <br />
 242.960 +      </p>
 242.961 +    </div>
 242.962 +    <div class="box">
 242.963 +      <h3>
 242.964 +        November 14th, 2006
 242.965 +      </h3>
 242.966 +      <p>
 242.967 +        Some changes to my <strong>development environment</strong> should make 
 242.968 +        my work a lot <strong>easier</strong> from now on.
 242.969 +      </p>
 242.970 +      <p>
 242.971 +        <br />
 242.972 +      </p>
 242.973 +    </div>
 242.974 +    <div class="box">
 242.975 +      <h3>
 242.976 +        November 13th, 2006
 242.977 +      </h3>
 242.978 +      <p>
 242.979 +        Today was yet more work on the local <strong>development and 
 242.980 +        testing</strong> servers.&nbsp; It's all coming along nicely, but it's 
 242.981 +        a fair amount of work to assemble a specific server software framework 
 242.982 +        on <strong>multiple platforms</strong> simultaneously.
 242.983 +      </p>
 242.984 +      <p>
 242.985 +        <br />
 242.986 +      </p>
 242.987 +    </div>
 242.988 +    <div class="box">
 242.989 +      <h3>
 242.990 +        November 12th, 2006
 242.991 +      </h3>
 242.992 +      <p>
 242.993 +        After running code through validators and making the appropriate 
 242.994 +        alterations, interos now uses only <strong>valid CSS</strong> for 
 242.995 +        maximum interoperability.
 242.996 +      </p>
 242.997 +      <p>
 242.998 +        <br />
 242.999 +      </p>
242.1000 +    </div>
242.1001 +    <div class="box">
242.1002 +      <h3>
242.1003 +        November 11th, 2006
242.1004 +      </h3>
242.1005 +      <p>
242.1006 +        After running code through validators and making the appropriate 
242.1007 +        alterations, interos now uses only <strong>valid XHTML</strong> for 
242.1008 +        maximum interoperability.
242.1009 +      </p>
242.1010 +      <p>
242.1011 +        <br />
242.1012 +      </p>
242.1013 +    </div>
242.1014 +    <div class="box">
242.1015 +      <h3>
242.1016 +        November 10th, 2006
242.1017 +      </h3>
242.1018 +      <p>
242.1019 +        Today I started work on new local development and testing servers to 
242.1020 +        speed up finalizing code for production and to serve as a 
242.1021 +        <strong>backup</strong>.&nbsp; interos uses only <strong>free</strong> 
242.1022 +        and <strong>open source</strong> software.
242.1023 +      </p>
242.1024 +      <p>
242.1025 +        <br />
242.1026 +      </p>
242.1027 +    </div>
242.1028 +    <div class="box">
242.1029 +      <h3>
242.1030 +        November 9th, 2006
242.1031 +      </h3>
242.1032 +      <p>
242.1033 +        interos is now set up to have <strong>easy web addresses</strong>.
242.1034 +      </p>
242.1035 +      <p>
242.1036 +        <br />
242.1037 +      </p>
242.1038 +    </div>
242.1039 +    <div class="box">
242.1040 +      <h3>
242.1041 +        November 8th, 2006
242.1042 +      </h3>
242.1043 +      <p>
242.1044 +        Today was a lot of <strong>correspondence</strong> regarding the design 
242.1045 +        goals of interos.
242.1046 +      </p>
242.1047 +      <p>
242.1048 +        <br />
242.1049 +      </p>
242.1050 +    </div>
242.1051 +    <div class="box">
242.1052 +      <h3>
242.1053 +        November 7th, 2006
242.1054 +      </h3>
242.1055 +      <p>
242.1056 +        I met with Hardik Shah today to discuss the <strong>integration of 
242.1057 +        code</strong> that he, Rajdeep Bhowmik, Andrew Paroski and Amol 
242.1058 +        Panchabhai have developed.
242.1059 +      </p>
242.1060 +      <p>
242.1061 +        <br />
242.1062 +      </p>
242.1063 +    </div>
242.1064 +    <div class="box">
242.1065 +      <h3>
242.1066 +        November 6th, 2006
242.1067 +      </h3>
242.1068 +      <p>
242.1069 +        I did a lot of work today to <strong>maximize accessibility and ease of 
242.1070 +        use</strong> of the forthcoming site content.&nbsp; I'm excited that 
242.1071 +        everything's going to work so nicely.
242.1072 +      </p>
242.1073 +      <p>
242.1074 +        <br />
242.1075 +      </p>
242.1076 +    </div>
242.1077 +    <div class="box">
242.1078 +      <h3>
242.1079 +        November 5th, 2006
242.1080 +      </h3>
242.1081 +      <p>
242.1082 +        Today was about taking care of miscellaneous odds and ends.&nbsp; There 
242.1083 +        were various tweaks to configuration files and a few alterations to 
242.1084 +        <strong>file permissions for security</strong> while I restructured 
242.1085 +        some file hierarchies.&nbsp; The served content directories are 
242.1086 +        starting to feel a great deal more <strong>organized and 
242.1087 +        logical</strong>.&nbsp; This will make <strong>content 
242.1088 +        management</strong> a lot easier.
242.1089 +      </p>
242.1090 +      <p>
242.1091 +        <br />
242.1092 +      </p>
242.1093 +    </div>
242.1094 +    <div class="box">
242.1095 +      <h3>
242.1096 +        November 4th, 2006
242.1097 +      </h3>
242.1098 +      <p>
242.1099 +        I took the time to set up some administrative <strong>e-mail</strong> 
242.1100 +        accounts on each domain.&nbsp; I also performed any necessary address 
242.1101 +        aliasing and/or forwarding. Now the sites have working 
242.1102 +        <a href="mailto:info@interos.org">contact</a> links.
242.1103 +      </p>
242.1104 +      <p>
242.1105 +        <br />
242.1106 +      </p>
242.1107 +    </div>
242.1108 +    <div class="box">
242.1109 +      <h3>
242.1110 +        November 3rd, 2006
242.1111 +      </h3>
242.1112 +      <p>
242.1113 +        The interos sites are <strong>now secured</strong> using a free 
242.1114 +        multi-domain SSL/TLS certificate thanks to 
242.1115 +        <a href="http://www.cacert.org/">CAcert.org</a> and 
242.1116 +        <a href="http://guillaume.romagny.free.fr/evaldo/csr.sh">this 
242.1117 +        script</a>.&nbsp; Our sites leverage the strength of the AES-256 
242.1118 +        encryption algorithm for securing user data and a 1024-bit RSA key for 
242.1119 +        <strong>maximum browser compatibility</strong>.&nbsp; The web server 
242.1120 +        configuration and directory structures for site content have been 
242.1121 +        modified accordingly.
242.1122 +      </p>
242.1123 +      <p>
242.1124 +        <br />
242.1125 +      </p>
242.1126 +    </div>
242.1127 +    <div class="box">
242.1128 +      <h3>
242.1129 +        November 2nd, 2006
242.1130 +      </h3>
242.1131 +      <p>
242.1132 +        I finished performing numerous <strong>optimizations</strong> to the 
242.1133 +        server system.&nbsp;  The physical server was rebooted and everything 
242.1134 +        seems to be <strong>humming away nicely</strong>. I have some further 
242.1135 +        optimizations in mind, but I'll look into those some other time when 
242.1136 +        there isn't quite so much to be done!
242.1137 +      </p>
242.1138 +      <p>
242.1139 +        <br />
242.1140 +      </p>
242.1141 +    </div>
242.1142 +    <div class="box">
242.1143 +      <h3>
242.1144 +        November 1st, 2006
242.1145 +      </h3>
242.1146 +      <p>
242.1147 +        The <strong>interos server is online</strong> and the 
242.1148 +        <a href="http://interos.org/">interos.org</a> and 
242.1149 +        <a href="http://www.interos.com/">interos.com</a> domain names have 
242.1150 +        been associated with it.
242.1151 +      </p>
242.1152 +      <p>
242.1153 +        I've begun populating the sites with some <strong>rough skeletal 
242.1154 +        content</strong> in order to test the web server configuration.&nbsp; 
242.1155 +        This skeletal content also acts as a foundation for the content I 
242.1156 +        ultimately intend for these sites to contain.&nbsp; In addition, I've 
242.1157 +        started this <strong>daily blog</strong> as a continuing record of the 
242.1158 +        progress I've made and the goals that follow.
242.1159 +      </p>
242.1160 +      <p>
242.1161 +        For a description of interos and its history so far, see the 
242.1162 +        <a href="/about">about</a> section as content is added to it.
242.1163 +      </p>
242.1164 +      <p>
242.1165 +        <br />
242.1166 +      </p>
242.1167 +    </div>
242.1168 +    <center>
242.1169 +      <p id="copyrightDates">
242.1170 +        &copy; 2001&#8211;2009 interos
242.1171 +      </p>
242.1172 +    </center>
242.1173 +  </body>
242.1174 +  <!--=====================================================================-->
242.1175 +  <!--                  Copyright and Trademark Statement                  -->
242.1176 +  <!--=====================================================================-->
242.1177 +  <!--                                                                     -->
242.1178 +  <!--          All original textual and graphical site content:           -->
242.1179 +  <!--                                                                     -->
242.1180 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
242.1181 +  <!--  reserved.  Reproduction in whole or in part without written        -->
242.1182 +  <!--  permission is prohibited.  interos and the interos logos are       -->
242.1183 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
242.1184 +  <!--  product, and service names mentioned herein may be the properties  -->
242.1185 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
242.1186 +  <!--  are the properties of their respective authors.  All software      -->
242.1187 +  <!--  developed in the forums is open source and belongs to everyone.    -->
242.1188 +  <!--                                                                     -->
242.1189 +  <!--=====================================================================-->
242.1190 +  <!--                      e-mail: info@interos.org                       -->
242.1191 +  <!--=====================================================================-->
242.1192 +</html>
   243.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   243.2 +++ b/xhtml/page/blog_interos.org_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   243.3 @@ -0,0 +1,1189 @@
   243.4 +<?xml version="1.0" encoding="utf-8"?>
   243.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   243.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   243.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   243.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   243.9 +  <!--=================================================-->
  243.10 +  <!--    interos Standard Document Header - Markup    -->
  243.11 +  <!--=================================================-->
  243.12 +  <!--    URIs:  https://interos.org/blog              -->
  243.13 +  <!--           https://blog.interos.org/             -->
  243.14 +  <!--           https://www.interos.org/blog          -->
  243.15 +  <!--   Title:  interos blog                          -->
  243.16 +  <!--  Author:  Brent Angeline                        -->
  243.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  243.18 +  <!--=================================================-->
  243.19 +  <head>
  243.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  243.21 +    <meta name="title" content="interos blog" />
  243.22 +    <meta name="description" content="web log for interos" />
  243.23 +    <meta name="author" content="Brent Angeline" />
  243.24 +    <meta name="copyright" 
  243.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  243.26 +    <meta name="robots" content="index, follow, archive" />
  243.27 +    <title>interos blog</title>
  243.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  243.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  243.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  243.31 +          media="screen, projection" />
  243.32 +  </head>
  243.33 +  <body id="body">
  243.34 +    <center>
  243.35 +      <p id="navigation">
  243.36 +        <a href="/about">about</a> | 
  243.37 +        blog | 
  243.38 +        <a href="/code">code</a> | 
  243.39 +        <a href="/forums">develop</a> | 
  243.40 +        <a href="/e-mail">e-mail</a> | 
  243.41 +        <a href="/faq">f.a.q.</a> | 
  243.42 +        <a href="/gear">gear</a> | 
  243.43 +        <a href="https://interos.org/">home</a>
  243.44 +      </p>
  243.45 +      <table id="titlePanel">
  243.46 +        <thead>
  243.47 +          <tr>
  243.48 +            <th><center>
  243.49 +                  <h1>
  243.50 +                    <a href="https://blog.interos.org/">interos blog</a>
  243.51 +                  </h1>
  243.52 +                  <h2>
  243.53 +                    by Brent Angeline
  243.54 +                  </h2>
  243.55 +                </center></th>
  243.56 +          </tr>
  243.57 +        </thead>
  243.58 +        <tbody>
  243.59 +          <tr>
  243.60 +            <td><br /></td>
  243.61 +          </tr>
  243.62 +        </tbody>
  243.63 +      </table>
  243.64 +    </center>
  243.65 +    <div class="box">
  243.66 +      <h3>
  243.67 +        Current Status
  243.68 +      </h3>
  243.69 +      <p>
  243.70 +        interos is presently undergoing some big and exciting changes!&nbsp; 
  243.71 +        I'll bring the blog up to date and fill in all the details of the past 
  243.72 +        weeks' work as soon as this wave of development is complete.
  243.73 +      </p>
  243.74 +      <p>
  243.75 +        <br />
  243.76 +      </p>
  243.77 +    </div>
  243.78 +    <div class="box">
  243.79 +      <h3>
  243.80 +        January 19th, 2007
  243.81 +      </h3>
  243.82 +      <p>
  243.83 +        Today I brought the blog up to date.&nbsp; I'll continue keeping daily 
  243.84 +        log entries as I work, and I'll update them here online roughly weekly. 
  243.85 +      </p>
  243.86 +      <p>
  243.87 +        Work on Javascript continues. .&nbsp;.&nbsp;.
  243.88 +      </p>
  243.89 +      <p>
  243.90 +        <br />
  243.91 +      </p>
  243.92 +    </div>
  243.93 +    <div class="box">
  243.94 +      <h3>
  243.95 +        January 18th, 2007
  243.96 +      </h3>
  243.97 +      <p>
  243.98 +        Today was more compositing code and all the additional alterations that 
  243.99 +        come with it.
 243.100 +      </p>
 243.101 +      <p>
 243.102 +        <br />
 243.103 +      </p>
 243.104 +    </div>
 243.105 +    <div class="box">
 243.106 +      <h3>
 243.107 +        January 17th, 2007
 243.108 +      </h3>
 243.109 +      <p>
 243.110 +        I began compositing code from my prior experiments with variations on 
 243.111 +        style into the current JavaScript.
 243.112 +      </p>
 243.113 +      <p>
 243.114 +        <br />
 243.115 +      </p>
 243.116 +    </div>
 243.117 +    <div class="box">
 243.118 +      <h3>
 243.119 +        January 16th, 2007
 243.120 +      </h3>
 243.121 +      <p>
 243.122 +        A few slight changes to each file were necessary to further 
 243.123 +        cross-browser consistency when rendering some of the more advanced 
 243.124 +        styling and positioning elements.&nbsp; After encountering these visual 
 243.125 +        inconsistencies during testing and subsequently resolving them, the 
 243.126 +        central elements of the page are approaching visual completion as 
 243.127 +        development of the page's JavaScript continues to progress.
 243.128 +      </p>
 243.129 +      <p>
 243.130 +        <br />
 243.131 +      </p>
 243.132 +    </div>
 243.133 +    <div class="box">
 243.134 +      <h3>
 243.135 +        January 15th, 2007
 243.136 +      </h3>
 243.137 +      <p>
 243.138 +        Now that I have some visual feedback from the code to work with, I 
 243.139 +        experimented with a few variations on its appearance and decided on a 
 243.140 +        combination of stylistic elements to employ in an effort to maximize 
 243.141 +        aesthetics, readability, and interface compactness for mobile devices.
 243.142 +      </p>
 243.143 +      <p>
 243.144 +        <br />
 243.145 +      </p>
 243.146 +    </div>
 243.147 +    <div class="box">
 243.148 +      <h3>
 243.149 +        January 14th, 2007
 243.150 +      </h3>
 243.151 +      <p>
 243.152 +        The page is improving visually and with consistent behavior across 
 243.153 +        browsers, but there's still more work to be done.
 243.154 +      </p>
 243.155 +      <p>
 243.156 +        <br />
 243.157 +      </p>
 243.158 +    </div>
 243.159 +    <div class="box">
 243.160 +      <h3>
 243.161 +        January 13th, 2007
 243.162 +      </h3>
 243.163 +      <p>
 243.164 +        Today was more dynamic element positioning in JavaScript.
 243.165 +      </p>
 243.166 +      <p>
 243.167 +        <br />
 243.168 +      </p>
 243.169 +    </div>
 243.170 +    <div class="box">
 243.171 +      <h3>
 243.172 +        January 12th, 2007
 243.173 +      </h3>
 243.174 +      <p>
 243.175 +        Work on JavaScript continues.&nbsp; Dynamic element positioning is 
 243.176 +        coming along nicely.
 243.177 +      </p>
 243.178 +      <p>
 243.179 +        <br />
 243.180 +      </p>
 243.181 +    </div>
 243.182 +    <div class="box">
 243.183 +      <h3>
 243.184 +        January 11th, 2007
 243.185 +      </h3>
 243.186 +      <p>
 243.187 +        I had to make some additional tweaks to the XHTML and its style sheet 
 243.188 +        for better interoperability with the JavaScript as it develops 
 243.189 +        further.&nbsp; Both the XHTML and JavaScript have been developed to be 
 243.190 +        compatible with serving the XHTML as multiple MIME types.&nbsp; I'll 
 243.191 +        have to make a few alterations to the server configuration in order to 
 243.192 +        implement content negotiation.&nbsp; This way the page will be served 
 243.193 +        as the MIME type that is best-suited for the current user's browser.
 243.194 +      </p>
 243.195 +      <p>
 243.196 +        <br />
 243.197 +      </p>
 243.198 +    </div>
 243.199 +    <div class="box">
 243.200 +      <h3>
 243.201 +        January 10th, 2007
 243.202 +      </h3>
 243.203 +      <p>
 243.204 +        The style sheet now validates without any warnings.&nbsp; This gives 
 243.205 +        us: the back-end, the XHTML, and the cascading style sheet.&nbsp; Now 
 243.206 +        it's time to begin adding the final component of this page: the 
 243.207 +        JavaScript.
 243.208 +      </p>
 243.209 +      <p>
 243.210 +        Once JavaScript is finished for this page, I will have all the 
 243.211 +        components necessary for a complete, working, and polished user-driven 
 243.212 +        system module.&nbsp; It will set the standard for the other pages that 
 243.213 +        also act as functional modules, and I should be able to take the new 
 243.214 +        techniques employed and apply them throughout the site fairly quickly, 
 243.215 +        since most pages aren't as complex as the current module.
 243.216 +      </p>
 243.217 +      <p>
 243.218 +        <br />
 243.219 +      </p>
 243.220 +    </div>
 243.221 +    <div class="box">
 243.222 +      <h3>
 243.223 +        January 9th, 2007
 243.224 +      </h3>
 243.225 +      <p>
 243.226 +        I've applied all the needed styling to elements of one of the more 
 243.227 +        complex pages.&nbsp; It validates with no errors, but there are some 
 243.228 +        warnings.&nbsp; I'll have to see about working those out tomorrow. 
 243.229 +      </p>
 243.230 +      <p>
 243.231 +        <br />
 243.232 +      </p>
 243.233 +    </div>
 243.234 +    <div class="box">
 243.235 +      <h3>
 243.236 +        January 8th, 2007
 243.237 +      </h3>
 243.238 +      <p>
 243.239 +        I'm thrilled to say that my new approach was right on the money!&nbsp; 
 243.240 +        Elements in the structural hierarchy of the page's code now translate 
 243.241 +        to making full visual sense as well.&nbsp; And after a few tweaks, it's 
 243.242 +        looking like page visual renderings will shape up to being more or less 
 243.243 +        pixel-perfect reproductions from one browser to the next in its class.
 243.244 +      </p>
 243.245 +      <p>
 243.246 +        <br />
 243.247 +      </p>
 243.248 +    </div>
 243.249 +    <div class="box">
 243.250 +      <h3>
 243.251 +        January 7th, 2007
 243.252 +      </h3>
 243.253 +      <p>
 243.254 +        I spent the day experimenting with different approaches to developing a 
 243.255 +        cross-browser style that could be implemented across all interos site 
 243.256 +        content.&nbsp; I was met with varying degrees of success in each 
 243.257 +        attempted implementation, but I think I'm starting to see some common 
 243.258 +        threads.&nbsp; In the end, I wound up completely scrapping all the 
 243.259 +        style work I'd put together today.&nbsp; But all is not lost, as I've 
 243.260 +        learned a great deal from my experiments, and they're already giving me 
 243.261 +        some ideas.&nbsp; I'm confident that after some rest, I can get a fresh 
 243.262 +        start tomorrow on taking what I've learned and applying it to the new 
 243.263 +        approach I'm beginning to formulate.
 243.264 +      </p>
 243.265 +      <p>
 243.266 +        <br />
 243.267 +      </p>
 243.268 +    </div>
 243.269 +    <div class="box">
 243.270 +      <h3>
 243.271 +        January 6th, 2007
 243.272 +      </h3>
 243.273 +      <p>
 243.274 +        Today I took care of some correspondence toward getting more 
 243.275 +        development underway on web applications that integrate with the 
 243.276 +        interos platform.&nbsp; I have some exciting prospects.&nbsp; I also 
 243.277 +        spent some time bringing the blog up to date, and work will continue 
 243.278 +        into the night with a concentration on getting this style sheet mess 
 243.279 +        sorted out once and for all!
 243.280 +      </p>
 243.281 +      <p>
 243.282 +        <br />
 243.283 +      </p>
 243.284 +    </div>
 243.285 +    <div class="box">
 243.286 +      <h3>
 243.287 +        January 5th, 2007
 243.288 +      </h3>
 243.289 +      <p>
 243.290 +        Today I made a series of minor changes to each page on the site.&nbsp; 
 243.291 +        It was time-consuming but necessary, and I'm glad it's out of the way 
 243.292 +        now.
 243.293 +      </p>
 243.294 +      <p>
 243.295 +        <br />
 243.296 +      </p>
 243.297 +    </div>
 243.298 +    <div class="box">
 243.299 +      <h3>
 243.300 +        January 4th, 2007
 243.301 +      </h3>
 243.302 +      <p>
 243.303 +        Master control directory linking of style sheets continues.
 243.304 +      </p>
 243.305 +      <p>
 243.306 +        <br />
 243.307 +      </p>
 243.308 +    </div>
 243.309 +    <div class="box">
 243.310 +      <h3>
 243.311 +        January 3rd, 2007
 243.312 +      </h3>
 243.313 +      <p>
 243.314 +        I created a few of the new style sheets and began making link entries 
 243.315 +        in the master control directory.
 243.316 +      </p>
 243.317 +      <p>
 243.318 +        <br />
 243.319 +      </p>
 243.320 +    </div>
 243.321 +    <div class="box">
 243.322 +      <h3>
 243.323 +        January 2nd, 2007
 243.324 +      </h3>
 243.325 +      <p>
 243.326 +        I began organizing style sheet elements into categories: elements to be 
 243.327 +        applied globally across all pages containted on the site, elements to 
 243.328 +        be applied only under certain circumstances, and elements to be applied 
 243.329 +        by default in the absence of predefined circumstance.
 243.330 +      </p>
 243.331 +      <p>
 243.332 +        <br />
 243.333 +      </p>
 243.334 +    </div>
 243.335 +    <div class="box">
 243.336 +      <h3>
 243.337 +        January 1st, 2007
 243.338 +      </h3>
 243.339 +      <p>
 243.340 +        <strong>Happy New Year</strong> from <strong>interos</strong>!
 243.341 +      </p>
 243.342 +      <p>
 243.343 +        <br />
 243.344 +      </p>
 243.345 +    </div>
 243.346 +    <div class="box">
 243.347 +      <h3>
 243.348 +        December 31st, 2006
 243.349 +      </h3>
 243.350 +      <p>
 243.351 +        2006 closes with the United States and international publications of 
 243.352 +        the interos patent applications, interos code running properly on a 
 243.353 +        genuine web server, and a public demo of interos well on its way.&nbsp; 
 243.354 +        It was a big year for the fledgling interos project, and here's hoping 
 243.355 +        that 2007 is even bigger!
 243.356 +      </p>
 243.357 +      <p>
 243.358 +        <br />
 243.359 +      </p>
 243.360 +    </div>
 243.361 +    <div class="box">
 243.362 +      <h3>
 243.363 +        December 30th, 2006
 243.364 +      </h3>
 243.365 +      <p>
 243.366 +        I've had a look at the style sheet situation, and I've gotten a feel 
 243.367 +        for how styling would best be implemented across the sites.&nbsp; 
 243.368 +        Structurally, it's a complete overhaul&mdash;but I have done a number 
 243.369 +        of things correctly already, so I should be able to integrate my 
 243.370 +        existing work into the new paradigm fairly quickly once restructuring 
 243.371 +        is completed.
 243.372 +      </p>
 243.373 +      <p>
 243.374 +        <br />
 243.375 +      </p>
 243.376 +    </div>
 243.377 +    <div class="box">
 243.378 +      <h3>
 243.379 +        December 29th, 2006
 243.380 +      </h3>
 243.381 +      <p>
 243.382 +        I finished the changes, and the core modules to the operating 
 243.383 +        environment are now working just fine with the new server 
 243.384 +        configuration.&nbsp; Some style sheet work needs to be done in order 
 243.385 +        for everything to make visual sense, but after that's completed and a 
 243.386 +        few tweaks are made here and there, I should have something that I'm 
 243.387 +        willing to link to from the demo page.
 243.388 +      </p>
 243.389 +      <p>
 243.390 +        <br />
 243.391 +      </p>
 243.392 +    </div>
 243.393 +    <div class="box">
 243.394 +      <h3>
 243.395 +        December 28th, 2006
 243.396 +      </h3>
 243.397 +      <p>
 243.398 +        I'm just about done with applying the required modifications to all of 
 243.399 +        the modules of the system.
 243.400 +      </p>
 243.401 +      <p>
 243.402 +        <br />
 243.403 +      </p>
 243.404 +    </div>
 243.405 +    <div class="box">
 243.406 +      <h3>
 243.407 +        December 27th, 2006
 243.408 +      </h3>
 243.409 +      <p>
 243.410 +        I'm about half of the way through making necessary changes to system 
 243.411 +        modules.&nbsp; Further work on it will continue tomorrow.
 243.412 +      </p>
 243.413 +      <p>
 243.414 +        <br />
 243.415 +      </p>
 243.416 +    </div>
 243.417 +    <div class="box">
 243.418 +      <h3>
 243.419 +        December 26th, 2006
 243.420 +      </h3>
 243.421 +      <p>
 243.422 +        I finished modifications to the next system module.&nbsp; I'll start on 
 243.423 +        the others tomorrow.
 243.424 +      </p>
 243.425 +      <p>
 243.426 +        <br />
 243.427 +      </p>
 243.428 +    </div>
 243.429 +    <div class="box">
 243.430 +      <h3>
 243.431 +        December 25th, 2006
 243.432 +      </h3>
 243.433 +      <p>
 243.434 +        <strong>Merry Christmas</strong> from <strong>interos</strong>!
 243.435 +      </p>
 243.436 +      <p>
 243.437 +        <br />
 243.438 +      </p>
 243.439 +    </div>
 243.440 +    <div class="box">
 243.441 +      <h3>
 243.442 +        December 24th, 2006
 243.443 +      </h3>
 243.444 +      <p>
 243.445 +        With the holiday and all that comes with it, I only got the chance to 
 243.446 +        start making changes to one of the other system modules.&nbsp; I'll be 
 243.447 +        right back at it soon.
 243.448 +      </p>
 243.449 +      <p>
 243.450 +        <br />
 243.451 +      </p>
 243.452 +    </div>
 243.453 +    <div class="box">
 243.454 +      <h3>
 243.455 +        December 23rd, 2006
 243.456 +      </h3>
 243.457 +      <p>
 243.458 +        I completed modifications to the first back-end system module.&nbsp; 
 243.459 +        After some testing and a couple quick changes, it's working just 
 243.460 +        great!&nbsp; So I'm going to go ahead and start applying these changes 
 243.461 +        to the other system modules.
 243.462 +      </p>
 243.463 +      <p>
 243.464 +        <br />
 243.465 +      </p>
 243.466 +    </div>
 243.467 +    <div class="box">
 243.468 +      <h3>
 243.469 +        December 22nd, 2006
 243.470 +      </h3>
 243.471 +      <p>
 243.472 +        Today I began extensive modifications to the interos environment 
 243.473 +        back-end to get it working with the new server configuration.&nbsp; 
 243.474 +        Changes were made to reflect the new directory hierarchy from when the 
 243.475 +        master control directory was implemented.&nbsp; Memory allocation 
 243.476 +        routines needed to be altered as well.
 243.477 +      </p>
 243.478 +      <p>
 243.479 +        <br />
 243.480 +      </p>
 243.481 +    </div>
 243.482 +    <div class="box">
 243.483 +      <h3>
 243.484 +        December 21st, 2006
 243.485 +      </h3>
 243.486 +      <p>
 243.487 +        I finished the changes to interos environment XHTML and started 
 243.488 +        applying them to the back-end modules.&nbsp; The first module is 
 243.489 +        outputting the new XHTML properly, but it appears the back-end needs 
 243.490 +        some additional alterations in order to work with the new server 
 243.491 +        configuration.
 243.492 +      </p>
 243.493 +      <p>
 243.494 +        <br />
 243.495 +      </p>
 243.496 +    </div>
 243.497 +    <div class="box">
 243.498 +      <h3>
 243.499 +        December 20th, 2006
 243.500 +      </h3>
 243.501 +      <p>
 243.502 +        The XHTML is starting to shape up as I'd intended.&nbsp; I should be 
 243.503 +        finished with it tomorrow so I can begin applying this new XHTML format 
 243.504 +        to the back-end.
 243.505 +      </p>
 243.506 +      <p>
 243.507 +        <br />
 243.508 +      </p>
 243.509 +    </div>
 243.510 +    <div class="box">
 243.511 +      <h3>
 243.512 +        December 19th, 2006
 243.513 +      </h3>
 243.514 +      <p>
 243.515 +        Today I began some necessary alterations to the XHTML that describes 
 243.516 +        the interos user environment.&nbsp; Once I finish the changes, I can 
 243.517 +        apply them to the back-end so that it dynamically outputs the user 
 243.518 +        environment in the proper format.
 243.519 +      </p>
 243.520 +      <p>
 243.521 +        <br />
 243.522 +      </p>
 243.523 +    </div>
 243.524 +    <div class="box">
 243.525 +      <h3>
 243.526 +        December 18th, 2006
 243.527 +      </h3>
 243.528 +      <p>
 243.529 +        My birthday today was marked with the international publication of the 
 243.530 +        patent application for interos.&nbsp; The United States patent 
 243.531 +        application was published on November 29th.
 243.532 +      </p>
 243.533 +      <p>
 243.534 +        <br />
 243.535 +      </p>
 243.536 +    </div>
 243.537 +    <div class="box">
 243.538 +      <h3>
 243.539 +        December 17th, 2006
 243.540 +      </h3>
 243.541 +      <p>
 243.542 +        The back-end for logging in is now working.&nbsp; Next up is getting 
 243.543 +        the code for the interos environment working.
 243.544 +      </p>
 243.545 +      <p>
 243.546 +        <br />
 243.547 +      </p>
 243.548 +    </div>
 243.549 +    <div class="box">
 243.550 +      <h3>
 243.551 +        December 16th, 2006
 243.552 +      </h3>
 243.553 +      <p>
 243.554 +        The code for the easy login back-end requires some additional changes 
 243.555 +        in order to work with the new server configuration.&nbsp; I should be 
 243.556 +        able to have them implemented by some point tomorrow.
 243.557 +      </p>
 243.558 +      <p>
 243.559 +        <br />
 243.560 +      </p>
 243.561 +    </div>
 243.562 +    <div class="box">
 243.563 +      <h3>
 243.564 +        December 15th, 2006
 243.565 +      </h3>
 243.566 +      <p>
 243.567 +        I finished interlinking the pages of the site to form a new and larger 
 243.568 +        skeletal site structure.&nbsp; It's mostly just placeholder pages that 
 243.569 +        are light on content, but that's the part that comes next.&nbsp; What 
 243.570 +        I <em>have</em> done is made sure that <strong>things have a place to 
 243.571 +        go</strong>.&nbsp; Beefing up content of these pages and adding a 
 243.572 +        public demo of interos are my next main areas of concentration.
 243.573 +      </p>
 243.574 +      <p>
 243.575 +        <br />
 243.576 +      </p>
 243.577 +    </div>
 243.578 +    <div class="box">
 243.579 +      <h3>
 243.580 +        December 14th, 2006
 243.581 +      </h3>
 243.582 +      <p>
 243.583 +        I finished the master control directory linking and started 
 243.584 +        interlinking the existing skeletal site content with the new expanded 
 243.585 +        material. 
 243.586 +      </p>
 243.587 +      <p>
 243.588 +        <br />
 243.589 +      </p>
 243.590 +    </div>
 243.591 +    <div class="box">
 243.592 +      <h3>
 243.593 +        December 13th, 2006
 243.594 +      </h3>
 243.595 +      <p>
 243.596 +        Today I did most of the necessary master control directory linking for 
 243.597 +        the expanded site content.
 243.598 +      </p>
 243.599 +      <p>
 243.600 +        <br />
 243.601 +      </p>
 243.602 +    </div>
 243.603 +    <div class="box">
 243.604 +      <h3>
 243.605 +        December 12th, 2006
 243.606 +      </h3>
 243.607 +      <p>
 243.608 +        I've gotten a lot of work done toward expanding the site.&nbsp; Changes 
 243.609 +        will start showing up as I start linking them together with current 
 243.610 +        site content.&nbsp; I also performed a great many web server 
 243.611 +        configuration tweaks to accommodate the expanded content and improve 
 243.612 +        site behavior.
 243.613 +      </p>
 243.614 +      <p>
 243.615 +        <br />
 243.616 +      </p>
 243.617 +    </div>
 243.618 +    <div class="box">
 243.619 +      <h3>
 243.620 +        December 11th, 2006
 243.621 +      </h3>
 243.622 +      <p>
 243.623 +        Today I brought the blog up to date!&nbsp; Now that that's done, I'm 
 243.624 +        going to go write more <strong>code</strong>. 
 243.625 +      </p>
 243.626 +      <p>
 243.627 +        <br />
 243.628 +      </p>
 243.629 +    </div>
 243.630 +    <div class="box">
 243.631 +      <h3>
 243.632 +        December 10th, 2006
 243.633 +      </h3>
 243.634 +      <p>
 243.635 +        I did some more work in configuring the web server to execute interos 
 243.636 +        back-end code.
 243.637 +      </p>
 243.638 +      <p>
 243.639 +        <br />
 243.640 +      </p>
 243.641 +    </div>
 243.642 +    <div class="box">
 243.643 +      <h3>
 243.644 +        December 9th, 2006
 243.645 +      </h3>
 243.646 +      <p>
 243.647 +        I had another meeting with intern Hardik V. Shah regarding 
 243.648 +        <strong>Java</strong> code integration.&nbsp; Everything seems to be 
 243.649 +        coming along well.
 243.650 +      </p>
 243.651 +      <p>
 243.652 +        <br />
 243.653 +      </p>
 243.654 +    </div>
 243.655 +    <div class="box">
 243.656 +      <h3>
 243.657 +        December 8th, 2006
 243.658 +      </h3>
 243.659 +      <p>
 243.660 +        Work on tying in the back-end continues...
 243.661 +      </p>
 243.662 +      <p>
 243.663 +        <br />
 243.664 +      </p>
 243.665 +    </div>
 243.666 +    <div class="box">
 243.667 +      <h3>
 243.668 +        December 7th, 2006
 243.669 +      </h3>
 243.670 +      <p>
 243.671 +        Today I continue work on back-end porting and testing.
 243.672 +      </p>
 243.673 +      <p>
 243.674 +        <br />
 243.675 +      </p>
 243.676 +    </div>
 243.677 +    <div class="box">
 243.678 +      <h3>
 243.679 +        December 6th, 2006
 243.680 +      </h3>
 243.681 +      <p>
 243.682 +        I started work porting the back-end to the server and modifying it to 
 243.683 +        output XHTML in the new format.
 243.684 +      </p>
 243.685 +      <p>
 243.686 +        <br />
 243.687 +      </p>
 243.688 +    </div>
 243.689 +    <div class="box">
 243.690 +      <h3>
 243.691 +        December 5th, 2006
 243.692 +      </h3>
 243.693 +      <p>
 243.694 +        The new login form is completed.&nbsp; I'm currently repeating the 
 243.695 +        process for the form for new users to create a login.&nbsp; I also 
 243.696 +        started work to interface both forms with the back-end.&nbsp; I 
 243.697 +        performed some additional code cleanup on various site pages as well.
 243.698 +      </p>
 243.699 +      <p>
 243.700 +        <br />
 243.701 +      </p>
 243.702 +    </div>
 243.703 +    <div class="box">
 243.704 +      <h3>
 243.705 +        December 4th, 2006
 243.706 +      </h3>
 243.707 +      <p>
 243.708 +        The first element necessary for the demo is the <strong>easy 
 243.709 +        login</strong>.&nbsp; I took the existing code I developed for this and 
 243.710 +        reimplemented it in the new standard format using one of the templates 
 243.711 +        I created.&nbsp; I also made some modifications to improve 
 243.712 +        accessibility.&nbsp; There's going to be a fair amount of this sort of 
 243.713 +        post over the next week or so as I apply this process to the code I've 
 243.714 +        developed for the other elements of the demo.
 243.715 +      </p>
 243.716 +      <p>
 243.717 +        <br />
 243.718 +      </p>
 243.719 +    </div>
 243.720 +    <div class="box">
 243.721 +      <h3>
 243.722 +        December 3rd, 2006
 243.723 +      </h3>
 243.724 +      <p>
 243.725 +        Today I started work on bringing the demo to the server.&nbsp; Once 
 243.726 +        enough of it is in place, it will be <strong>accessible</strong> from 
 243.727 +        the <a href="https://www.interos.com/demo">demo</a> section.
 243.728 +      </p>
 243.729 +      <p>
 243.730 +        <br />
 243.731 +      </p>
 243.732 +    </div>
 243.733 +    <div class="box">
 243.734 +      <h3>
 243.735 +        December 2nd, 2006
 243.736 +      </h3>
 243.737 +      <p>
 243.738 +        Tagging is now completed.&nbsp; I also started preparing the server for 
 243.739 +        the next sections I have planned.
 243.740 +      </p>
 243.741 +      <p>
 243.742 +        <br />
 243.743 +      </p>
 243.744 +    </div>
 243.745 +    <div class="box">
 243.746 +      <h3>
 243.747 +        December 1st, 2006
 243.748 +      </h3>
 243.749 +      <p>
 243.750 +        I finally finished getting the last of everything on the server 
 243.751 +        properly <strong>organized</strong>, and I've finished tagging most of 
 243.752 +        it as well.
 243.753 +      </p>
 243.754 +      <p>
 243.755 +        <br />
 243.756 +      </p>
 243.757 +    </div>
 243.758 +    <div class="box">
 243.759 +      <h3>
 243.760 +        November 30th, 2006
 243.761 +      </h3>
 243.762 +      <p>
 243.763 +        Site skeletal layout is <strong>firmly in place</strong>, and all areas 
 243.764 +        are <strong>well-defined</strong> parts of the overall 
 243.765 +        <strong>structure.</strong>&nbsp; It's now time to begin fleshing out 
 243.766 +        site content.
 243.767 +      </p>
 243.768 +      <p>
 243.769 +        <br />
 243.770 +      </p>
 243.771 +    </div>
 243.772 +    <div class="box">
 243.773 +      <h3>
 243.774 +        November 29th, 2006
 243.775 +      </h3>
 243.776 +      <p>
 243.777 +        I linked basic style sheets in a manner to maximize 
 243.778 +        <strong>efficiency</strong> and site <strong>consistency</strong>.
 243.779 +      </p>
 243.780 +      <p>
 243.781 +        <br />
 243.782 +      </p>
 243.783 +    </div>
 243.784 +    <div class="box">
 243.785 +      <h3>
 243.786 +        November 28th, 2006
 243.787 +      </h3>
 243.788 +      <p>
 243.789 +        The audit of existing XHTML continues with an emphasis on 
 243.790 +        <strong>semantic correctness</strong> in code. 
 243.791 +      </p>
 243.792 +      <p>
 243.793 +        <br />
 243.794 +      </p>
 243.795 +    </div>
 243.796 +    <div class="box">
 243.797 +      <h3>
 243.798 +        November 27th, 2006
 243.799 +      </h3>
 243.800 +      <p>
 243.801 +        The aforementioned templates further establish a standard format for 
 243.802 +        site content, so I started an audit of existing XHTML code by beginning 
 243.803 +        to apply the precedents set forth in said templates.&nbsp; This will 
 243.804 +        further maximize the <strong>compatibility</strong> and 
 243.805 +        <strong>accessibility</strong> of interos.
 243.806 +      </p>
 243.807 +      <p>
 243.808 +        <br />
 243.809 +      </p>
 243.810 +    </div>
 243.811 +    <div class="box">
 243.812 +      <h3>
 243.813 +        November 26th, 2006
 243.814 +      </h3>
 243.815 +      <p>
 243.816 +        I created some <strong>templates</strong> for the next wave of content.
 243.817 +      </p>
 243.818 +      <p>
 243.819 +        <br />
 243.820 +      </p>
 243.821 +    </div>
 243.822 +    <div class="box">
 243.823 +      <h3>
 243.824 +        November 25th, 2006
 243.825 +      </h3>
 243.826 +      <p>
 243.827 +        Today brings some site <strong>updates</strong> and a meeting.
 243.828 +      </p>
 243.829 +      <p>
 243.830 +        <br />
 243.831 +      </p>
 243.832 +    </div>
 243.833 +    <div class="box">
 243.834 +      <h3>
 243.835 +        November 24th, 2006
 243.836 +      </h3>
 243.837 +      <p>
 243.838 +        The <strong>master control directory</strong> is now 
 243.839 +        <strong>completed</strong>.
 243.840 +      </p>
 243.841 +      <p>
 243.842 +        <br />
 243.843 +      </p>
 243.844 +    </div>
 243.845 +    <div class="box">
 243.846 +      <h3>
 243.847 +        November 23rd, 2006
 243.848 +      </h3>
 243.849 +      <p>
 243.850 +        <strong>Happy Thanksgiving</strong> from <strong>interos</strong>!
 243.851 +      </p>
 243.852 +      <p>
 243.853 +        <br />
 243.854 +      </p>
 243.855 +    </div>
 243.856 +    <div class="box">
 243.857 +      <h3>
 243.858 +        November 22nd, 2006
 243.859 +      </h3>
 243.860 +      <p>
 243.861 +        The <strong>server configuration</strong> is now updated to reflect the 
 243.862 +        changes from linking virtual hosts to a master control directory.
 243.863 +      </p>
 243.864 +      <p>
 243.865 +        <br />
 243.866 +      </p>
 243.867 +    </div>
 243.868 +    <div class="box">
 243.869 +      <h3>
 243.870 +        November 21st, 2006
 243.871 +      </h3>
 243.872 +      <p>
 243.873 +        After a great deal of experimenting, I figured out the <strong>best 
 243.874 +        method</strong> for linking everything in a way that will both work and 
 243.875 +        be easy to update.&nbsp; It took all day to implement, but now common 
 243.876 +        address requests can easily be linked to the proper corresponding 
 243.877 +        resources.
 243.878 +      </p>
 243.879 +      <p>
 243.880 +        <br />
 243.881 +      </p>
 243.882 +    </div>
 243.883 +    <div class="box">
 243.884 +      <h3>
 243.885 +        November 20th, 2006
 243.886 +      </h3>
 243.887 +      <p>
 243.888 +        I was having difficulty managing all the virtual hosts that define the 
 243.889 +        interconnected sections of the interos site layout.&nbsp; Then I had 
 243.890 +        the idea to implement a <strong>master control directory</strong>.
 243.891 +      </p>
 243.892 +      <p>
 243.893 +        <br />
 243.894 +      </p>
 243.895 +    </div>
 243.896 +    <div class="box">
 243.897 +      <h3>
 243.898 +        November 19th, 2006
 243.899 +      </h3>
 243.900 +      <p>
 243.901 +        Last night I mapped out a <strong>logical web filesystem 
 243.902 +        layout</strong> to coincide with the aforementioned easy web 
 243.903 +        addresses.&nbsp; I still have some more time today, so I have some odds 
 243.904 +        and ends in mind to spend it working on.&nbsp; The sooner I get them 
 243.905 +        out of the way, the sooner I can get to posting the exciting stuff.
 243.906 +      </p>
 243.907 +      <p>
 243.908 +        <br />
 243.909 +      </p>
 243.910 +    </div>
 243.911 +    <div class="box">
 243.912 +      <h3>
 243.913 +        November 18th, 2006
 243.914 +      </h3>
 243.915 +      <p>
 243.916 +        Today was various updates to site content, including a link to what an 
 243.917 +        <strong><a 
 243.918 +        href="http://en.wikipedia.org/wiki/Internet_Operating_Systems">internet 
 243.919 +        operating system</a></strong> is.
 243.920 +      </p>
 243.921 +      <p>
 243.922 +        <br />
 243.923 +      </p>
 243.924 +    </div>
 243.925 +    <div class="box">
 243.926 +      <h3>
 243.927 +        November 17th, 2006
 243.928 +      </h3>
 243.929 +      <p>
 243.930 +        I've gone through and cleaned up most of the code, and I've established 
 243.931 +        a <strong>standard format</strong> for delivering site content.
 243.932 +      </p>
 243.933 +      <p>
 243.934 +        <br />
 243.935 +      </p>
 243.936 +    </div>
 243.937 +    <div class="box">
 243.938 +      <h3>
 243.939 +        November 16th, 2006
 243.940 +      </h3>
 243.941 +      <p>
 243.942 +        The new configuration is working well, and I've been able to implement 
 243.943 +        site-wide changes a lot faster.&nbsp; This is already leading to 
 243.944 +        cleaner code and a more <strong>consistent look and feel</strong>.
 243.945 +      </p>
 243.946 +      <p>
 243.947 +        <br />
 243.948 +      </p>
 243.949 +    </div>
 243.950 +    <div class="box">
 243.951 +      <h3>
 243.952 +        November 15th, 2006
 243.953 +      </h3>
 243.954 +      <p>
 243.955 +        I've now finished enough work on the local systems that I can get 
 243.956 +        started on <strong>rapid deployment</strong> of site content.
 243.957 +      </p>
 243.958 +      <p>
 243.959 +        <br />
 243.960 +      </p>
 243.961 +    </div>
 243.962 +    <div class="box">
 243.963 +      <h3>
 243.964 +        November 14th, 2006
 243.965 +      </h3>
 243.966 +      <p>
 243.967 +        Some changes to my <strong>development environment</strong> should make 
 243.968 +        my work a lot <strong>easier</strong> from now on.
 243.969 +      </p>
 243.970 +      <p>
 243.971 +        <br />
 243.972 +      </p>
 243.973 +    </div>
 243.974 +    <div class="box">
 243.975 +      <h3>
 243.976 +        November 13th, 2006
 243.977 +      </h3>
 243.978 +      <p>
 243.979 +        Today was yet more work on the local <strong>development and 
 243.980 +        testing</strong> servers.&nbsp; It's all coming along nicely, but it's 
 243.981 +        a fair amount of work to assemble a specific server software framework 
 243.982 +        on <strong>multiple platforms</strong> simultaneously.
 243.983 +      </p>
 243.984 +      <p>
 243.985 +        <br />
 243.986 +      </p>
 243.987 +    </div>
 243.988 +    <div class="box">
 243.989 +      <h3>
 243.990 +        November 12th, 2006
 243.991 +      </h3>
 243.992 +      <p>
 243.993 +        After running code through validators and making the appropriate 
 243.994 +        alterations, interos now uses only <strong>valid CSS</strong> for 
 243.995 +        maximum interoperability.
 243.996 +      </p>
 243.997 +      <p>
 243.998 +        <br />
 243.999 +      </p>
243.1000 +    </div>
243.1001 +    <div class="box">
243.1002 +      <h3>
243.1003 +        November 11th, 2006
243.1004 +      </h3>
243.1005 +      <p>
243.1006 +        After running code through validators and making the appropriate 
243.1007 +        alterations, interos now uses only <strong>valid XHTML</strong> for 
243.1008 +        maximum interoperability.
243.1009 +      </p>
243.1010 +      <p>
243.1011 +        <br />
243.1012 +      </p>
243.1013 +    </div>
243.1014 +    <div class="box">
243.1015 +      <h3>
243.1016 +        November 10th, 2006
243.1017 +      </h3>
243.1018 +      <p>
243.1019 +        Today I started work on new local development and testing servers to 
243.1020 +        speed up finalizing code for production and to serve as a 
243.1021 +        <strong>backup</strong>.&nbsp; interos uses only <strong>free</strong> 
243.1022 +        and <strong>open source</strong> software.
243.1023 +      </p>
243.1024 +      <p>
243.1025 +        <br />
243.1026 +      </p>
243.1027 +    </div>
243.1028 +    <div class="box">
243.1029 +      <h3>
243.1030 +        November 9th, 2006
243.1031 +      </h3>
243.1032 +      <p>
243.1033 +        interos is now set up to have <strong>easy web addresses</strong>.
243.1034 +      </p>
243.1035 +      <p>
243.1036 +        <br />
243.1037 +      </p>
243.1038 +    </div>
243.1039 +    <div class="box">
243.1040 +      <h3>
243.1041 +        November 8th, 2006
243.1042 +      </h3>
243.1043 +      <p>
243.1044 +        Today was a lot of <strong>correspondence</strong> regarding the design 
243.1045 +        goals of interos.
243.1046 +      </p>
243.1047 +      <p>
243.1048 +        <br />
243.1049 +      </p>
243.1050 +    </div>
243.1051 +    <div class="box">
243.1052 +      <h3>
243.1053 +        November 7th, 2006
243.1054 +      </h3>
243.1055 +      <p>
243.1056 +        I met with Hardik Shah today to discuss the <strong>integration of 
243.1057 +        code</strong> that he, Rajdeep Bhowmik, Andrew Paroski and Amol 
243.1058 +        Panchabhai have developed.
243.1059 +      </p>
243.1060 +      <p>
243.1061 +        <br />
243.1062 +      </p>
243.1063 +    </div>
243.1064 +    <div class="box">
243.1065 +      <h3>
243.1066 +        November 6th, 2006
243.1067 +      </h3>
243.1068 +      <p>
243.1069 +        I did a lot of work today to <strong>maximize accessibility and ease of 
243.1070 +        use</strong> of the forthcoming site content.&nbsp; I'm excited that 
243.1071 +        everything's going to work so nicely.
243.1072 +      </p>
243.1073 +      <p>
243.1074 +        <br />
243.1075 +      </p>
243.1076 +    </div>
243.1077 +    <div class="box">
243.1078 +      <h3>
243.1079 +        November 5th, 2006
243.1080 +      </h3>
243.1081 +      <p>
243.1082 +        Today was about taking care of miscellaneous odds and ends.&nbsp; There 
243.1083 +        were various tweaks to configuration files and a few alterations to 
243.1084 +        <strong>file permissions for security</strong> while I restructured 
243.1085 +        some file hierarchies.&nbsp; The served content directories are 
243.1086 +        starting to feel a great deal more <strong>organized and 
243.1087 +        logical</strong>.&nbsp; This will make <strong>content 
243.1088 +        management</strong> a lot easier.
243.1089 +      </p>
243.1090 +      <p>
243.1091 +        <br />
243.1092 +      </p>
243.1093 +    </div>
243.1094 +    <div class="box">
243.1095 +      <h3>
243.1096 +        November 4th, 2006
243.1097 +      </h3>
243.1098 +      <p>
243.1099 +        I took the time to set up some administrative <strong>e-mail</strong> 
243.1100 +        accounts on each domain.&nbsp; I also performed any necessary address 
243.1101 +        aliasing and/or forwarding. Now the sites have working 
243.1102 +        <a href="mailto:info@interos.org">contact</a> links.
243.1103 +      </p>
243.1104 +      <p>
243.1105 +        <br />
243.1106 +      </p>
243.1107 +    </div>
243.1108 +    <div class="box">
243.1109 +      <h3>
243.1110 +        November 3rd, 2006
243.1111 +      </h3>
243.1112 +      <p>
243.1113 +        The interos sites are <strong>now secured</strong> using a free 
243.1114 +        multi-domain SSL/TLS certificate thanks to 
243.1115 +        <a href="http://www.cacert.org/">CAcert.org</a> and 
243.1116 +        <a href="http://guillaume.romagny.free.fr/evaldo/csr.sh">this 
243.1117 +        script</a>.&nbsp; Our sites leverage the strength of the AES-256 
243.1118 +        encryption algorithm for securing user data and a 1024-bit RSA key for 
243.1119 +        <strong>maximum browser compatibility</strong>.&nbsp; The web server 
243.1120 +        configuration and directory structures for site content have been 
243.1121 +        modified accordingly.
243.1122 +      </p>
243.1123 +      <p>
243.1124 +        <br />
243.1125 +      </p>
243.1126 +    </div>
243.1127 +    <div class="box">
243.1128 +      <h3>
243.1129 +        November 2nd, 2006
243.1130 +      </h3>
243.1131 +      <p>
243.1132 +        I finished performing numerous <strong>optimizations</strong> to the 
243.1133 +        server system.&nbsp;  The physical server was rebooted and everything 
243.1134 +        seems to be <strong>humming away nicely</strong>. I have some further 
243.1135 +        optimizations in mind, but I'll look into those some other time when 
243.1136 +        there isn't quite so much to be done!
243.1137 +      </p>
243.1138 +      <p>
243.1139 +        <br />
243.1140 +      </p>
243.1141 +    </div>
243.1142 +    <div class="box">
243.1143 +      <h3>
243.1144 +        November 1st, 2006
243.1145 +      </h3>
243.1146 +      <p>
243.1147 +        The <strong>interos server is online</strong> and the 
243.1148 +        <a href="https://interos.org/">interos.org</a> and 
243.1149 +        <a href="https://www.interos.com/">interos.com</a> domain names have 
243.1150 +        been associated with it.
243.1151 +      </p>
243.1152 +      <p>
243.1153 +        I've begun populating the sites with some <strong>rough skeletal 
243.1154 +        content</strong> in order to test the web server configuration.&nbsp; 
243.1155 +        This skeletal content also acts as a foundation for the content I 
243.1156 +        ultimately intend for these sites to contain.&nbsp; In addition, I've 
243.1157 +        started this <strong>daily blog</strong> as a continuing record of the 
243.1158 +        progress I've made and the goals that follow.
243.1159 +      </p>
243.1160 +      <p>
243.1161 +        For a description of interos and its history so far, see the 
243.1162 +        <a href="/about">about</a> section as content is added to it.
243.1163 +      </p>
243.1164 +      <p>
243.1165 +        <br />
243.1166 +      </p>
243.1167 +    </div>
243.1168 +    <center>
243.1169 +      <p id="copyrightDates">
243.1170 +        &copy; 2001&#8211;2009 interos
243.1171 +      </p>
243.1172 +    </center>
243.1173 +  </body>
243.1174 +  <!--=====================================================================-->
243.1175 +  <!--                  Copyright and Trademark Statement                  -->
243.1176 +  <!--=====================================================================-->
243.1177 +  <!--                                                                     -->
243.1178 +  <!--          All original textual and graphical site content:           -->
243.1179 +  <!--                                                                     -->
243.1180 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
243.1181 +  <!--  reserved.  Reproduction in whole or in part without written        -->
243.1182 +  <!--  permission is prohibited.  interos and the interos logos are       -->
243.1183 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
243.1184 +  <!--  product, and service names mentioned herein may be the properties  -->
243.1185 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
243.1186 +  <!--  are the properties of their respective authors.  All software      -->
243.1187 +  <!--  developed in the forums is open source and belongs to everyone.    -->
243.1188 +  <!--                                                                     -->
243.1189 +  <!--=====================================================================-->
243.1190 +  <!--                      e-mail: info@interos.org                       -->
243.1191 +  <!--=====================================================================-->
243.1192 +</html>
   244.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   244.2 +++ b/xhtml/page/code_interos.com.xhtml	Sat May 01 16:19:36 2010 -0400
   244.3 @@ -0,0 +1,106 @@
   244.4 +<?xml version="1.0" encoding="utf-8"?>
   244.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   244.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   244.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   244.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   244.9 +  <!--=================================================-->
  244.10 +  <!--    interos Standard Document Header - Markup    -->
  244.11 +  <!--=================================================-->
  244.12 +  <!--    URIs:  http://interos.com/code               -->
  244.13 +  <!--           http://code.interos.com/              -->
  244.14 +  <!--           http://www.interos.com/code           -->
  244.15 +  <!--   Title:  interos code                          -->
  244.16 +  <!--  Author:  Brent Angeline                        -->
  244.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  244.18 +  <!--=================================================-->
  244.19 +  <head>
  244.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  244.21 +    <meta name="title" content="interos code" />
  244.22 +    <meta name="description" content="source code for interos" />
  244.23 +    <meta name="author" content="Brent Angeline" />
  244.24 +    <meta name="copyright" 
  244.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  244.26 +    <meta name="robots" content="index, follow, noarchive" />
  244.27 +    <title>interos code</title>
  244.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  244.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  244.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  244.31 +          media="screen, projection" />
  244.32 +    <script type="text/javascript" src="/js/default.js"></script>
  244.33 +  </head>
  244.34 +  <body id="body">
  244.35 +    <center>
  244.36 +      <p id="navigation">
  244.37 +        <a href="/about">about</a> | 
  244.38 +        <a href="/blog">blog</a> | 
  244.39 +        code | 
  244.40 +        <a href="/demo">demo</a> | 
  244.41 +        <a href="/e-mail">e-mail</a> | 
  244.42 +        <a href="/faq">f.a.q.</a> | 
  244.43 +        <a href="/gear">gear</a> | 
  244.44 +        <a href="http://www.interos.com/">home</a>
  244.45 +      </p>
  244.46 +      <table id="mainPanel">
  244.47 +        <thead>
  244.48 +          <tr>
  244.49 +            <th><center>
  244.50 +                  <h1>
  244.51 +                    <a href="http://code.interos.com/">interos code</a>
  244.52 +                  </h1>
  244.53 +                  <h2>
  244.54 +                    source code for interos
  244.55 +                  </h2>
  244.56 +                </center></th>
  244.57 +          </tr>
  244.58 +        </thead>
  244.59 +        <tfoot>
  244.60 +          <tr>
  244.61 +            <td><br /></td>
  244.62 +          </tr>
  244.63 +        </tfoot>
  244.64 +        <tbody>
  244.65 +          <tr>
  244.66 +            <td><p>
  244.67 +                  The thousands upon thousands of lines of source code 
  244.68 +                  underlying interos will be open-sourced under a Creative 
  244.69 +                  Commons license once the code is updated and packaged.
  244.70 +                </p>
  244.71 +                <p>
  244.72 +                  <strong>Developers:</strong> for information on how you can 
  244.73 +                  start developing free and open source applications for this 
  244.74 +                  free and open platform, please contact:
  244.75 +                </p>
  244.76 +                <center>
  244.77 +                  <p>
  244.78 +                    <strong>
  244.79 +                      <a href="mailto:info@interos.com">info@interos.com</a>
  244.80 +                    </strong>
  244.81 +                  </p>
  244.82 +                </center></td>
  244.83 +          </tr>
  244.84 +        </tbody>
  244.85 +      </table>
  244.86 +      <p id="copyrightDates">
  244.87 +        &copy; 2001&#8211;2009 interos
  244.88 +      </p>
  244.89 +    </center>
  244.90 +  </body>
  244.91 +  <!--=====================================================================-->
  244.92 +  <!--                  Copyright and Trademark Statement                  -->
  244.93 +  <!--=====================================================================-->
  244.94 +  <!--                                                                     -->
  244.95 +  <!--          All original textual and graphical site content:           -->
  244.96 +  <!--                                                                     -->
  244.97 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  244.98 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  244.99 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 244.100 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 244.101 +  <!--  product, and service names mentioned herein may be the properties  -->
 244.102 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 244.103 +  <!--  are the properties of their respective authors.  All software      -->
 244.104 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 244.105 +  <!--                                                                     -->
 244.106 +  <!--=====================================================================-->
 244.107 +  <!--                      e-mail: info@interos.com                       -->
 244.108 +  <!--=====================================================================-->
 244.109 +</html>
   245.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   245.2 +++ b/xhtml/page/code_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   245.3 @@ -0,0 +1,106 @@
   245.4 +<?xml version="1.0" encoding="utf-8"?>
   245.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   245.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   245.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   245.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   245.9 +  <!--=================================================-->
  245.10 +  <!--    interos Standard Document Header - Markup    -->
  245.11 +  <!--=================================================-->
  245.12 +  <!--    URIs:  https://interos.com/code              -->
  245.13 +  <!--           https://code.interos.com/             -->
  245.14 +  <!--           https://www.interos.com/code          -->
  245.15 +  <!--   Title:  interos code                          -->
  245.16 +  <!--  Author:  Brent Angeline                        -->
  245.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  245.18 +  <!--=================================================-->
  245.19 +  <head>
  245.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  245.21 +    <meta name="title" content="interos code" />
  245.22 +    <meta name="description" content="source code for interos" />
  245.23 +    <meta name="author" content="Brent Angeline" />
  245.24 +    <meta name="copyright" 
  245.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  245.26 +    <meta name="robots" content="index, follow, noarchive" />
  245.27 +    <title>interos code</title>
  245.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  245.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  245.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  245.31 +          media="screen, projection" />
  245.32 +    <script type="text/javascript" src="/js/default.js"></script>
  245.33 +  </head>
  245.34 +  <body id="body">
  245.35 +    <center>
  245.36 +      <p id="navigation">
  245.37 +        <a href="/about">about</a> | 
  245.38 +        <a href="/blog">blog</a> | 
  245.39 +        code | 
  245.40 +        <a href="/demo">demo</a> | 
  245.41 +        <a href="/e-mail">e-mail</a> | 
  245.42 +        <a href="/faq">f.a.q.</a> | 
  245.43 +        <a href="/gear">gear</a> | 
  245.44 +        <a href="https://www.interos.com/">home</a>
  245.45 +      </p>
  245.46 +      <table id="mainPanel">
  245.47 +        <thead>
  245.48 +          <tr>
  245.49 +            <th><center>
  245.50 +                  <h1>
  245.51 +                    <a href="https://code.interos.com/">interos code</a>
  245.52 +                  </h1>
  245.53 +                  <h2>
  245.54 +                    source code for interos
  245.55 +                  </h2>
  245.56 +                </center></th>
  245.57 +          </tr>
  245.58 +        </thead>
  245.59 +        <tfoot>
  245.60 +          <tr>
  245.61 +            <td><br /></td>
  245.62 +          </tr>
  245.63 +        </tfoot>
  245.64 +        <tbody>
  245.65 +          <tr>
  245.66 +            <td><p>
  245.67 +                  The thousands upon thousands of lines of source code 
  245.68 +                  underlying interos will be open-sourced under a Creative 
  245.69 +                  Commons license once the code is updated and packaged.
  245.70 +                </p>
  245.71 +                <p>
  245.72 +                  <strong>Developers:</strong> for information on how you can 
  245.73 +                  start developing free and open source applications for this 
  245.74 +                  free and open platform, please contact:
  245.75 +                </p>
  245.76 +                <center>
  245.77 +                  <p>
  245.78 +                    <strong>
  245.79 +                      <a href="mailto:info@interos.com">info@interos.com</a>
  245.80 +                    </strong>
  245.81 +                  </p>
  245.82 +                </center></td>
  245.83 +          </tr>
  245.84 +        </tbody>
  245.85 +      </table>
  245.86 +      <p id="copyrightDates">
  245.87 +        &copy; 2001&#8211;2009 interos
  245.88 +      </p>
  245.89 +    </center>
  245.90 +  </body>
  245.91 +  <!--=====================================================================-->
  245.92 +  <!--                  Copyright and Trademark Statement                  -->
  245.93 +  <!--=====================================================================-->
  245.94 +  <!--                                                                     -->
  245.95 +  <!--          All original textual and graphical site content:           -->
  245.96 +  <!--                                                                     -->
  245.97 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  245.98 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  245.99 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 245.100 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 245.101 +  <!--  product, and service names mentioned herein may be the properties  -->
 245.102 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 245.103 +  <!--  are the properties of their respective authors.  All software      -->
 245.104 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 245.105 +  <!--                                                                     -->
 245.106 +  <!--=====================================================================-->
 245.107 +  <!--                      e-mail: info@interos.com                       -->
 245.108 +  <!--=====================================================================-->
 245.109 +</html>
   246.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   246.2 +++ b/xhtml/page/code_interos.org.xhtml	Sat May 01 16:19:36 2010 -0400
   246.3 @@ -0,0 +1,106 @@
   246.4 +<?xml version="1.0" encoding="utf-8"?>
   246.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   246.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   246.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   246.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   246.9 +  <!--=================================================-->
  246.10 +  <!--    interos Standard Document Header - Markup    -->
  246.11 +  <!--=================================================-->
  246.12 +  <!--    URIs:  http://interos.org/code               -->
  246.13 +  <!--           http://code.interos.org/              -->
  246.14 +  <!--           http://www.interos.com/code           -->
  246.15 +  <!--   Title:  interos code                          -->
  246.16 +  <!--  Author:  Brent Angeline                        -->
  246.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  246.18 +  <!--=================================================-->
  246.19 +  <head>
  246.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  246.21 +    <meta name="title" content="interos code" />
  246.22 +    <meta name="description" content="source code for interos" />
  246.23 +    <meta name="author" content="Brent Angeline" />
  246.24 +    <meta name="copyright" 
  246.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  246.26 +    <meta name="robots" content="index, follow, noarchive" />
  246.27 +    <title>interos code</title>
  246.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  246.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  246.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  246.31 +          media="screen, projection" />
  246.32 +    <script type="text/javascript" src="/js/default.js"></script>
  246.33 +  </head>
  246.34 +  <body id="body">
  246.35 +    <center>
  246.36 +      <p id="navigation">
  246.37 +        <a href="/about">about</a> | 
  246.38 +        <a href="/blog">blog</a> | 
  246.39 +        code | 
  246.40 +        <a href="/forums">develop</a> | 
  246.41 +        <a href="/e-mail">e-mail</a> | 
  246.42 +        <a href="/faq">f.a.q.</a> | 
  246.43 +        <a href="/gear">gear</a> | 
  246.44 +        <a href="http://interos.org/">home</a>
  246.45 +      </p>
  246.46 +      <table id="mainPanel">
  246.47 +        <thead>
  246.48 +          <tr>
  246.49 +            <th><center>
  246.50 +                  <h1>
  246.51 +                    <a href="http://code.interos.org/">interos code</a>
  246.52 +                  </h1>
  246.53 +                  <h2>
  246.54 +                    source code for interos
  246.55 +                  </h2>
  246.56 +                </center></th>
  246.57 +          </tr>
  246.58 +        </thead>
  246.59 +        <tfoot>
  246.60 +          <tr>
  246.61 +            <td><br /></td>
  246.62 +          </tr>
  246.63 +        </tfoot>
  246.64 +        <tbody>
  246.65 +          <tr>
  246.66 +            <td><p>
  246.67 +                  The thousands upon thousands of lines of source code 
  246.68 +                  underlying interos will be open-sourced under a Creative 
  246.69 +                  Commons license once the code is updated and packaged.
  246.70 +                </p>
  246.71 +                <p>
  246.72 +                  <strong>Developers:</strong> for information on how you can 
  246.73 +                  start developing free and open source applications for this 
  246.74 +                  free and open platform, please contact:
  246.75 +                </p>
  246.76 +                <center>
  246.77 +                  <p>
  246.78 +                    <strong>
  246.79 +                      <a href="mailto:info@interos.org">info@interos.org</a>
  246.80 +                    </strong>
  246.81 +                  </p>
  246.82 +                </center></td>
  246.83 +          </tr>
  246.84 +        </tbody>
  246.85 +      </table>
  246.86 +      <p id="copyrightDates">
  246.87 +        &copy; 2001&#8211;2009 interos
  246.88 +      </p>
  246.89 +    </center>
  246.90 +  </body>
  246.91 +  <!--=====================================================================-->
  246.92 +  <!--                  Copyright and Trademark Statement                  -->
  246.93 +  <!--=====================================================================-->
  246.94 +  <!--                                                                     -->
  246.95 +  <!--          All original textual and graphical site content:           -->
  246.96 +  <!--                                                                     -->
  246.97 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  246.98 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  246.99 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 246.100 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 246.101 +  <!--  product, and service names mentioned herein may be the properties  -->
 246.102 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 246.103 +  <!--  are the properties of their respective authors.  All software      -->
 246.104 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 246.105 +  <!--                                                                     -->
 246.106 +  <!--=====================================================================-->
 246.107 +  <!--                      e-mail: info@interos.org                       -->
 246.108 +  <!--=====================================================================-->
 246.109 +</html>
   247.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   247.2 +++ b/xhtml/page/code_interos.org_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   247.3 @@ -0,0 +1,106 @@
   247.4 +<?xml version="1.0" encoding="utf-8"?>
   247.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   247.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   247.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   247.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   247.9 +  <!--=================================================-->
  247.10 +  <!--    interos Standard Document Header - Markup    -->
  247.11 +  <!--=================================================-->
  247.12 +  <!--    URIs:  https://interos.org/code              -->
  247.13 +  <!--           https://code.interos.org/             -->
  247.14 +  <!--           https://www.interos.org/code          -->
  247.15 +  <!--   Title:  interos code                          -->
  247.16 +  <!--  Author:  Brent Angeline                        -->
  247.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  247.18 +  <!--=================================================-->
  247.19 +  <head>
  247.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  247.21 +    <meta name="title" content="interos code" />
  247.22 +    <meta name="description" content="source code for interos" />
  247.23 +    <meta name="author" content="Brent Angeline" />
  247.24 +    <meta name="copyright" 
  247.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  247.26 +    <meta name="robots" content="index, follow, noarchive" />
  247.27 +    <title>interos code</title>
  247.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  247.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  247.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  247.31 +          media="screen, projection" />
  247.32 +    <script type="text/javascript" src="/js/default.js"></script>
  247.33 +  </head>
  247.34 +  <body id="body">
  247.35 +    <center>
  247.36 +      <p id="navigation">
  247.37 +        <a href="/about">about</a> | 
  247.38 +        <a href="/blog">blog</a> | 
  247.39 +        code | 
  247.40 +        <a href="/forums">develop</a> | 
  247.41 +        <a href="/e-mail">e-mail</a> | 
  247.42 +        <a href="/faq">f.a.q.</a> | 
  247.43 +        <a href="/gear">gear</a> | 
  247.44 +        <a href="https://interos.org/">home</a>
  247.45 +      </p>
  247.46 +      <table id="mainPanel">
  247.47 +        <thead>
  247.48 +          <tr>
  247.49 +            <th><center>
  247.50 +                  <h1>
  247.51 +                    <a href="https://code.interos.org/">interos code</a>
  247.52 +                  </h1>
  247.53 +                  <h2>
  247.54 +                    source code for interos
  247.55 +                  </h2>
  247.56 +                </center></th>
  247.57 +          </tr>
  247.58 +        </thead>
  247.59 +        <tfoot>
  247.60 +          <tr>
  247.61 +            <td><br /></td>
  247.62 +          </tr>
  247.63 +        </tfoot>
  247.64 +        <tbody>
  247.65 +          <tr>
  247.66 +            <td><p>
  247.67 +                  The thousands upon thousands of lines of source code 
  247.68 +                  underlying interos will be open-sourced under a Creative 
  247.69 +                  Commons license once the code is updated and packaged.
  247.70 +                </p>
  247.71 +                <p>
  247.72 +                  <strong>Developers:</strong> for information on how you can 
  247.73 +                  start developing free and open source applications for this 
  247.74 +                  free and open platform, please contact:
  247.75 +                </p>
  247.76 +                <center>
  247.77 +                  <p>
  247.78 +                    <strong>
  247.79 +                      <a href="mailto:info@interos.org">info@interos.org</a>
  247.80 +                    </strong>
  247.81 +                  </p>
  247.82 +                </center></td>
  247.83 +          </tr>
  247.84 +        </tbody>
  247.85 +      </table>
  247.86 +      <p id="copyrightDates">
  247.87 +        &copy; 2001&#8211;2009 interos
  247.88 +      </p>
  247.89 +    </center>
  247.90 +  </body>
  247.91 +  <!--=====================================================================-->
  247.92 +  <!--                  Copyright and Trademark Statement                  -->
  247.93 +  <!--=====================================================================-->
  247.94 +  <!--                                                                     -->
  247.95 +  <!--          All original textual and graphical site content:           -->
  247.96 +  <!--                                                                     -->
  247.97 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  247.98 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  247.99 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 247.100 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 247.101 +  <!--  product, and service names mentioned herein may be the properties  -->
 247.102 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 247.103 +  <!--  are the properties of their respective authors.  All software      -->
 247.104 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 247.105 +  <!--                                                                     -->
 247.106 +  <!--=====================================================================-->
 247.107 +  <!--                      e-mail: info@interos.org                       -->
 247.108 +  <!--=====================================================================-->
 247.109 +</html>
   248.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   248.2 +++ b/xhtml/page/default.xhtml	Sat May 01 16:19:36 2010 -0400
   248.3 @@ -0,0 +1,91 @@
   248.4 +<?xml version="1.0" encoding="utf-8"?>
   248.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   248.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   248.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   248.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   248.9 +  <!--==========================================================-->
  248.10 +  <!--        interos Standard Document Header - Markup         -->
  248.11 +  <!--==========================================================-->
  248.12 +  <!--         URIs:  /                                         -->
  248.13 +  <!--                /index.html                               -->
  248.14 +  <!--        Title:  interos                                   -->
  248.15 +  <!--  Description:  Default HTTP Response on this IP Address  -->
  248.16 +  <!--       Author:  Brent Angeline                            -->
  248.17 +  <!--       Markup:  W3C-Validated XHTML 1.0 Transitional      -->
  248.18 +  <!--==========================================================-->
  248.19 +  <head>
  248.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  248.21 +    <meta name="title" content="interos" />
  248.22 +    <meta name="description" 
  248.23 +          content="internet operating system for open source applications" />
  248.24 +    <meta name="author" content="Brent Angeline" />
  248.25 +    <meta name="copyright" 
  248.26 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  248.27 +    <meta name="robots" content="noindex, follow, noarchive" />
  248.28 +    <title>interos</title>
  248.29 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  248.30 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  248.31 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  248.32 +          media="screen, projection" />
  248.33 +  </head>
  248.34 +  <body id="body">
  248.35 +    <center>
  248.36 +      <table id="mainPanel" class="default">
  248.37 +        <thead>
  248.38 +          <tr>
  248.39 +            <th><center>
  248.40 +                  <h1>
  248.41 +                    interos
  248.42 +                  </h1>
  248.43 +                  <h2>
  248.44 +                    choose your destination:
  248.45 +                  </h2>
  248.46 +                </center></th>
  248.47 +          </tr>
  248.48 +        </thead>
  248.49 +        <tfoot>
  248.50 +          <tr>
  248.51 +            <td><br /></td>
  248.52 +          </tr>
  248.53 +        </tfoot>
  248.54 +        <tbody>
  248.55 +          <tr>
  248.56 +            <td><center>
  248.57 +                  <p>
  248.58 +                    <strong><a 
  248.59 +                      href="http://www.interos.com/">interos.com</a></strong>: 
  248.60 +                    internet operating system
  248.61 +                  </p>
  248.62 +                  <p>
  248.63 +                    <strong><a 
  248.64 +                      href="http://interos.org/">interos.org</a></strong>: 
  248.65 +                    internet open source
  248.66 +                  </p>
  248.67 +                </center></td>
  248.68 +          </tr>
  248.69 +        </tbody>
  248.70 +      </table>
  248.71 +      <p id="copyrightDates">
  248.72 +        &copy; 2001&#8211;2009 interos
  248.73 +      </p>
  248.74 +    </center>
  248.75 +  </body>
  248.76 +  <!--=====================================================================-->
  248.77 +  <!--                  Copyright and Trademark Statement                  -->
  248.78 +  <!--=====================================================================-->
  248.79 +  <!--                                                                     -->
  248.80 +  <!--          All original textual and graphical site content:           -->
  248.81 +  <!--                                                                     -->
  248.82 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  248.83 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  248.84 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  248.85 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  248.86 +  <!--  product, and service names mentioned herein may be the properties  -->
  248.87 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  248.88 +  <!--  are the properties of their respective authors.  All software      -->
  248.89 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  248.90 +  <!--                                                                     -->
  248.91 +  <!--=====================================================================-->
  248.92 +  <!--                      e-mail: info@interos.org                       -->
  248.93 +  <!--=====================================================================-->
  248.94 +</html>
   249.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   249.2 +++ b/xhtml/page/default_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   249.3 @@ -0,0 +1,91 @@
   249.4 +<?xml version="1.0" encoding="utf-8"?>
   249.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   249.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   249.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   249.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   249.9 +  <!--===========================================================-->
  249.10 +  <!--         interos Standard Document Header - Markup         -->
  249.11 +  <!--===========================================================-->
  249.12 +  <!--         URIs:  /                                          -->
  249.13 +  <!--                /index.html                                -->
  249.14 +  <!--        Title:  interos                                    -->
  249.15 +  <!--  Description:  Default HTTPS Response on this IP Address  -->
  249.16 +  <!--       Author:  Brent Angeline                             -->
  249.17 +  <!--       Markup:  W3C-Validated XHTML 1.0 Transitional       -->
  249.18 +  <!--===========================================================-->
  249.19 +  <head>
  249.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  249.21 +    <meta name="title" content="interos" />
  249.22 +    <meta name="description" 
  249.23 +          content="internet operating system for open source applications" />
  249.24 +    <meta name="author" content="Brent Angeline" />
  249.25 +    <meta name="copyright" 
  249.26 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  249.27 +    <meta name="robots" content="noindex, follow, noarchive" />
  249.28 +    <title>interos</title>
  249.29 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  249.30 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  249.31 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  249.32 +          media="screen, projection" />
  249.33 +  </head>
  249.34 +  <body id="body">
  249.35 +    <center>
  249.36 +      <table id="mainPanel" class="default">
  249.37 +        <thead>
  249.38 +          <tr>
  249.39 +            <th><center>
  249.40 +                  <h1>
  249.41 +                    interos
  249.42 +                  </h1>
  249.43 +                  <h2>
  249.44 +                    choose your destination:
  249.45 +                  </h2>
  249.46 +                </center></th>
  249.47 +          </tr>
  249.48 +        </thead>
  249.49 +        <tfoot>
  249.50 +          <tr>
  249.51 +            <td><br /></td>
  249.52 +          </tr>
  249.53 +        </tfoot>
  249.54 +        <tbody>
  249.55 +          <tr>
  249.56 +            <td><center>
  249.57 +                  <p>
  249.58 +                    <strong><a 
  249.59 +                      href="https://www.interos.com/">interos.com</a></strong>: 
  249.60 +                    internet operating system
  249.61 +                  </p>
  249.62 +                  <p>
  249.63 +                    <strong><a 
  249.64 +                      href="https://interos.org/">interos.org</a></strong>: 
  249.65 +                    internet open source
  249.66 +                  </p>
  249.67 +                </center></td>
  249.68 +          </tr>
  249.69 +        </tbody>
  249.70 +      </table>
  249.71 +      <p id="copyrightDates">
  249.72 +        &copy; 2001&#8211;2009 interos
  249.73 +      </p>
  249.74 +    </center>
  249.75 +  </body>
  249.76 +  <!--=====================================================================-->
  249.77 +  <!--                  Copyright and Trademark Statement                  -->
  249.78 +  <!--=====================================================================-->
  249.79 +  <!--                                                                     -->
  249.80 +  <!--          All original textual and graphical site content:           -->
  249.81 +  <!--                                                                     -->
  249.82 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  249.83 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  249.84 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  249.85 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  249.86 +  <!--  product, and service names mentioned herein may be the properties  -->
  249.87 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  249.88 +  <!--  are the properties of their respective authors.  All software      -->
  249.89 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  249.90 +  <!--                                                                     -->
  249.91 +  <!--=====================================================================-->
  249.92 +  <!--                      e-mail: info@interos.org                       -->
  249.93 +  <!--=====================================================================-->
  249.94 +</html>
   250.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   250.2 +++ b/xhtml/page/demo_interos.com.xhtml	Sat May 01 16:19:36 2010 -0400
   250.3 @@ -0,0 +1,113 @@
   250.4 +<?xml version="1.0" encoding="utf-8"?>
   250.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   250.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   250.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   250.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   250.9 +  <!--=================================================-->
  250.10 +  <!--    interos Standard Document Header - Markup    -->
  250.11 +  <!--=================================================-->
  250.12 +  <!--    URIs:  http://interos.com/demo               -->
  250.13 +  <!--           http://demo.interos.com/              -->
  250.14 +  <!--           http://www.interos.com/demo           -->
  250.15 +  <!--   Title:  interos demo                          -->
  250.16 +  <!--  Author:  Brent Angeline                        -->
  250.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  250.18 +  <!--=================================================-->
  250.19 +  <head>
  250.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  250.21 +    <meta name="title" content="interos demo" />
  250.22 +    <meta name="description" content="internet operating system demo" />
  250.23 +    <meta name="author" content="Brent Angeline" />
  250.24 +    <meta name="copyright" 
  250.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  250.26 +    <meta name="robots" content="index, follow, noarchive" />
  250.27 +    <title>interos demo</title>
  250.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  250.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  250.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  250.31 +          media="screen, projection" />
  250.32 +    <script type="text/javascript" src="/js/default.js"></script>
  250.33 +  </head>
  250.34 +  <body id="body">
  250.35 +    <center>
  250.36 +      <p id="navigation">
  250.37 +        <a href="/about">about</a> | 
  250.38 +        <a href="/blog">blog</a> | 
  250.39 +        <a href="/code">code</a> | 
  250.40 +        demo | 
  250.41 +        <a href="/e-mail">e-mail</a> | 
  250.42 +        <a href="/faq">f.a.q.</a> | 
  250.43 +        <a href="/gear">gear</a> | 
  250.44 +        <a href="http://www.interos.com/">home</a>
  250.45 +      </p>
  250.46 +      <table id="mainPanel">
  250.47 +        <thead>
  250.48 +          <tr>
  250.49 +            <th><center>
  250.50 +                  <h1>
  250.51 +                    <a href="http://demo.interos.com/">interos demo</a>
  250.52 +                  </h1>
  250.53 +                  <h2>
  250.54 +                    sneak preview
  250.55 +                  </h2>
  250.56 +                </center></th>
  250.57 +          </tr>
  250.58 +        </thead>
  250.59 +        <tfoot>
  250.60 +          <tr>
  250.61 +            <td><br /></td>
  250.62 +          </tr>
  250.63 +        </tfoot>
  250.64 +        <tbody>
  250.65 +          <tr>
  250.66 +            <td><center>
  250.67 +                  <p>
  250.68 +                    Here's your chance to see interos as it's being built!
  250.69 +                  </p>
  250.70 +                  <p>
  250.71 +                    After clicking the link below, you may need to select<br />
  250.72 +                    <em>
  250.73 +                      <strong>
  250.74 +                        &ldquo;accept this certificate&rdquo;
  250.75 +                      </strong> 
  250.76 +                      &ndash;or&ndash; 
  250.77 +                      <strong>
  250.78 +                        &ldquo;continue to this website&rdquo;
  250.79 +                      </strong>
  250.80 +                    </em><br />
  250.81 +                    in order to establish the secure connection interos uses.
  250.82 +                  </p>
  250.83 +                  <p>
  250.84 +                    <strong>
  250.85 +                      <a href="https://www.interos.com/login">Proceed to demo 
  250.86 +                      &raquo;</a>
  250.87 +                    </strong>
  250.88 +                  </p>
  250.89 +                </center></td>
  250.90 +          </tr>
  250.91 +        </tbody>
  250.92 +      </table>
  250.93 +      <p id="copyrightDates">
  250.94 +        &copy; 2001&#8211;2009 interos
  250.95 +      </p>
  250.96 +    </center>
  250.97 +  </body>
  250.98 +  <!--=====================================================================-->
  250.99 +  <!--                  Copyright and Trademark Statement                  -->
 250.100 +  <!--=====================================================================-->
 250.101 +  <!--                                                                     -->
 250.102 +  <!--          All original textual and graphical site content:           -->
 250.103 +  <!--                                                                     -->
 250.104 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
 250.105 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 250.106 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 250.107 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 250.108 +  <!--  product, and service names mentioned herein may be the properties  -->
 250.109 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 250.110 +  <!--  are the properties of their respective authors.  All software      -->
 250.111 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 250.112 +  <!--                                                                     -->
 250.113 +  <!--=====================================================================-->
 250.114 +  <!--                      e-mail: info@interos.com                       -->
 250.115 +  <!--=====================================================================-->
 250.116 +</html>
   251.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   251.2 +++ b/xhtml/page/demo_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   251.3 @@ -0,0 +1,99 @@
   251.4 +<?xml version="1.0" encoding="utf-8"?>
   251.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   251.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   251.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   251.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   251.9 +  <!--=================================================-->
  251.10 +  <!--    interos Standard Document Header - Markup    -->
  251.11 +  <!--=================================================-->
  251.12 +  <!--    URIs:  https://interos.com/demo              -->
  251.13 +  <!--           https://demo.interos.com/             -->
  251.14 +  <!--           https://www.interos.com/demo          -->
  251.15 +  <!--   Title:  interos demo                          -->
  251.16 +  <!--  Author:  Brent Angeline                        -->
  251.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  251.18 +  <!--=================================================-->
  251.19 +  <head>
  251.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  251.21 +    <meta name="title" content="interos demo" />
  251.22 +    <meta name="description" content="internet operating system demo" />
  251.23 +    <meta name="author" content="Brent Angeline" />
  251.24 +    <meta name="copyright" 
  251.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  251.26 +    <meta name="robots" content="index, follow, noarchive" />
  251.27 +    <title>interos demo</title>
  251.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  251.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  251.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  251.31 +          media="screen, projection" />
  251.32 +    <script type="text/javascript" src="/js/default.js"></script>
  251.33 +  </head>
  251.34 +  <body id="body">
  251.35 +    <center>
  251.36 +      <p id="navigation">
  251.37 +        <a href="/about">about</a> | 
  251.38 +        <a href="/blog">blog</a> | 
  251.39 +        <a href="/code">code</a> | 
  251.40 +        demo | 
  251.41 +        <a href="/e-mail">e-mail</a> | 
  251.42 +        <a href="/faq">f.a.q.</a> | 
  251.43 +        <a href="/gear">gear</a> | 
  251.44 +        <a href="https://www.interos.com/">home</a>
  251.45 +      </p>
  251.46 +      <table id="mainPanel">
  251.47 +        <thead>
  251.48 +          <tr>
  251.49 +            <th><center>
  251.50 +                  <h1>
  251.51 +                    <a href="https://demo.interos.com/">interos demo</a>
  251.52 +                  </h1>
  251.53 +                  <h2>
  251.54 +                    sneak preview
  251.55 +                  </h2>
  251.56 +                </center></th>
  251.57 +          </tr>
  251.58 +        </thead>
  251.59 +        <tfoot>
  251.60 +          <tr>
  251.61 +            <td><br /></td>
  251.62 +          </tr>
  251.63 +        </tfoot>
  251.64 +        <tbody>
  251.65 +          <tr>
  251.66 +            <td><center>
  251.67 +                  <p>
  251.68 +                    Here's your chance to see interos as it's being built!
  251.69 +                  </p>
  251.70 +                  <p>
  251.71 +                    <strong>
  251.72 +                      <a href="/login">Proceed to demo &raquo;</a>
  251.73 +                    </strong>
  251.74 +                  </p>
  251.75 +                </center></td>
  251.76 +          </tr>
  251.77 +        </tbody>
  251.78 +      </table>
  251.79 +      <p id="copyrightDates">
  251.80 +        &copy; 2001&#8211;2009 interos
  251.81 +      </p>
  251.82 +    </center>
  251.83 +  </body>
  251.84 +  <!--=====================================================================-->
  251.85 +  <!--                  Copyright and Trademark Statement                  -->
  251.86 +  <!--=====================================================================-->
  251.87 +  <!--                                                                     -->
  251.88 +  <!--          All original textual and graphical site content:           -->
  251.89 +  <!--                                                                     -->
  251.90 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  251.91 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  251.92 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  251.93 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  251.94 +  <!--  product, and service names mentioned herein may be the properties  -->
  251.95 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  251.96 +  <!--  are the properties of their respective authors.  All software      -->
  251.97 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  251.98 +  <!--                                                                     -->
  251.99 +  <!--=====================================================================-->
 251.100 +  <!--                      e-mail: info@interos.com                       -->
 251.101 +  <!--=====================================================================-->
 251.102 +</html>
   252.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   252.2 +++ b/xhtml/page/e-mail_interos.com.xhtml	Sat May 01 16:19:36 2010 -0400
   252.3 @@ -0,0 +1,99 @@
   252.4 +<?xml version="1.0" encoding="utf-8"?>
   252.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   252.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   252.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   252.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   252.9 +  <!--=================================================-->
  252.10 +  <!--    interos Standard Document Header - Markup    -->
  252.11 +  <!--=================================================-->
  252.12 +  <!--    URIs:  http://interos.com/e-mail             -->
  252.13 +  <!--           http://e-mail.interos.com/            -->
  252.14 +  <!--           http://www.interos.com/e-mail         -->
  252.15 +  <!--   Title:  e-mail interos                        -->
  252.16 +  <!--  Author:  Brent Angeline                        -->
  252.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  252.18 +  <!--=================================================-->
  252.19 +  <head>
  252.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  252.21 +    <meta name="title" content="e-mail interos" />
  252.22 +    <meta name="description" content="contact interos by e-mail" />
  252.23 +    <meta name="author" content="Brent Angeline" />
  252.24 +    <meta name="copyright" 
  252.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  252.26 +    <meta name="robots" content="index, follow, noarchive" />
  252.27 +    <title>e-mail interos</title>
  252.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  252.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  252.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  252.31 +          media="screen, projection" />
  252.32 +    <script type="text/javascript" src="/js/default.js"></script>
  252.33 +  </head>
  252.34 +  <body id="body">
  252.35 +    <center>
  252.36 +      <p id="navigation">
  252.37 +        <a href="/about">about</a> | 
  252.38 +        <a href="/blog">blog</a> | 
  252.39 +        <a href="/code">code</a> | 
  252.40 +        <a href="/demo">demo</a> | 
  252.41 +        e-mail | 
  252.42 +        <a href="/faq">f.a.q.</a> | 
  252.43 +        <a href="/gear">gear</a> | 
  252.44 +        <a href="http://www.interos.com/">home</a>
  252.45 +      </p>
  252.46 +      <table id="mainPanel">
  252.47 +        <thead>
  252.48 +          <tr>
  252.49 +            <th><center>
  252.50 +                  <h1>
  252.51 +                    <a href="http://e-mail.interos.com/">e-mail interos</a>
  252.52 +                  </h1>
  252.53 +                  <h2>
  252.54 +                    contact interos by e-mail
  252.55 +                  </h2>
  252.56 +                </center></th>
  252.57 +          </tr>
  252.58 +        </thead>
  252.59 +        <tfoot>
  252.60 +          <tr>
  252.61 +            <td><br /></td>
  252.62 +          </tr>
  252.63 +        </tfoot>
  252.64 +        <tbody>
  252.65 +          <tr>
  252.66 +            <td><center>
  252.67 +                  <p>
  252.68 +                    Please direct any questions, comments, or suggestions to:
  252.69 +                  </p>
  252.70 +                  <p>
  252.71 +                    <strong>
  252.72 +                      <a href="mailto:info@interos.com">info@interos.com</a>
  252.73 +                    </strong>
  252.74 +                  </p>
  252.75 +                </center></td>
  252.76 +          </tr>
  252.77 +        </tbody>
  252.78 +      </table>
  252.79 +      <p id="copyrightDates">
  252.80 +        &copy; 2001&#8211;2009 interos
  252.81 +      </p>
  252.82 +    </center>
  252.83 +  </body>
  252.84 +  <!--=====================================================================-->
  252.85 +  <!--                  Copyright and Trademark Statement                  -->
  252.86 +  <!--=====================================================================-->
  252.87 +  <!--                                                                     -->
  252.88 +  <!--          All original textual and graphical site content:           -->
  252.89 +  <!--                                                                     -->
  252.90 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  252.91 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  252.92 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  252.93 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  252.94 +  <!--  product, and service names mentioned herein may be the properties  -->
  252.95 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  252.96 +  <!--  are the properties of their respective authors.  All software      -->
  252.97 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  252.98 +  <!--                                                                     -->
  252.99 +  <!--=====================================================================-->
 252.100 +  <!--                      e-mail: info@interos.com                       -->
 252.101 +  <!--=====================================================================-->
 252.102 +</html>
   253.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   253.2 +++ b/xhtml/page/e-mail_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   253.3 @@ -0,0 +1,99 @@
   253.4 +<?xml version="1.0" encoding="utf-8"?>
   253.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   253.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   253.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   253.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   253.9 +  <!--=================================================-->
  253.10 +  <!--    interos Standard Document Header - Markup    -->
  253.11 +  <!--=================================================-->
  253.12 +  <!--    URIs:  https://interos.com/e-mail            -->
  253.13 +  <!--           https://e-mail.interos.com/           -->
  253.14 +  <!--           https://www.interos.com/e-mail        -->
  253.15 +  <!--   Title:  e-mail interos                        -->
  253.16 +  <!--  Author:  Brent Angeline                        -->
  253.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  253.18 +  <!--=================================================-->
  253.19 +  <head>
  253.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  253.21 +    <meta name="title" content="e-mail interos" />
  253.22 +    <meta name="description" content="contact interos by e-mail" />
  253.23 +    <meta name="author" content="Brent Angeline" />
  253.24 +    <meta name="copyright" 
  253.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  253.26 +    <meta name="robots" content="index, follow, noarchive" />
  253.27 +    <title>e-mail interos</title>
  253.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  253.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  253.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  253.31 +          media="screen, projection" />
  253.32 +    <script type="text/javascript" src="/js/default.js"></script>
  253.33 +  </head>
  253.34 +  <body id="body">
  253.35 +    <center>
  253.36 +      <p id="navigation">
  253.37 +        <a href="/about">about</a> | 
  253.38 +        <a href="/blog">blog</a> | 
  253.39 +        <a href="/code">code</a> | 
  253.40 +        <a href="/demo">demo</a> | 
  253.41 +        e-mail | 
  253.42 +        <a href="/faq">f.a.q.</a> | 
  253.43 +        <a href="/gear">gear</a> | 
  253.44 +        <a href="https://www.interos.com/">home</a>
  253.45 +      </p>
  253.46 +      <table id="mainPanel">
  253.47 +        <thead>
  253.48 +          <tr>
  253.49 +            <th><center>
  253.50 +                  <h1>
  253.51 +                    <a href="https://e-mail.interos.com/">e-mail interos</a>
  253.52 +                  </h1>
  253.53 +                  <h2>
  253.54 +                    contact interos by e-mail
  253.55 +                  </h2>
  253.56 +                </center></th>
  253.57 +          </tr>
  253.58 +        </thead>
  253.59 +        <tfoot>
  253.60 +          <tr>
  253.61 +            <td><br /></td>
  253.62 +          </tr>
  253.63 +        </tfoot>
  253.64 +        <tbody>
  253.65 +          <tr>
  253.66 +            <td><center>
  253.67 +                  <p>
  253.68 +                    Please direct any questions, comments, or suggestions to:
  253.69 +                  </p>
  253.70 +                  <p>
  253.71 +                    <strong>
  253.72 +                      <a href="mailto:info@interos.com">info@interos.com</a>
  253.73 +                    </strong>
  253.74 +                  </p>
  253.75 +                </center></td>
  253.76 +          </tr>
  253.77 +        </tbody>
  253.78 +      </table>
  253.79 +      <p id="copyrightDates">
  253.80 +        &copy; 2001&#8211;2009 interos
  253.81 +      </p>
  253.82 +    </center>
  253.83 +  </body>
  253.84 +  <!--=====================================================================-->
  253.85 +  <!--                  Copyright and Trademark Statement                  -->
  253.86 +  <!--=====================================================================-->
  253.87 +  <!--                                                                     -->
  253.88 +  <!--          All original textual and graphical site content:           -->
  253.89 +  <!--                                                                     -->
  253.90 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  253.91 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  253.92 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  253.93 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  253.94 +  <!--  product, and service names mentioned herein may be the properties  -->
  253.95 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  253.96 +  <!--  are the properties of their respective authors.  All software      -->
  253.97 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  253.98 +  <!--                                                                     -->
  253.99 +  <!--=====================================================================-->
 253.100 +  <!--                      e-mail: info@interos.com                       -->
 253.101 +  <!--=====================================================================-->
 253.102 +</html>
   254.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   254.2 +++ b/xhtml/page/e-mail_interos.org.xhtml	Sat May 01 16:19:36 2010 -0400
   254.3 @@ -0,0 +1,99 @@
   254.4 +<?xml version="1.0" encoding="utf-8"?>
   254.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   254.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   254.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   254.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   254.9 +  <!--=================================================-->
  254.10 +  <!--    interos Standard Document Header - Markup    -->
  254.11 +  <!--=================================================-->
  254.12 +  <!--    URIs:  http://interos.org/e-mail             -->
  254.13 +  <!--           http://e-mail.interos.org/            -->
  254.14 +  <!--           http://www.interos.org/e-mail         -->
  254.15 +  <!--   Title:  e-mail interos                        -->
  254.16 +  <!--  Author:  Brent Angeline                        -->
  254.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  254.18 +  <!--=================================================-->
  254.19 +  <head>
  254.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  254.21 +    <meta name="title" content="e-mail interos" />
  254.22 +    <meta name="description" content="contact interos by e-mail" />
  254.23 +    <meta name="author" content="Brent Angeline" />
  254.24 +    <meta name="copyright" 
  254.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  254.26 +    <meta name="robots" content="index, follow, noarchive" />
  254.27 +    <title>e-mail interos</title>
  254.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  254.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  254.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  254.31 +          media="screen, projection" />
  254.32 +    <script type="text/javascript" src="/js/default.js"></script>
  254.33 +  </head>
  254.34 +  <body id="body">
  254.35 +    <center>
  254.36 +      <p id="navigation">
  254.37 +        <a href="/about">about</a> | 
  254.38 +        <a href="/blog">blog</a> | 
  254.39 +        <a href="/code">code</a> | 
  254.40 +        <a href="/forums">develop</a> | 
  254.41 +        e-mail | 
  254.42 +        <a href="/faq">f.a.q.</a> | 
  254.43 +        <a href="/gear">gear</a> | 
  254.44 +        <a href="http://interos.org/">home</a>
  254.45 +      </p>
  254.46 +      <table id="mainPanel">
  254.47 +        <thead>
  254.48 +          <tr>
  254.49 +            <th><center>
  254.50 +                  <h1>
  254.51 +                    <a href="http://e-mail.interos.org/">e-mail interos</a>
  254.52 +                  </h1>
  254.53 +                  <h2>
  254.54 +                    contact interos by e-mail
  254.55 +                  </h2>
  254.56 +                </center></th>
  254.57 +          </tr>
  254.58 +        </thead>
  254.59 +        <tfoot>
  254.60 +          <tr>
  254.61 +            <td><br /></td>
  254.62 +          </tr>
  254.63 +        </tfoot>
  254.64 +        <tbody>
  254.65 +          <tr>
  254.66 +            <td><center>
  254.67 +                  <p>
  254.68 +                    Please direct any questions, comments, or suggestions to:
  254.69 +                  </p>
  254.70 +                  <p>
  254.71 +                    <strong>
  254.72 +                      <a href="mailto:info@interos.org">info@interos.org</a>
  254.73 +                    </strong>
  254.74 +                  </p>
  254.75 +                </center></td>
  254.76 +          </tr>
  254.77 +        </tbody>
  254.78 +      </table>
  254.79 +      <p id="copyrightDates">
  254.80 +        &copy; 2001&#8211;2009 interos
  254.81 +      </p>
  254.82 +    </center>
  254.83 +  </body>
  254.84 +  <!--=====================================================================-->
  254.85 +  <!--                  Copyright and Trademark Statement                  -->
  254.86 +  <!--=====================================================================-->
  254.87 +  <!--                                                                     -->
  254.88 +  <!--          All original textual and graphical site content:           -->
  254.89 +  <!--                                                                     -->
  254.90 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  254.91 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  254.92 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  254.93 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  254.94 +  <!--  product, and service names mentioned herein may be the properties  -->
  254.95 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  254.96 +  <!--  are the properties of their respective authors.  All software      -->
  254.97 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  254.98 +  <!--                                                                     -->
  254.99 +  <!--=====================================================================-->
 254.100 +  <!--                      e-mail: info@interos.org                       -->
 254.101 +  <!--=====================================================================-->
 254.102 +</html>
   255.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   255.2 +++ b/xhtml/page/e-mail_interos.org_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   255.3 @@ -0,0 +1,99 @@
   255.4 +<?xml version="1.0" encoding="utf-8"?>
   255.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   255.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   255.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   255.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   255.9 +  <!--=================================================-->
  255.10 +  <!--    interos Standard Document Header - Markup    -->
  255.11 +  <!--=================================================-->
  255.12 +  <!--    URIs:  https://interos.org/e-mail            -->
  255.13 +  <!--           https://e-mail.interos.org/           -->
  255.14 +  <!--           https://www.interos.org/e-mail        -->
  255.15 +  <!--   Title:  e-mail interos                        -->
  255.16 +  <!--  Author:  Brent Angeline                        -->
  255.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  255.18 +  <!--=================================================-->
  255.19 +  <head>
  255.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  255.21 +    <meta name="title" content="e-mail interos" />
  255.22 +    <meta name="description" content="contact interos by e-mail" />
  255.23 +    <meta name="author" content="Brent Angeline" />
  255.24 +    <meta name="copyright" 
  255.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  255.26 +    <meta name="robots" content="index, follow, noarchive" />
  255.27 +    <title>e-mail interos</title>
  255.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  255.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  255.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  255.31 +          media="screen, projection" />
  255.32 +    <script type="text/javascript" src="/js/default.js"></script>
  255.33 +  </head>
  255.34 +  <body id="body">
  255.35 +    <center>
  255.36 +      <p id="navigation">
  255.37 +        <a href="/about">about</a> | 
  255.38 +        <a href="/blog">blog</a> | 
  255.39 +        <a href="/code">code</a> | 
  255.40 +        <a href="/forums">develop</a> | 
  255.41 +        e-mail | 
  255.42 +        <a href="/faq">f.a.q.</a> | 
  255.43 +        <a href="/gear">gear</a> | 
  255.44 +        <a href="https://interos.org/">home</a>
  255.45 +      </p>
  255.46 +      <table id="mainPanel">
  255.47 +        <thead>
  255.48 +          <tr>
  255.49 +            <th><center>
  255.50 +                  <h1>
  255.51 +                    <a href="https://e-mail.interos.org/">e-mail interos</a>
  255.52 +                  </h1>
  255.53 +                  <h2>
  255.54 +                    contact interos by e-mail
  255.55 +                  </h2>
  255.56 +                </center></th>
  255.57 +          </tr>
  255.58 +        </thead>
  255.59 +        <tfoot>
  255.60 +          <tr>
  255.61 +            <td><br /></td>
  255.62 +          </tr>
  255.63 +        </tfoot>
  255.64 +        <tbody>
  255.65 +          <tr>
  255.66 +            <td><center>
  255.67 +                  <p>
  255.68 +                    Please direct any questions, comments, or suggestions to:
  255.69 +                  </p>
  255.70 +                  <p>
  255.71 +                    <strong>
  255.72 +                      <a href="mailto:info@interos.org">info@interos.org</a>
  255.73 +                    </strong>
  255.74 +                  </p>
  255.75 +                </center></td>
  255.76 +          </tr>
  255.77 +        </tbody>
  255.78 +      </table>
  255.79 +      <p id="copyrightDates">
  255.80 +        &copy; 2001&#8211;2009 interos
  255.81 +      </p>
  255.82 +    </center>
  255.83 +  </body>
  255.84 +  <!--=====================================================================-->
  255.85 +  <!--                  Copyright and Trademark Statement                  -->
  255.86 +  <!--=====================================================================-->
  255.87 +  <!--                                                                     -->
  255.88 +  <!--          All original textual and graphical site content:           -->
  255.89 +  <!--                                                                     -->
  255.90 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  255.91 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  255.92 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  255.93 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  255.94 +  <!--  product, and service names mentioned herein may be the properties  -->
  255.95 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  255.96 +  <!--  are the properties of their respective authors.  All software      -->
  255.97 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  255.98 +  <!--                                                                     -->
  255.99 +  <!--=====================================================================-->
 255.100 +  <!--                      e-mail: info@interos.org                       -->
 255.101 +  <!--=====================================================================-->
 255.102 +</html>
   256.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   256.2 +++ b/xhtml/page/faq_interos.com.xhtml	Sat May 01 16:19:36 2010 -0400
   256.3 @@ -0,0 +1,99 @@
   256.4 +<?xml version="1.0" encoding="utf-8"?>
   256.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   256.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   256.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   256.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   256.9 +  <!--=================================================-->
  256.10 +  <!--    interos Standard Document Header - Markup    -->
  256.11 +  <!--=================================================-->
  256.12 +  <!--    URIs:  http://interos.com/faq                -->
  256.13 +  <!--           http://www.interos.com/faq            -->
  256.14 +  <!--           http://faq.interos.com/               -->
  256.15 +  <!--   Title:  interos f.a.q.                        -->
  256.16 +  <!--  Author:  Brent Angeline                        -->
  256.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  256.18 +  <!--=================================================-->
  256.19 +  <head>
  256.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  256.21 +    <meta name="title" content="interos f.a.q." />
  256.22 +    <meta name="description" content="frequently asked questions" />
  256.23 +    <meta name="author" content="Brent Angeline" />
  256.24 +    <meta name="copyright" 
  256.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  256.26 +    <meta name="robots" content="index, follow, noarchive" />
  256.27 +    <title>interos f.a.q.</title>
  256.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  256.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  256.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  256.31 +          media="screen, projection" />
  256.32 +    <script type="text/javascript" src="/js/default.js"></script>
  256.33 +  </head>
  256.34 +  <body id="body">
  256.35 +    <center>
  256.36 +      <p id="navigation">
  256.37 +        <a href="/about">about</a> | 
  256.38 +        <a href="/blog">blog</a> | 
  256.39 +        <a href="/code">code</a> | 
  256.40 +        <a href="/demo">demo</a> | 
  256.41 +        <a href="/e-mail">e-mail</a> | 
  256.42 +        f.a.q. | 
  256.43 +        <a href="/gear">gear</a> | 
  256.44 +        <a href="http://www.interos.com/">home</a>
  256.45 +      </p>
  256.46 +      <table id="mainPanel">
  256.47 +        <thead>
  256.48 +          <tr>
  256.49 +            <th><center>
  256.50 +                  <h1>
  256.51 +                    <a href="http://faq.interos.com/">interos f.a.q.</a>
  256.52 +                  </h1>
  256.53 +                  <h2>
  256.54 +                    frequently asked questions
  256.55 +                  </h2>
  256.56 +                </center></th>
  256.57 +          </tr>
  256.58 +        </thead>
  256.59 +        <tfoot>
  256.60 +          <tr>
  256.61 +            <td><br /></td>
  256.62 +          </tr>
  256.63 +        </tfoot>
  256.64 +        <tbody>
  256.65 +          <tr>
  256.66 +            <td><center>
  256.67 +                  <p>
  256.68 +                    Please e-mail your questions to:
  256.69 +                  </p>
  256.70 +                  <p>
  256.71 +                    <strong>
  256.72 +                      <a href="mailto:info@interos.com">info@interos.com</a>
  256.73 +                    </strong>
  256.74 +                  </p>
  256.75 +                </center></td>
  256.76 +          </tr>
  256.77 +        </tbody>
  256.78 +      </table>
  256.79 +      <p id="copyrightDates">
  256.80 +        &copy; 2001&#8211;2009 interos
  256.81 +      </p>
  256.82 +    </center>
  256.83 +  </body>
  256.84 +  <!--=====================================================================-->
  256.85 +  <!--                  Copyright and Trademark Statement                  -->
  256.86 +  <!--=====================================================================-->
  256.87 +  <!--                                                                     -->
  256.88 +  <!--          All original textual and graphical site content:           -->
  256.89 +  <!--                                                                     -->
  256.90 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  256.91 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  256.92 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  256.93 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  256.94 +  <!--  product, and service names mentioned herein may be the properties  -->
  256.95 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  256.96 +  <!--  are the properties of their respective authors.  All software      -->
  256.97 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  256.98 +  <!--                                                                     -->
  256.99 +  <!--=====================================================================-->
 256.100 +  <!--                      e-mail: info@interos.com                       -->
 256.101 +  <!--=====================================================================-->
 256.102 +</html>
   257.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   257.2 +++ b/xhtml/page/faq_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   257.3 @@ -0,0 +1,99 @@
   257.4 +<?xml version="1.0" encoding="utf-8"?>
   257.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   257.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   257.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   257.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   257.9 +  <!--=================================================-->
  257.10 +  <!--    interos Standard Document Header - Markup    -->
  257.11 +  <!--=================================================-->
  257.12 +  <!--    URIs:  https://interos.com/faq               -->
  257.13 +  <!--           https://www.interos.com/faq           -->
  257.14 +  <!--           https://faq.interos.com/              -->
  257.15 +  <!--   Title:  interos f.a.q.                        -->
  257.16 +  <!--  Author:  Brent Angeline                        -->
  257.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  257.18 +  <!--=================================================-->
  257.19 +  <head>
  257.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  257.21 +    <meta name="title" content="interos f.a.q." />
  257.22 +    <meta name="description" content="frequently asked questions" />
  257.23 +    <meta name="author" content="Brent Angeline" />
  257.24 +    <meta name="copyright" 
  257.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  257.26 +    <meta name="robots" content="index, follow, noarchive" />
  257.27 +    <title>interos f.a.q.</title>
  257.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  257.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  257.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  257.31 +          media="screen, projection" />
  257.32 +    <script type="text/javascript" src="/js/default.js"></script>
  257.33 +  </head>
  257.34 +  <body id="body">
  257.35 +    <center>
  257.36 +      <p id="navigation">
  257.37 +        <a href="/about">about</a> | 
  257.38 +        <a href="/blog">blog</a> | 
  257.39 +        <a href="/code">code</a> | 
  257.40 +        <a href="/demo">demo</a> | 
  257.41 +        <a href="/e-mail">e-mail</a> | 
  257.42 +        f.a.q. | 
  257.43 +        <a href="/gear">gear</a> | 
  257.44 +        <a href="https://www.interos.com/">home</a>
  257.45 +      </p>
  257.46 +      <table id="mainPanel">
  257.47 +        <thead>
  257.48 +          <tr>
  257.49 +            <th><center>
  257.50 +                  <h1>
  257.51 +                    <a href="https://faq.interos.com/">interos f.a.q.</a>
  257.52 +                  </h1>
  257.53 +                  <h2>
  257.54 +                    frequently asked questions
  257.55 +                  </h2>
  257.56 +                </center></th>
  257.57 +          </tr>
  257.58 +        </thead>
  257.59 +        <tfoot>
  257.60 +          <tr>
  257.61 +            <td><br /></td>
  257.62 +          </tr>
  257.63 +        </tfoot>
  257.64 +        <tbody>
  257.65 +          <tr>
  257.66 +            <td><center>
  257.67 +                  <p>
  257.68 +                    Please e-mail your questions to:
  257.69 +                  </p>
  257.70 +                  <p>
  257.71 +                    <strong>
  257.72 +                      <a href="mailto:info@interos.com">info@interos.com</a>
  257.73 +                    </strong>
  257.74 +                  </p>
  257.75 +                </center></td>
  257.76 +          </tr>
  257.77 +        </tbody>
  257.78 +      </table>
  257.79 +      <p id="copyrightDates">
  257.80 +        &copy; 2001&#8211;2009 interos
  257.81 +      </p>
  257.82 +    </center>
  257.83 +  </body>
  257.84 +  <!--=====================================================================-->
  257.85 +  <!--                  Copyright and Trademark Statement                  -->
  257.86 +  <!--=====================================================================-->
  257.87 +  <!--                                                                     -->
  257.88 +  <!--          All original textual and graphical site content:           -->
  257.89 +  <!--                                                                     -->
  257.90 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  257.91 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  257.92 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  257.93 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  257.94 +  <!--  product, and service names mentioned herein may be the properties  -->
  257.95 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  257.96 +  <!--  are the properties of their respective authors.  All software      -->
  257.97 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  257.98 +  <!--                                                                     -->
  257.99 +  <!--=====================================================================-->
 257.100 +  <!--                      e-mail: info@interos.com                       -->
 257.101 +  <!--=====================================================================-->
 257.102 +</html>
   258.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   258.2 +++ b/xhtml/page/faq_interos.org.xhtml	Sat May 01 16:19:36 2010 -0400
   258.3 @@ -0,0 +1,99 @@
   258.4 +<?xml version="1.0" encoding="utf-8"?>
   258.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   258.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   258.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   258.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   258.9 +  <!--=================================================-->
  258.10 +  <!--    interos Standard Document Header - Markup    -->
  258.11 +  <!--=================================================-->
  258.12 +  <!--    URIs:  http://interos.org/faq                -->
  258.13 +  <!--           http://www.interos.org/faq            -->
  258.14 +  <!--           http://faq.interos.org/               -->
  258.15 +  <!--   Title:  interos f.a.q.                        -->
  258.16 +  <!--  Author:  Brent Angeline                        -->
  258.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  258.18 +  <!--=================================================-->
  258.19 +  <head>
  258.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  258.21 +    <meta name="title" content="interos f.a.q." />
  258.22 +    <meta name="description" content="frequently asked questions" />
  258.23 +    <meta name="author" content="Brent Angeline" />
  258.24 +    <meta name="copyright" 
  258.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  258.26 +    <meta name="robots" content="index, follow, noarchive" />
  258.27 +    <title>interos f.a.q.</title>
  258.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  258.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  258.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  258.31 +          media="screen, projection" />
  258.32 +    <script type="text/javascript" src="/js/default.js"></script>
  258.33 +  </head>
  258.34 +  <body id="body">
  258.35 +    <center>
  258.36 +      <p id="navigation">
  258.37 +        <a href="/about">about</a> | 
  258.38 +        <a href="/blog">blog</a> | 
  258.39 +        <a href="/code">code</a> | 
  258.40 +        <a href="/forums">develop</a> | 
  258.41 +        <a href="/e-mail">e-mail</a> | 
  258.42 +        f.a.q. | 
  258.43 +        <a href="/gear">gear</a> | 
  258.44 +        <a href="http://interos.org/">home</a>
  258.45 +      </p>
  258.46 +      <table id="mainPanel">
  258.47 +        <thead>
  258.48 +          <tr>
  258.49 +            <th><center>
  258.50 +                  <h1>
  258.51 +                    <a href="http://faq.interos.org/">interos f.a.q.</a>
  258.52 +                  </h1>
  258.53 +                  <h2>
  258.54 +                    frequently asked questions
  258.55 +                  </h2>
  258.56 +                </center></th>
  258.57 +          </tr>
  258.58 +        </thead>
  258.59 +        <tfoot>
  258.60 +          <tr>
  258.61 +            <td><br /></td>
  258.62 +          </tr>
  258.63 +        </tfoot>
  258.64 +        <tbody>
  258.65 +          <tr>
  258.66 +            <td><center>
  258.67 +                  <p>
  258.68 +                    Please e-mail your questions to:
  258.69 +                  </p>
  258.70 +                  <p>
  258.71 +                    <strong>
  258.72 +                      <a href="mailto:info@interos.org">info@interos.org</a>
  258.73 +                    </strong>
  258.74 +                  </p>
  258.75 +                </center></td>
  258.76 +          </tr>
  258.77 +        </tbody>
  258.78 +      </table>
  258.79 +      <p id="copyrightDates">
  258.80 +        &copy; 2001&#8211;2009 interos
  258.81 +      </p>
  258.82 +    </center>
  258.83 +  </body>
  258.84 +  <!--=====================================================================-->
  258.85 +  <!--                  Copyright and Trademark Statement                  -->
  258.86 +  <!--=====================================================================-->
  258.87 +  <!--                                                                     -->
  258.88 +  <!--          All original textual and graphical site content:           -->
  258.89 +  <!--                                                                     -->
  258.90 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  258.91 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  258.92 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  258.93 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  258.94 +  <!--  product, and service names mentioned herein may be the properties  -->
  258.95 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  258.96 +  <!--  are the properties of their respective authors.  All software      -->
  258.97 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  258.98 +  <!--                                                                     -->
  258.99 +  <!--=====================================================================-->
 258.100 +  <!--                      e-mail: info@interos.org                       -->
 258.101 +  <!--=====================================================================-->
 258.102 +</html>
   259.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   259.2 +++ b/xhtml/page/faq_interos.org_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   259.3 @@ -0,0 +1,99 @@
   259.4 +<?xml version="1.0" encoding="utf-8"?>
   259.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   259.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   259.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   259.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   259.9 +  <!--=================================================-->
  259.10 +  <!--    interos Standard Document Header - Markup    -->
  259.11 +  <!--=================================================-->
  259.12 +  <!--    URIs:  https://interos.org/faq               -->
  259.13 +  <!--           https://www.interos.org/faq           -->
  259.14 +  <!--           https://faq.interos.org/              -->
  259.15 +  <!--   Title:  interos f.a.q.                        -->
  259.16 +  <!--  Author:  Brent Angeline                        -->
  259.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  259.18 +  <!--=================================================-->
  259.19 +  <head>
  259.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  259.21 +    <meta name="title" content="interos f.a.q." />
  259.22 +    <meta name="description" content="frequently asked questions" />
  259.23 +    <meta name="author" content="Brent Angeline" />
  259.24 +    <meta name="copyright" 
  259.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  259.26 +    <meta name="robots" content="index, follow, noarchive" />
  259.27 +    <title>interos f.a.q.</title>
  259.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  259.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  259.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  259.31 +          media="screen, projection" />
  259.32 +    <script type="text/javascript" src="/js/default.js"></script>
  259.33 +  </head>
  259.34 +  <body id="body">
  259.35 +    <center>
  259.36 +      <p id="navigation">
  259.37 +        <a href="/about">about</a> | 
  259.38 +        <a href="/blog">blog</a> | 
  259.39 +        <a href="/code">code</a> | 
  259.40 +        <a href="/forums">develop</a> | 
  259.41 +        <a href="/e-mail">e-mail</a> | 
  259.42 +        f.a.q. | 
  259.43 +        <a href="/gear">gear</a> | 
  259.44 +        <a href="https://interos.org/">home</a>
  259.45 +      </p>
  259.46 +      <table id="mainPanel">
  259.47 +        <thead>
  259.48 +          <tr>
  259.49 +            <th><center>
  259.50 +                  <h1>
  259.51 +                    <a href="https://faq.interos.org/">interos f.a.q.</a>
  259.52 +                  </h1>
  259.53 +                  <h2>
  259.54 +                    frequently asked questions
  259.55 +                  </h2>
  259.56 +                </center></th>
  259.57 +          </tr>
  259.58 +        </thead>
  259.59 +        <tfoot>
  259.60 +          <tr>
  259.61 +            <td><br /></td>
  259.62 +          </tr>
  259.63 +        </tfoot>
  259.64 +        <tbody>
  259.65 +          <tr>
  259.66 +            <td><center>
  259.67 +                  <p>
  259.68 +                    Please e-mail your questions to:
  259.69 +                  </p>
  259.70 +                  <p>
  259.71 +                    <strong>
  259.72 +                      <a href="mailto:info@interos.org">info@interos.org</a>
  259.73 +                    </strong>
  259.74 +                  </p>
  259.75 +                </center></td>
  259.76 +          </tr>
  259.77 +        </tbody>
  259.78 +      </table>
  259.79 +      <p id="copyrightDates">
  259.80 +        &copy; 2001&#8211;2009 interos
  259.81 +      </p>
  259.82 +    </center>
  259.83 +  </body>
  259.84 +  <!--=====================================================================-->
  259.85 +  <!--                  Copyright and Trademark Statement                  -->
  259.86 +  <!--=====================================================================-->
  259.87 +  <!--                                                                     -->
  259.88 +  <!--          All original textual and graphical site content:           -->
  259.89 +  <!--                                                                     -->
  259.90 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  259.91 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  259.92 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  259.93 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  259.94 +  <!--  product, and service names mentioned herein may be the properties  -->
  259.95 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  259.96 +  <!--  are the properties of their respective authors.  All software      -->
  259.97 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  259.98 +  <!--                                                                     -->
  259.99 +  <!--=====================================================================-->
 259.100 +  <!--                      e-mail: info@interos.org                       -->
 259.101 +  <!--=====================================================================-->
 259.102 +</html>
   260.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   260.2 +++ b/xhtml/page/gear_interos.com.xhtml	Sat May 01 16:19:36 2010 -0400
   260.3 @@ -0,0 +1,105 @@
   260.4 +<?xml version="1.0" encoding="utf-8"?>
   260.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   260.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   260.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   260.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   260.9 +  <!--=================================================-->
  260.10 +  <!--    interos Standard Document Header - Markup    -->
  260.11 +  <!--=================================================-->
  260.12 +  <!--    URIs:  http://interos.com/gear               -->
  260.13 +  <!--           http://gear.interos.com/              -->
  260.14 +  <!--           http://www.interos.com/gear           -->
  260.15 +  <!--   Title:  interos gear                          -->
  260.16 +  <!--  Author:  Brent Angeline                        -->
  260.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  260.18 +  <!--=================================================-->
  260.19 +  <head>
  260.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  260.21 +    <meta name="title" content="interos gear" />
  260.22 +    <meta name="description" content="be a part of the interos street team!" />
  260.23 +    <meta name="author" content="Brent Angeline" />
  260.24 +    <meta name="copyright" 
  260.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  260.26 +    <meta name="robots" content="index, follow, noarchive" />
  260.27 +    <title>interos gear</title>
  260.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  260.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  260.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  260.31 +          media="screen, projection" />
  260.32 +    <script type="text/javascript" src="/js/default.js"></script>
  260.33 +  </head>
  260.34 +  <body id="body">
  260.35 +    <center>
  260.36 +      <p id="navigation">
  260.37 +        <a href="/about">about</a> | 
  260.38 +        <a href="/blog">blog</a> | 
  260.39 +        <a href="/code">code</a> | 
  260.40 +        <a href="/demo">demo</a> | 
  260.41 +        <a href="/e-mail">e-mail</a> | 
  260.42 +        <a href="/faq">f.a.q.</a> | 
  260.43 +        gear | 
  260.44 +        <a href="http://www.interos.com/">home</a>
  260.45 +      </p>
  260.46 +      <table id="mainPanel">
  260.47 +        <thead>
  260.48 +          <tr>
  260.49 +            <th><center>
  260.50 +                  <h1>
  260.51 +                    <a href="http://gear.interos.com/">interos gear</a>
  260.52 +                  </h1>
  260.53 +                  <h2>
  260.54 +                    (coming soon)
  260.55 +                  </h2>
  260.56 +                </center></th>
  260.57 +          </tr>
  260.58 +        </thead>
  260.59 +        <tfoot>
  260.60 +          <tr>
  260.61 +            <td><br /></td>
  260.62 +          </tr>
  260.63 +        </tfoot>
  260.64 +        <tbody>
  260.65 +          <tr>
  260.66 +            <td><p>
  260.67 +                  Send us your suggestions for items you'd like to see 
  260.68 +                  available that sport the interos logo.  Also, let us know 
  260.69 +                  about any interesting gadgets you've enjoyed using with 
  260.70 +                  interos!
  260.71 +                </p>
  260.72 +                <center>
  260.73 +                  <p>
  260.74 +                    Please direct this information to:
  260.75 +                  </p>
  260.76 +                  <p>
  260.77 +                    <strong>
  260.78 +                      <a href="mailto:info@interos.com">info@interos.com</a>
  260.79 +                    </strong>
  260.80 +                  </p>
  260.81 +                </center></td>
  260.82 +          </tr>
  260.83 +        </tbody>
  260.84 +      </table>
  260.85 +      <p id="copyrightDates">
  260.86 +        &copy; 2001&#8211;2009 interos
  260.87 +      </p>
  260.88 +    </center>
  260.89 +  </body>
  260.90 +  <!--=====================================================================-->
  260.91 +  <!--                  Copyright and Trademark Statement                  -->
  260.92 +  <!--=====================================================================-->
  260.93 +  <!--                                                                     -->
  260.94 +  <!--          All original textual and graphical site content:           -->
  260.95 +  <!--                                                                     -->
  260.96 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  260.97 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  260.98 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  260.99 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 260.100 +  <!--  product, and service names mentioned herein may be the properties  -->
 260.101 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 260.102 +  <!--  are the properties of their respective authors.  All software      -->
 260.103 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 260.104 +  <!--                                                                     -->
 260.105 +  <!--=====================================================================-->
 260.106 +  <!--                      e-mail: info@interos.com                       -->
 260.107 +  <!--=====================================================================-->
 260.108 +</html>
   261.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   261.2 +++ b/xhtml/page/gear_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   261.3 @@ -0,0 +1,105 @@
   261.4 +<?xml version="1.0" encoding="utf-8"?>
   261.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   261.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   261.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   261.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   261.9 +  <!--=================================================-->
  261.10 +  <!--    interos Standard Document Header - Markup    -->
  261.11 +  <!--=================================================-->
  261.12 +  <!--    URIs:  https://interos.com/gear              -->
  261.13 +  <!--           https://gear.interos.com/             -->
  261.14 +  <!--           https://www.interos.com/gear          -->
  261.15 +  <!--   Title:  interos gear                          -->
  261.16 +  <!--  Author:  Brent Angeline                        -->
  261.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  261.18 +  <!--=================================================-->
  261.19 +  <head>
  261.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  261.21 +    <meta name="title" content="interos gear" />
  261.22 +    <meta name="description" content="be a part of the interos street team!" />
  261.23 +    <meta name="author" content="Brent Angeline" />
  261.24 +    <meta name="copyright" 
  261.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  261.26 +    <meta name="robots" content="index, follow, noarchive" />
  261.27 +    <title>interos gear</title>
  261.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  261.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  261.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  261.31 +          media="screen, projection" />
  261.32 +    <script type="text/javascript" src="/js/default.js"></script>
  261.33 +  </head>
  261.34 +  <body id="body">
  261.35 +    <center>
  261.36 +      <p id="navigation">
  261.37 +        <a href="/about">about</a> | 
  261.38 +        <a href="/blog">blog</a> | 
  261.39 +        <a href="/code">code</a> | 
  261.40 +        <a href="/demo">demo</a> | 
  261.41 +        <a href="/e-mail">e-mail</a> | 
  261.42 +        <a href="/faq">f.a.q.</a> | 
  261.43 +        gear | 
  261.44 +        <a href="https://www.interos.com/">home</a>
  261.45 +      </p>
  261.46 +      <table id="mainPanel">
  261.47 +        <thead>
  261.48 +          <tr>
  261.49 +            <th><center>
  261.50 +                  <h1>
  261.51 +                    <a href="https://gear.interos.com/">interos gear</a>
  261.52 +                  </h1>
  261.53 +                  <h2>
  261.54 +                    (coming soon)
  261.55 +                  </h2>
  261.56 +                </center></th>
  261.57 +          </tr>
  261.58 +        </thead>
  261.59 +        <tfoot>
  261.60 +          <tr>
  261.61 +            <td><br /></td>
  261.62 +          </tr>
  261.63 +        </tfoot>
  261.64 +        <tbody>
  261.65 +          <tr>
  261.66 +            <td><p>
  261.67 +                  Send us your suggestions for items you'd like to see 
  261.68 +                  available that sport the interos logo.  Also, let us know 
  261.69 +                  about any interesting gadgets you've enjoyed using with 
  261.70 +                  interos!
  261.71 +                </p>
  261.72 +                <center>
  261.73 +                  <p>
  261.74 +                    Please direct this information to:
  261.75 +                  </p>
  261.76 +                  <p>
  261.77 +                    <strong>
  261.78 +                      <a href="mailto:info@interos.com">info@interos.com</a>
  261.79 +                    </strong>
  261.80 +                  </p>
  261.81 +                </center></td>
  261.82 +          </tr>
  261.83 +        </tbody>
  261.84 +      </table>
  261.85 +      <p id="copyrightDates">
  261.86 +        &copy; 2001&#8211;2009 interos
  261.87 +      </p>
  261.88 +    </center>
  261.89 +  </body>
  261.90 +  <!--=====================================================================-->
  261.91 +  <!--                  Copyright and Trademark Statement                  -->
  261.92 +  <!--=====================================================================-->
  261.93 +  <!--                                                                     -->
  261.94 +  <!--          All original textual and graphical site content:           -->
  261.95 +  <!--                                                                     -->
  261.96 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  261.97 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  261.98 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  261.99 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 261.100 +  <!--  product, and service names mentioned herein may be the properties  -->
 261.101 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 261.102 +  <!--  are the properties of their respective authors.  All software      -->
 261.103 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 261.104 +  <!--                                                                     -->
 261.105 +  <!--=====================================================================-->
 261.106 +  <!--                      e-mail: info@interos.com                       -->
 261.107 +  <!--=====================================================================-->
 261.108 +</html>
   262.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   262.2 +++ b/xhtml/page/gear_interos.org.xhtml	Sat May 01 16:19:36 2010 -0400
   262.3 @@ -0,0 +1,105 @@
   262.4 +<?xml version="1.0" encoding="utf-8"?>
   262.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   262.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   262.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   262.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   262.9 +  <!--=================================================-->
  262.10 +  <!--    interos Standard Document Header - Markup    -->
  262.11 +  <!--=================================================-->
  262.12 +  <!--    URIs:  http://interos.org/gear               -->
  262.13 +  <!--           http://gear.interos.org/              -->
  262.14 +  <!--           http://www.interos.org/gear           -->
  262.15 +  <!--   Title:  interos gear                          -->
  262.16 +  <!--  Author:  Brent Angeline                        -->
  262.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  262.18 +  <!--=================================================-->
  262.19 +  <head>
  262.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  262.21 +    <meta name="title" content="interos gear" />
  262.22 +    <meta name="description" content="be a part of the interos street team!" />
  262.23 +    <meta name="author" content="Brent Angeline" />
  262.24 +    <meta name="copyright" 
  262.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  262.26 +    <meta name="robots" content="index, follow, noarchive" />
  262.27 +    <title>interos gear</title>
  262.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  262.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  262.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  262.31 +          media="screen, projection" />
  262.32 +    <script type="text/javascript" src="/js/default.js"></script>
  262.33 +  </head>
  262.34 +  <body id="body">
  262.35 +    <center>
  262.36 +      <p id="navigation">
  262.37 +        <a href="/about">about</a> | 
  262.38 +        <a href="/blog">blog</a> | 
  262.39 +        <a href="/code">code</a> | 
  262.40 +        <a href="/demo">demo</a> | 
  262.41 +        <a href="/e-mail">e-mail</a> | 
  262.42 +        <a href="/faq">f.a.q.</a> | 
  262.43 +        gear | 
  262.44 +        <a href="http://www.interos.org/">home</a>
  262.45 +      </p>
  262.46 +      <table id="mainPanel">
  262.47 +        <thead>
  262.48 +          <tr>
  262.49 +            <th><center>
  262.50 +                  <h1>
  262.51 +                    <a href="http://gear.interos.org/">interos gear</a>
  262.52 +                  </h1>
  262.53 +                  <h2>
  262.54 +                    (coming soon)
  262.55 +                  </h2>
  262.56 +                </center></th>
  262.57 +          </tr>
  262.58 +        </thead>
  262.59 +        <tfoot>
  262.60 +          <tr>
  262.61 +            <td><br /></td>
  262.62 +          </tr>
  262.63 +        </tfoot>
  262.64 +        <tbody>
  262.65 +          <tr>
  262.66 +            <td><p>
  262.67 +                  Send us your suggestions for items you'd like to see 
  262.68 +                  available that sport the interos logo.  Also, let us know 
  262.69 +                  about any interesting gadgets you've enjoyed using with 
  262.70 +                  interos!
  262.71 +                </p>
  262.72 +                <center>
  262.73 +                  <p>
  262.74 +                    Please direct this information to:
  262.75 +                  </p>
  262.76 +                  <p>
  262.77 +                    <strong>
  262.78 +                      <a href="mailto:info@interos.org">info@interos.org</a>
  262.79 +                    </strong>
  262.80 +                  </p>
  262.81 +                </center></td>
  262.82 +          </tr>
  262.83 +        </tbody>
  262.84 +      </table>
  262.85 +      <p id="copyrightDates">
  262.86 +        &copy; 2001&#8211;2009 interos
  262.87 +      </p>
  262.88 +    </center>
  262.89 +  </body>
  262.90 +  <!--=====================================================================-->
  262.91 +  <!--                  Copyright and Trademark Statement                  -->
  262.92 +  <!--=====================================================================-->
  262.93 +  <!--                                                                     -->
  262.94 +  <!--          All original textual and graphical site content:           -->
  262.95 +  <!--                                                                     -->
  262.96 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  262.97 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  262.98 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  262.99 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 262.100 +  <!--  product, and service names mentioned herein may be the properties  -->
 262.101 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 262.102 +  <!--  are the properties of their respective authors.  All software      -->
 262.103 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 262.104 +  <!--                                                                     -->
 262.105 +  <!--=====================================================================-->
 262.106 +  <!--                      e-mail: info@interos.org                       -->
 262.107 +  <!--=====================================================================-->
 262.108 +</html>
   263.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   263.2 +++ b/xhtml/page/gear_interos.org_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   263.3 @@ -0,0 +1,105 @@
   263.4 +<?xml version="1.0" encoding="utf-8"?>
   263.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   263.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   263.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   263.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   263.9 +  <!--=================================================-->
  263.10 +  <!--    interos Standard Document Header - Markup    -->
  263.11 +  <!--=================================================-->
  263.12 +  <!--    URIs:  https://interos.org/gear              -->
  263.13 +  <!--           https://gear.interos.org/             -->
  263.14 +  <!--           https://www.interos.org/gear          -->
  263.15 +  <!--   Title:  interos gear                          -->
  263.16 +  <!--  Author:  Brent Angeline                        -->
  263.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  263.18 +  <!--=================================================-->
  263.19 +  <head>
  263.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  263.21 +    <meta name="title" content="interos gear" />
  263.22 +    <meta name="description" content="be a part of the interos street team!" />
  263.23 +    <meta name="author" content="Brent Angeline" />
  263.24 +    <meta name="copyright" 
  263.25 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  263.26 +    <meta name="robots" content="index, follow, noarchive" />
  263.27 +    <title>interos gear</title>
  263.28 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  263.29 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  263.30 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  263.31 +          media="screen, projection" />
  263.32 +    <script type="text/javascript" src="/js/default.js"></script>
  263.33 +  </head>
  263.34 +  <body id="body">
  263.35 +    <center>
  263.36 +      <p id="navigation">
  263.37 +        <a href="/about">about</a> | 
  263.38 +        <a href="/blog">blog</a> | 
  263.39 +        <a href="/code">code</a> | 
  263.40 +        <a href="/demo">demo</a> | 
  263.41 +        <a href="/e-mail">e-mail</a> | 
  263.42 +        <a href="/faq">f.a.q.</a> | 
  263.43 +        gear | 
  263.44 +        <a href="https://www.interos.org/">home</a>
  263.45 +      </p>
  263.46 +      <table id="mainPanel">
  263.47 +        <thead>
  263.48 +          <tr>
  263.49 +            <th><center>
  263.50 +                  <h1>
  263.51 +                    <a href="https://gear.interos.org/">interos gear</a>
  263.52 +                  </h1>
  263.53 +                  <h2>
  263.54 +                    (coming soon)
  263.55 +                  </h2>
  263.56 +                </center></th>
  263.57 +          </tr>
  263.58 +        </thead>
  263.59 +        <tfoot>
  263.60 +          <tr>
  263.61 +            <td><br /></td>
  263.62 +          </tr>
  263.63 +        </tfoot>
  263.64 +        <tbody>
  263.65 +          <tr>
  263.66 +            <td><p>
  263.67 +                  Send us your suggestions for items you'd like to see 
  263.68 +                  available that sport the interos logo.  Also, let us know 
  263.69 +                  about any interesting gadgets you've enjoyed using with 
  263.70 +                  interos!
  263.71 +                </p>
  263.72 +                <center>
  263.73 +                  <p>
  263.74 +                    Please direct this information to:
  263.75 +                  </p>
  263.76 +                  <p>
  263.77 +                    <strong>
  263.78 +                      <a href="mailto:info@interos.org">info@interos.org</a>
  263.79 +                    </strong>
  263.80 +                  </p>
  263.81 +                </center></td>
  263.82 +          </tr>
  263.83 +        </tbody>
  263.84 +      </table>
  263.85 +      <p id="copyrightDates">
  263.86 +        &copy; 2001&#8211;2009 interos
  263.87 +      </p>
  263.88 +    </center>
  263.89 +  </body>
  263.90 +  <!--=====================================================================-->
  263.91 +  <!--                  Copyright and Trademark Statement                  -->
  263.92 +  <!--=====================================================================-->
  263.93 +  <!--                                                                     -->
  263.94 +  <!--          All original textual and graphical site content:           -->
  263.95 +  <!--                                                                     -->
  263.96 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  263.97 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  263.98 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  263.99 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 263.100 +  <!--  product, and service names mentioned herein may be the properties  -->
 263.101 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 263.102 +  <!--  are the properties of their respective authors.  All software      -->
 263.103 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 263.104 +  <!--                                                                     -->
 263.105 +  <!--=====================================================================-->
 263.106 +  <!--                      e-mail: info@interos.org                       -->
 263.107 +  <!--=====================================================================-->
 263.108 +</html>
   264.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   264.2 +++ b/xhtml/page/help_interos.com.xhtml	Sat May 01 16:19:36 2010 -0400
   264.3 @@ -0,0 +1,96 @@
   264.4 +<?xml version="1.0" encoding="utf-8"?>
   264.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   264.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   264.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   264.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   264.9 +  <!--=================================================-->
  264.10 +  <!--    interos Standard Document Header - Markup    -->
  264.11 +  <!--=================================================-->
  264.12 +  <!--    URIs:  http://interos.com/help               -->
  264.13 +  <!--           http://help.interos.com/              -->
  264.14 +  <!--           http://www.interos.com/help           -->
  264.15 +  <!--   Title:  interos help                          -->
  264.16 +  <!--  Author:  Brent Angeline                        -->
  264.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  264.18 +  <!--=================================================-->
  264.19 +  <head>
  264.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  264.21 +    <meta name="title" content="interos help" />
  264.22 +    <meta name="description" content="guide to using interos" />
  264.23 +    <meta name="author" content="Brent Angeline" />
  264.24 +    <meta name="keywords" 
  264.25 +          content="interos help, interos, help, interos guide, guide" />
  264.26 +    <meta name="copyright" 
  264.27 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  264.28 +    <meta name="robots" content="index, follow, noarchive" />
  264.29 +    <title>interos help</title>
  264.30 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  264.31 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  264.32 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  264.33 +          media="screen, projection" />
  264.34 +    <script type="text/javascript" src="/js/default.js"></script>
  264.35 +  </head>
  264.36 +  <body id="body">
  264.37 +    <center>
  264.38 +      <p id="navigation">
  264.39 +        <a href="/about">about</a> | 
  264.40 +        <a href="/blog">blog</a> | 
  264.41 +        <a href="/code">code</a> | 
  264.42 +        <a href="http://interos.org/">develop</a> | 
  264.43 +        <a href="/e-mail">e-mail</a> | 
  264.44 +        <a href="/faq">f.a.q.</a> | 
  264.45 +        <a href="/gear">gear</a> | 
  264.46 +        <a href="http://www.interos.com/">home</a>
  264.47 +      </p>
  264.48 +      <table id="mainPanel">
  264.49 +        <thead>
  264.50 +          <tr>
  264.51 +            <th><center>
  264.52 +                  <h1>
  264.53 +                    <a href="http://help.interos.com/">interos help</a>
  264.54 +                  </h1>
  264.55 +                  <h2>
  264.56 +                    guide to using interos
  264.57 +                  </h2>
  264.58 +                </center></th>
  264.59 +          </tr>
  264.60 +        </thead>
  264.61 +        <tfoot>
  264.62 +          <tr>
  264.63 +            <td><br /></td>
  264.64 +          </tr>
  264.65 +        </tfoot>
  264.66 +        <tbody>
  264.67 +          <tr>
  264.68 +            <td><center>
  264.69 +                  <p>
  264.70 +                    (coming soon)
  264.71 +                  </p>
  264.72 +                </center></td>
  264.73 +          </tr>
  264.74 +        </tbody>
  264.75 +      </table>
  264.76 +      <p id="copyrightDates">
  264.77 +        &copy; 2001&#8211;2009 interos
  264.78 +      </p>
  264.79 +    </center>
  264.80 +  </body>
  264.81 +  <!--=====================================================================-->
  264.82 +  <!--                  Copyright and Trademark Statement                  -->
  264.83 +  <!--=====================================================================-->
  264.84 +  <!--                                                                     -->
  264.85 +  <!--          All original textual and graphical site content:           -->
  264.86 +  <!--                                                                     -->
  264.87 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  264.88 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  264.89 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  264.90 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  264.91 +  <!--  product, and service names mentioned herein may be the properties  -->
  264.92 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  264.93 +  <!--  are the properties of their respective authors.  All software      -->
  264.94 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  264.95 +  <!--                                                                     -->
  264.96 +  <!--=====================================================================-->
  264.97 +  <!--                      e-mail: info@interos.com                       -->
  264.98 +  <!--=====================================================================-->
  264.99 +</html>
   265.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   265.2 +++ b/xhtml/page/help_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   265.3 @@ -0,0 +1,96 @@
   265.4 +<?xml version="1.0" encoding="utf-8"?>
   265.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   265.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   265.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   265.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   265.9 +  <!--=================================================-->
  265.10 +  <!--    interos Standard Document Header - Markup    -->
  265.11 +  <!--=================================================-->
  265.12 +  <!--    URIs:  https://interos.com/help              -->
  265.13 +  <!--           https://help.interos.com/             -->
  265.14 +  <!--           https://www.interos.com/help          -->
  265.15 +  <!--   Title:  interos help                          -->
  265.16 +  <!--  Author:  Brent Angeline                        -->
  265.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  265.18 +  <!--=================================================-->
  265.19 +  <head>
  265.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  265.21 +    <meta name="title" content="interos help" />
  265.22 +    <meta name="description" content="guide to using interos" />
  265.23 +    <meta name="author" content="Brent Angeline" />
  265.24 +    <meta name="keywords" 
  265.25 +          content="interos help, interos, help, interos guide, guide" />
  265.26 +    <meta name="copyright" 
  265.27 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  265.28 +    <meta name="robots" content="index, follow, noarchive" />
  265.29 +    <title>interos help</title>
  265.30 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  265.31 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  265.32 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  265.33 +          media="screen, projection" />
  265.34 +    <script type="text/javascript" src="/js/default.js"></script>
  265.35 +  </head>
  265.36 +  <body id="body">
  265.37 +    <center>
  265.38 +      <p id="navigation">
  265.39 +        <a href="/about">about</a> | 
  265.40 +        <a href="/blog">blog</a> | 
  265.41 +        <a href="/code">code</a> | 
  265.42 +        <a href="https://interos.org/">develop</a> | 
  265.43 +        <a href="/e-mail">e-mail</a> | 
  265.44 +        <a href="/faq">f.a.q.</a> | 
  265.45 +        <a href="/gear">gear</a> | 
  265.46 +        <a href="https://www.interos.com/">home</a>
  265.47 +      </p>
  265.48 +      <table id="mainPanel">
  265.49 +        <thead>
  265.50 +          <tr>
  265.51 +            <th><center>
  265.52 +                  <h1>
  265.53 +                    <a href="https://help.interos.com/">interos help</a>
  265.54 +                  </h1>
  265.55 +                  <h2>
  265.56 +                    guide to using interos
  265.57 +                  </h2>
  265.58 +                </center></th>
  265.59 +          </tr>
  265.60 +        </thead>
  265.61 +        <tfoot>
  265.62 +          <tr>
  265.63 +            <td><br /></td>
  265.64 +          </tr>
  265.65 +        </tfoot>
  265.66 +        <tbody>
  265.67 +          <tr>
  265.68 +            <td><center>
  265.69 +                  <p>
  265.70 +                    (coming soon)
  265.71 +                  </p>
  265.72 +                </center></td>
  265.73 +          </tr>
  265.74 +        </tbody>
  265.75 +      </table>
  265.76 +      <p id="copyrightDates">
  265.77 +        &copy; 2001&#8211;2009 interos
  265.78 +      </p>
  265.79 +    </center>
  265.80 +  </body>
  265.81 +  <!--=====================================================================-->
  265.82 +  <!--                  Copyright and Trademark Statement                  -->
  265.83 +  <!--=====================================================================-->
  265.84 +  <!--                                                                     -->
  265.85 +  <!--          All original textual and graphical site content:           -->
  265.86 +  <!--                                                                     -->
  265.87 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  265.88 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  265.89 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  265.90 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  265.91 +  <!--  product, and service names mentioned herein may be the properties  -->
  265.92 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  265.93 +  <!--  are the properties of their respective authors.  All software      -->
  265.94 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  265.95 +  <!--                                                                     -->
  265.96 +  <!--=====================================================================-->
  265.97 +  <!--                      e-mail: info@interos.com                       -->
  265.98 +  <!--=====================================================================-->
  265.99 +</html>
   266.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   266.2 +++ b/xhtml/page/help_interos.org.xhtml	Sat May 01 16:19:36 2010 -0400
   266.3 @@ -0,0 +1,96 @@
   266.4 +<?xml version="1.0" encoding="utf-8"?>
   266.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   266.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   266.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   266.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   266.9 +  <!--=================================================-->
  266.10 +  <!--    interos Standard Document Header - Markup    -->
  266.11 +  <!--=================================================-->
  266.12 +  <!--    URIs:  http://interos.org/help               -->
  266.13 +  <!--           http://help.interos.org/              -->
  266.14 +  <!--           http://www.interos.org/help           -->
  266.15 +  <!--   Title:  interos help                          -->
  266.16 +  <!--  Author:  Brent Angeline                        -->
  266.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  266.18 +  <!--=================================================-->
  266.19 +  <head>
  266.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  266.21 +    <meta name="title" content="interos help" />
  266.22 +    <meta name="description" content="guide to using interos" />
  266.23 +    <meta name="author" content="Brent Angeline" />
  266.24 +    <meta name="keywords" 
  266.25 +          content="interos help, interos, help, interos guide, guide" />
  266.26 +    <meta name="copyright" 
  266.27 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  266.28 +    <meta name="robots" content="index, follow, noarchive" />
  266.29 +    <title>interos help</title>
  266.30 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  266.31 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  266.32 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  266.33 +          media="screen, projection" />
  266.34 +    <script type="text/javascript" src="/js/default.js"></script>
  266.35 +  </head>
  266.36 +  <body id="body">
  266.37 +    <center>
  266.38 +      <p id="navigation">
  266.39 +        <a href="/about">about</a> | 
  266.40 +        <a href="/blog">blog</a> | 
  266.41 +        <a href="/code">code</a> | 
  266.42 +        <a href="/forums">develop</a> | 
  266.43 +        <a href="/e-mail">e-mail</a> | 
  266.44 +        <a href="/faq">f.a.q.</a> | 
  266.45 +        <a href="/gear">gear</a> | 
  266.46 +        <a href="http://interos.org/">home</a>
  266.47 +      </p>
  266.48 +      <table id="mainPanel">
  266.49 +        <thead>
  266.50 +          <tr>
  266.51 +            <th><center>
  266.52 +                  <h1>
  266.53 +                    <a href="http://help.interos.org/">interos help</a>
  266.54 +                  </h1>
  266.55 +                  <h2>
  266.56 +                    guide to using interos
  266.57 +                  </h2>
  266.58 +                </center></th>
  266.59 +          </tr>
  266.60 +        </thead>
  266.61 +        <tfoot>
  266.62 +          <tr>
  266.63 +            <td><br /></td>
  266.64 +          </tr>
  266.65 +        </tfoot>
  266.66 +        <tbody>
  266.67 +          <tr>
  266.68 +            <td><center>
  266.69 +                  <p>
  266.70 +                    (coming soon)
  266.71 +                  </p>
  266.72 +                </center></td>
  266.73 +          </tr>
  266.74 +        </tbody>
  266.75 +      </table>
  266.76 +      <p id="copyrightDates">
  266.77 +        &copy; 2001&#8211;2009 interos
  266.78 +      </p>
  266.79 +    </center>
  266.80 +  </body>
  266.81 +  <!--=====================================================================-->
  266.82 +  <!--                  Copyright and Trademark Statement                  -->
  266.83 +  <!--=====================================================================-->
  266.84 +  <!--                                                                     -->
  266.85 +  <!--          All original textual and graphical site content:           -->
  266.86 +  <!--                                                                     -->
  266.87 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  266.88 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  266.89 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  266.90 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  266.91 +  <!--  product, and service names mentioned herein may be the properties  -->
  266.92 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  266.93 +  <!--  are the properties of their respective authors.  All software      -->
  266.94 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  266.95 +  <!--                                                                     -->
  266.96 +  <!--=====================================================================-->
  266.97 +  <!--                      e-mail: info@interos.org                       -->
  266.98 +  <!--=====================================================================-->
  266.99 +</html>
   267.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   267.2 +++ b/xhtml/page/help_interos.org_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   267.3 @@ -0,0 +1,95 @@
   267.4 +<?xml version="1.0" encoding="utf-8"?>
   267.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   267.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   267.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   267.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   267.9 +  <!--=================================================-->
  267.10 +  <!--    interos Standard Document Header - Markup    -->
  267.11 +  <!--=================================================-->
  267.12 +  <!--    URIs:  https://interos.org/help              -->
  267.13 +  <!--           https://help.interos.org/             -->
  267.14 +  <!--           https://www.interos.org/help          -->
  267.15 +  <!--   Title:  interos help                          -->
  267.16 +  <!--  Author:  Brent Angeline                        -->
  267.17 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  267.18 +  <!--=================================================-->
  267.19 +  <head>
  267.20 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  267.21 +    <meta name="title" content="interos help" />
  267.22 +    <meta name="description" content="guide to using interos" />
  267.23 +    <meta name="author" content="Brent Angeline" />
  267.24 +    <meta name="keywords" 
  267.25 +          content="interos help, interos, help, interos guide, guide" />
  267.26 +    <meta name="copyright" 
  267.27 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  267.28 +    <meta name="robots" content="index, follow, noarchive" />
  267.29 +    <title>interos help</title>
  267.30 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  267.31 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  267.32 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  267.33 +          media="screen, projection" />
  267.34 +  </head>
  267.35 +  <body id="body">
  267.36 +    <center>
  267.37 +      <p id="navigation">
  267.38 +        <a href="/about">about</a> | 
  267.39 +        <a href="/blog">blog</a> | 
  267.40 +        <a href="/code">code</a> | 
  267.41 +        <a href="/forums">develop</a> | 
  267.42 +        <a href="/e-mail">e-mail</a> | 
  267.43 +        <a href="/faq">f.a.q.</a> | 
  267.44 +        <a href="/gear">gear</a> | 
  267.45 +        <a href="https://interos.org/">home</a>
  267.46 +      </p>
  267.47 +      <table id="mainPanel">
  267.48 +        <thead>
  267.49 +          <tr>
  267.50 +            <th><center>
  267.51 +                  <h1>
  267.52 +                    <a href="https://help.interos.org/">interos help</a>
  267.53 +                  </h1>
  267.54 +                  <h2>
  267.55 +                    guide to using interos
  267.56 +                  </h2>
  267.57 +                </center></th>
  267.58 +          </tr>
  267.59 +        </thead>
  267.60 +        <tfoot>
  267.61 +          <tr>
  267.62 +            <td><br /></td>
  267.63 +          </tr>
  267.64 +        </tfoot>
  267.65 +        <tbody>
  267.66 +          <tr>
  267.67 +            <td><center>
  267.68 +                  <p>
  267.69 +                    (coming soon)
  267.70 +                  </p>
  267.71 +                </center></td>
  267.72 +          </tr>
  267.73 +        </tbody>
  267.74 +      </table>
  267.75 +      <p id="copyrightDates">
  267.76 +        &copy; 2001&#8211;2009 interos
  267.77 +      </p>
  267.78 +    </center>
  267.79 +  </body>
  267.80 +  <!--=====================================================================-->
  267.81 +  <!--                  Copyright and Trademark Statement                  -->
  267.82 +  <!--=====================================================================-->
  267.83 +  <!--                                                                     -->
  267.84 +  <!--          All original textual and graphical site content:           -->
  267.85 +  <!--                                                                     -->
  267.86 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  267.87 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  267.88 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  267.89 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  267.90 +  <!--  product, and service names mentioned herein may be the properties  -->
  267.91 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  267.92 +  <!--  are the properties of their respective authors.  All software      -->
  267.93 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  267.94 +  <!--                                                                     -->
  267.95 +  <!--=====================================================================-->
  267.96 +  <!--                      e-mail: info@interos.org                       -->
  267.97 +  <!--=====================================================================-->
  267.98 +</html>
   268.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   268.2 +++ b/xhtml/page/home_interos.com.xhtml	Sat May 01 16:19:36 2010 -0400
   268.3 @@ -0,0 +1,98 @@
   268.4 +<?xml version="1.0" encoding="utf-8"?>
   268.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   268.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   268.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   268.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   268.9 +  <!--=================================================-->
  268.10 +  <!--    interos Standard Document Header - Markup    -->
  268.11 +  <!--=================================================-->
  268.12 +  <!--    URIs:  http://interos.com/                   -->
  268.13 +  <!--           http://www.interos.com/               -->
  268.14 +  <!--   Title:  interos                               -->
  268.15 +  <!--  Author:  Brent Angeline                        -->
  268.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  268.17 +  <!--=================================================-->
  268.18 +  <head>
  268.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  268.20 +    <meta name="title" content="interos" />
  268.21 +    <meta name="description" content="internet operating system" />
  268.22 +    <meta name="author" content="Brent Angeline" />
  268.23 +    <meta name="copyright" 
  268.24 +          content="Copyright &copy; 2001-2010 Brent Angeline and interos LLC" />
  268.25 +    <meta name="robots" content="index, follow, noarchive" />
  268.26 +    <title>interos</title>
  268.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  268.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  268.29 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  268.30 +          media="screen, projection" />
  268.31 +    <script type="text/javascript" src="/js/home.js"></script>
  268.32 +  </head>
  268.33 +  <body id="body">
  268.34 +    <center>
  268.35 +      <p id="navigation">
  268.36 +        <a href="/about">about</a> | 
  268.37 +        <a href="/blog">blog</a> | 
  268.38 +        <a href="/code">code</a> | 
  268.39 +        <a href="http://interos.org/">develop</a> | 
  268.40 +        <a href="/e-mail">e-mail</a> | 
  268.41 +        <a href="/faq">f.a.q.</a> | 
  268.42 +        <a href="/gear">gear</a> | 
  268.43 +        home
  268.44 +      </p>
  268.45 +      <table id="mainPanel">
  268.46 +        <thead>
  268.47 +          <tr>
  268.48 +            <th><center>
  268.49 +                  <div id="title">
  268.50 +                    <h1>
  268.51 +                      <a href="/">interos</a>
  268.52 +                    </h1>
  268.53 +                  </div>
  268.54 +                  <h2>
  268.55 +                    internet operating system
  268.56 +                  </h2>
  268.57 +                </center></th>
  268.58 +          </tr>
  268.59 +        </thead>
  268.60 +        <tfoot>
  268.61 +          <tr>
  268.62 +            <td><br /></td>
  268.63 +          </tr>
  268.64 +        </tfoot>
  268.65 +        <tbody>
  268.66 +          <tr>
  268.67 +            <td><center>
  268.68 +                  <p>
  268.69 +                    <strong>
  268.70 +                      <a href="https://www.interos.com/">click here for a<br />
  268.71 +                      sneak preview &raquo;</a>
  268.72 +                    </strong>
  268.73 +                  </p>
  268.74 +                </center></td>
  268.75 +          </tr>
  268.76 +        </tbody>
  268.77 +      </table>
  268.78 +      <p id="copyrightDates">
  268.79 +        &copy; 2001&#8211;2010 interos
  268.80 +      </p>
  268.81 +    </center>
  268.82 +  </body>
  268.83 +  <!--=====================================================================-->
  268.84 +  <!--                  Copyright and Trademark Statement                  -->
  268.85 +  <!--=====================================================================-->
  268.86 +  <!--                                                                     -->
  268.87 +  <!--          All original textual and graphical site content:           -->
  268.88 +  <!--                                                                     -->
  268.89 +  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->
  268.90 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  268.91 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  268.92 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  268.93 +  <!--  product, and service names mentioned herein may be the properties  -->
  268.94 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  268.95 +  <!--  are the properties of their respective authors.  All software      -->
  268.96 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  268.97 +  <!--                                                                     -->
  268.98 +  <!--=====================================================================-->
  268.99 +  <!--                      e-mail: info@interos.com                       -->
 268.100 +  <!--=====================================================================-->
 268.101 +</html>
   269.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   269.2 +++ b/xhtml/page/home_interos.com_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   269.3 @@ -0,0 +1,98 @@
   269.4 +<?xml version="1.0" encoding="utf-8"?>
   269.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   269.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   269.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   269.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   269.9 +  <!--=================================================-->
  269.10 +  <!--    interos Standard Document Header - Markup    -->
  269.11 +  <!--=================================================-->
  269.12 +  <!--    URIs:  https://interos.com/                  -->
  269.13 +  <!--           https://www.interos.com/              -->
  269.14 +  <!--   Title:  interos                               -->
  269.15 +  <!--  Author:  Brent Angeline                        -->
  269.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  269.17 +  <!--=================================================-->
  269.18 +  <head>
  269.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  269.20 +    <meta name="title" content="interos" />
  269.21 +    <meta name="description" content="internet operating system" />
  269.22 +    <meta name="author" content="Brent Angeline" />
  269.23 +    <meta name="copyright" 
  269.24 +          content="Copyright &copy; 2001-2010 Brent Angeline and interos LLC" />
  269.25 +    <meta name="robots" content="index, follow, noarchive" />
  269.26 +    <title>interos</title>
  269.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  269.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  269.29 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  269.30 +          media="screen, projection" />
  269.31 +    <script type="text/javascript" src="/js/home.js"></script>
  269.32 +  </head>
  269.33 +  <body id="body">
  269.34 +    <center>
  269.35 +      <p id="navigation">
  269.36 +        <a href="/about">about</a> | 
  269.37 +        <a href="/blog">blog</a> | 
  269.38 +        <a href="/code">code</a> | 
  269.39 +        <a href="/demo">demo</a> | 
  269.40 +        <a href="/e-mail">e-mail</a> | 
  269.41 +        <a href="/faq">f.a.q.</a> | 
  269.42 +        <a href="/gear">gear</a> | 
  269.43 +        home
  269.44 +      </p>
  269.45 +      <table id="mainPanel">
  269.46 +        <thead>
  269.47 +          <tr>
  269.48 +            <th><center>
  269.49 +                  <div id="title">
  269.50 +                    <h1>
  269.51 +                      <a href="/">interos</a>
  269.52 +                    </h1>
  269.53 +                  </div>
  269.54 +                  <h2>
  269.55 +                    internet operating system
  269.56 +                  </h2>
  269.57 +                </center></th>
  269.58 +          </tr>
  269.59 +        </thead>
  269.60 +        <tfoot>
  269.61 +          <tr>
  269.62 +            <td><br /></td>
  269.63 +          </tr>
  269.64 +        </tfoot>
  269.65 +        <tbody>
  269.66 +          <tr>
  269.67 +            <td><center>
  269.68 +                  <p>
  269.69 +                    <strong>
  269.70 +                      <a href="/demo">click here for a<br />
  269.71 +                      sneak preview &raquo;</a>
  269.72 +                    </strong>
  269.73 +                  </p>
  269.74 +                </center></td>
  269.75 +          </tr>
  269.76 +        </tbody>
  269.77 +      </table>
  269.78 +      <p id="copyrightDates">
  269.79 +        &copy; 2001&#8211;2010 interos
  269.80 +      </p>
  269.81 +    </center>
  269.82 +  </body>
  269.83 +  <!--=====================================================================-->
  269.84 +  <!--                  Copyright and Trademark Statement                  -->
  269.85 +  <!--=====================================================================-->
  269.86 +  <!--                                                                     -->
  269.87 +  <!--          All original textual and graphical site content:           -->
  269.88 +  <!--                                                                     -->
  269.89 +  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->
  269.90 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  269.91 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  269.92 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  269.93 +  <!--  product, and service names mentioned herein may be the properties  -->
  269.94 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  269.95 +  <!--  are the properties of their respective authors.  All software      -->
  269.96 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  269.97 +  <!--                                                                     -->
  269.98 +  <!--=====================================================================-->
  269.99 +  <!--                      e-mail: info@interos.com                       -->
 269.100 +  <!--=====================================================================-->
 269.101 +</html>
   270.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   270.2 +++ b/xhtml/page/home_interos.org.xhtml	Sat May 01 16:19:36 2010 -0400
   270.3 @@ -0,0 +1,215 @@
   270.4 +<?xml version="1.0" encoding="utf-8"?>
   270.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   270.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   270.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   270.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   270.9 +  <!--=================================================-->
  270.10 +  <!--    interos Standard Document Header - Markup    -->
  270.11 +  <!--=================================================-->
  270.12 +  <!--    URIs:  http://interos.org/                   -->
  270.13 +  <!--           http://www.interos.org/               -->
  270.14 +  <!--   Title:  interos.org                           -->
  270.15 +  <!--  Author:  Brent Angeline                        -->
  270.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  270.17 +  <!--=================================================-->
  270.18 +  <head>
  270.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  270.20 +    <meta name="title" content="interos.org" />
  270.21 +    <meta name="description" content="internet open source" />
  270.22 +    <meta name="author" content="Brent Angeline" />
  270.23 +    <meta name="copyright" 
  270.24 +          content="Copyright &copy; 2001-2010 Brent Angeline and interos LLC" />
  270.25 +    <meta name="robots" content="index, follow, noarchive" />
  270.26 +    <title>interos.org</title>
  270.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  270.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  270.29 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  270.30 +          media="screen, projection" />
  270.31 +    <script type="text/javascript" src="/js/default.js"></script>
  270.32 +    <style type="text/css">
  270.33 +      #toolkit {
  270.34 +        width: 28em;
  270.35 +        background: white;
  270.36 +	margin-top: 19px;
  270.37 +	border-right: 1px solid black;
  270.38 +	border-bottom: 1px solid black;
  270.39 +	border-left: 1px solid gray;
  270.40 +      }
  270.41 +      #logo {
  270.42 +        float: left;
  270.43 +        margin-top: 5px;
  270.44 +        margin-left: 5px;
  270.45 +      }
  270.46 +      #toolkit h3 {
  270.47 +        background: orange url(/style/images/box/highlight.gif) repeat-x;
  270.48 +        border-top: 1px solid gray;
  270.49 +	border-bottom: 1px solid black;
  270.50 +	margin-top: 0;
  270.51 +	padding-left: 10px;
  270.52 +	padding-right: 10px;
  270.53 +      }
  270.54 +      #toolkit td {
  270.55 +        text-align: center;
  270.56 +	vertical-align: middle;
  270.57 +      }
  270.58 +      #toolkit a {
  270.59 +        font-weight: bold;
  270.60 +        text-decoration: underline;
  270.61 +      }
  270.62 +      #toolkit a:hover {
  270.63 +        color: white;
  270.64 +      }
  270.65 +      #toolkit a:active {
  270.66 +        color: black;
  270.67 +      }
  270.68 +      a#wiki {
  270.69 +        color: blue;
  270.70 +      }
  270.71 +      a#wiki:hover {
  270.72 +        background: blue;
  270.73 +      }
  270.74 +      a#planet {
  270.75 +        color: green;
  270.76 +      }
  270.77 +      a#planet:hover {
  270.78 +        background: green;
  270.79 +      }
  270.80 +      a#source {
  270.81 +        color: red;
  270.82 +      }
  270.83 +      a#source:hover {
  270.84 +        background: red;
  270.85 +      }
  270.86 +      a#doc {
  270.87 +        color: #ada900;
  270.88 +      }
  270.89 +      a#doc:hover {
  270.90 +        background: #ada900;
  270.91 +      }
  270.92 +      a#forums {
  270.93 +        color: #e47100;
  270.94 +      }
  270.95 +      a#forums:hover {
  270.96 +        background: #e47100;
  270.97 +      }
  270.98 +      a#irc {
  270.99 +        color: purple;
 270.100 +      }
 270.101 +      a#irc:hover {
 270.102 +        background: purple;
 270.103 +      }
 270.104 +    </style>
 270.105 +  </head>
 270.106 +  <body id="body">
 270.107 +    <center>
 270.108 +      <p id="navigation">
 270.109 +        <a href="/about">about</a> | 
 270.110 +        <a href="/blog">blog</a> | 
 270.111 +        <a href="/code">code</a> | 
 270.112 +        <a href="/forums">develop</a> | 
 270.113 +        <a href="/e-mail">e-mail</a> | 
 270.114 +        <a href="/faq">f.a.q.</a> | 
 270.115 +        <a href="/gear">gear</a> | 
 270.116 +        home
 270.117 +      </p>
 270.118 +      <table id="mainPanel">
 270.119 +        <thead>
 270.120 +          <tr>
 270.121 +            <th><center>
 270.122 +                  <h1>
 270.123 +                    <a href="/">interos.org</a>
 270.124 +                  </h1>
 270.125 +                  <h2>
 270.126 +                    internet open source
 270.127 +                  </h2>
 270.128 +                </center></th>
 270.129 +          </tr>
 270.130 +        </thead>
 270.131 +        <tfoot>
 270.132 +          <tr>
 270.133 +            <td><center>
 270.134 +                  <p>
 270.135 +                    see also: 
 270.136 +                    <strong>
 270.137 +                      <a href="http://www.interos.com/">interos.com</a>
 270.138 +                    </strong>
 270.139 +                  </p>
 270.140 +                </center></td>
 270.141 +          </tr>
 270.142 +        </tfoot>
 270.143 +        <tbody>
 270.144 +          <tr>
 270.145 +            <td><center>
 270.146 +                  <div id="toolkit">
 270.147 +                    <div id="logo">
 270.148 +                      <img src="/images/interos.org_logo.png" 
 270.149 +                           alt="interos.org logo" width="116" height="116" />
 270.150 +                    </div>
 270.151 +                    <h3>
 270.152 +                      development community toolkit
 270.153 +                    </h3>
 270.154 +                    <table>
 270.155 +                      <tr>
 270.156 +                        <td rowspan="3"><div>
 270.157 +                            <a id="wiki" 
 270.158 +                               href="http://wiki.interos.org/">wiki</a>
 270.159 +                          </div></td>
 270.160 +                        <td><div>
 270.161 +                            <a id="planet" 
 270.162 +                               href="http://planet.interos.org/">planet</a>
 270.163 +                          </div></td>
 270.164 +                        <td><div>
 270.165 +                            <a id="source" 
 270.166 +                               href="http://source.interos.org/">source</a>
 270.167 +                          </div></td>
 270.168 +                        <td rowspan="3"><div>
 270.169 +                            <a id="doc" 
 270.170 +                               href="http://doc.interos.org/">doc</a>
 270.171 +                          </div></td>
 270.172 +                      </tr>
 270.173 +                      <tr>
 270.174 +                        <td colspan="2"><br /></td>
 270.175 +                      </tr>
 270.176 +                      <tr>
 270.177 +                        <td><div>
 270.178 +                            <a id="forums" 
 270.179 +                               href="http://forums.interos.org/">forums</a>
 270.180 +                          </div></td>
 270.181 +                        <td><div>
 270.182 +                            <a id="irc" 
 270.183 +                               href="http://wiki.interos.org/view/IRC">irc</a>
 270.184 +                          </div></td>
 270.185 +                      </tr>
 270.186 +                      <tr>
 270.187 +                        <td colspan="4"><br /></td>
 270.188 +                      </tr>
 270.189 +                    </table>
 270.190 +		  </div>
 270.191 +              </center></td>
 270.192 +          </tr>
 270.193 +        </tbody>
 270.194 +      </table>
 270.195 +      <p id="copyrightDates">
 270.196 +        &copy; 2001&#8211;2010 interos
 270.197 +      </p>
 270.198 +    </center>
 270.199 +  </body>
 270.200 +  <!--=====================================================================-->
 270.201 +  <!--                  Copyright and Trademark Statement                  -->
 270.202 +  <!--=====================================================================-->
 270.203 +  <!--                                                                     -->
 270.204 +  <!--          All original textual and graphical site content:           -->
 270.205 +  <!--                                                                     -->
 270.206 +  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->
 270.207 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 270.208 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 270.209 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 270.210 +  <!--  product, and service names mentioned herein may be the properties  -->
 270.211 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 270.212 +  <!--  are the properties of their respective authors.  All software      -->
 270.213 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 270.214 +  <!--                                                                     -->
 270.215 +  <!--=====================================================================-->
 270.216 +  <!--                      e-mail: info@interos.org                       -->
 270.217 +  <!--=====================================================================-->
 270.218 +</html>
   271.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   271.2 +++ b/xhtml/page/home_interos.org_old.xhtml	Sat May 01 16:19:36 2010 -0400
   271.3 @@ -0,0 +1,103 @@
   271.4 +<?xml version="1.0" encoding="utf-8"?>
   271.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   271.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   271.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   271.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   271.9 +  <!--=================================================-->
  271.10 +  <!--    interos Standard Document Header - Markup    -->
  271.11 +  <!--=================================================-->
  271.12 +  <!--    URIs:  http://interos.org/                   -->
  271.13 +  <!--           http://www.interos.org/               -->
  271.14 +  <!--   Title:  interos.org                           -->
  271.15 +  <!--  Author:  Brent Angeline                        -->
  271.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  271.17 +  <!--=================================================-->
  271.18 +  <head>
  271.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  271.20 +    <meta name="title" content="interos.org" />
  271.21 +    <meta name="description" content="internet open source" />
  271.22 +    <meta name="author" content="Brent Angeline" />
  271.23 +    <meta name="copyright" 
  271.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  271.25 +    <meta name="robots" content="index, follow, noarchive" />
  271.26 +    <title>interos.org</title>
  271.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  271.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  271.29 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  271.30 +          media="screen, projection" />
  271.31 +    <script type="text/javascript" src="/js/default.js"></script>
  271.32 +  </head>
  271.33 +  <body id="body">
  271.34 +    <center>
  271.35 +      <p id="navigation">
  271.36 +        <a href="/about">about</a> | 
  271.37 +        <a href="/blog">blog</a> | 
  271.38 +        <a href="/code">code</a> | 
  271.39 +        <a href="/forums">develop</a> | 
  271.40 +        <a href="/e-mail">e-mail</a> | 
  271.41 +        <a href="/faq">f.a.q.</a> | 
  271.42 +        <a href="/gear">gear</a> | 
  271.43 +        home
  271.44 +      </p>
  271.45 +      <table id="mainPanel">
  271.46 +        <thead>
  271.47 +          <tr>
  271.48 +            <th><center>
  271.49 +                  <h1>
  271.50 +                    <a href="/">interos.org</a>
  271.51 +                  </h1>
  271.52 +                  <h2>
  271.53 +                    internet open source
  271.54 +                  </h2>
  271.55 +                </center></th>
  271.56 +          </tr>
  271.57 +        </thead>
  271.58 +        <tfoot>
  271.59 +          <tr>
  271.60 +            <td><br /></td>
  271.61 +          </tr>
  271.62 +        </tfoot>
  271.63 +        <tbody>
  271.64 +          <tr>
  271.65 +            <td><center>
  271.66 +                  <p>
  271.67 +                    A <strong><a href="http://www.interos.com/demo">sneak 
  271.68 +                    preview</a></strong> of interos is now available!
  271.69 +                  </p>
  271.70 +                  <p>
  271.71 +                    For information on developing free and open Java and Flash 
  271.72 +                    applications for interos, please contact:
  271.73 +                  </p>
  271.74 +                  <p>
  271.75 +                    <strong>
  271.76 +                      <a href="mailto:info@interos.org">info@interos.org</a>
  271.77 +                    </strong>
  271.78 +                  </p>
  271.79 +                </center></td>
  271.80 +          </tr>
  271.81 +        </tbody>
  271.82 +      </table>
  271.83 +      <p id="copyrightDates">
  271.84 +        &copy; 2001&#8211;2009 interos
  271.85 +      </p>
  271.86 +    </center>
  271.87 +  </body>
  271.88 +  <!--=====================================================================-->
  271.89 +  <!--                  Copyright and Trademark Statement                  -->
  271.90 +  <!--=====================================================================-->
  271.91 +  <!--                                                                     -->
  271.92 +  <!--          All original textual and graphical site content:           -->
  271.93 +  <!--                                                                     -->
  271.94 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  271.95 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  271.96 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  271.97 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  271.98 +  <!--  product, and service names mentioned herein may be the properties  -->
  271.99 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 271.100 +  <!--  are the properties of their respective authors.  All software      -->
 271.101 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 271.102 +  <!--                                                                     -->
 271.103 +  <!--=====================================================================-->
 271.104 +  <!--                      e-mail: info@interos.org                       -->
 271.105 +  <!--=====================================================================-->
 271.106 +</html>
   272.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   272.2 +++ b/xhtml/page/home_interos.org_ssl.xhtml	Sat May 01 16:19:36 2010 -0400
   272.3 @@ -0,0 +1,215 @@
   272.4 +<?xml version="1.0" encoding="utf-8"?>
   272.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   272.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   272.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   272.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   272.9 +  <!--=================================================-->
  272.10 +  <!--    interos Standard Document Header - Markup    -->
  272.11 +  <!--=================================================-->
  272.12 +  <!--    URIs:  https://interos.org/                  -->
  272.13 +  <!--           https://www.interos.org/              -->
  272.14 +  <!--   Title:  interos.org                           -->
  272.15 +  <!--  Author:  Brent Angeline                        -->
  272.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  272.17 +  <!--=================================================-->
  272.18 +  <head>
  272.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  272.20 +    <meta name="title" content="interos.org" />
  272.21 +    <meta name="description" content="internet open source" />
  272.22 +    <meta name="author" content="Brent Angeline" />
  272.23 +    <meta name="copyright" 
  272.24 +          content="Copyright &copy; 2001-2010 Brent Angeline and interos LLC" />
  272.25 +    <meta name="robots" content="index, follow, noarchive" />
  272.26 +    <title>interos.org</title>
  272.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  272.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  272.29 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  272.30 +          media="screen, projection" />
  272.31 +    <script type="text/javascript" src="/js/default.js"></script>
  272.32 +    <style type="text/css">
  272.33 +      #toolkit {
  272.34 +        width: 28em;
  272.35 +        background: white;
  272.36 +	margin-top: 19px;
  272.37 +	border-right: 1px solid black;
  272.38 +	border-bottom: 1px solid black;
  272.39 +	border-left: 1px solid gray;
  272.40 +      }
  272.41 +      #logo {
  272.42 +        float: left;
  272.43 +        margin-top: 5px;
  272.44 +        margin-left: 5px;
  272.45 +      }
  272.46 +      #toolkit h3 {
  272.47 +        background: orange url(/style/images/box/highlight.gif) repeat-x;
  272.48 +        border-top: 1px solid gray;
  272.49 +	border-bottom: 1px solid black;
  272.50 +	margin-top: 0;
  272.51 +	padding-left: 10px;
  272.52 +	padding-right: 10px;
  272.53 +      }
  272.54 +      #toolkit td {
  272.55 +        text-align: center;
  272.56 +	vertical-align: middle;
  272.57 +      }
  272.58 +      #toolkit a {
  272.59 +        font-weight: bold;
  272.60 +        text-decoration: underline;
  272.61 +      }
  272.62 +      #toolkit a:hover {
  272.63 +        color: white;
  272.64 +      }
  272.65 +      #toolkit a:active {
  272.66 +        color: black;
  272.67 +      }
  272.68 +      a#wiki {
  272.69 +        color: blue;
  272.70 +      }
  272.71 +      a#wiki:hover {
  272.72 +        background: blue;
  272.73 +      }
  272.74 +      a#planet {
  272.75 +        color: green;
  272.76 +      }
  272.77 +      a#planet:hover {
  272.78 +        background: green;
  272.79 +      }
  272.80 +      a#source {
  272.81 +        color: red;
  272.82 +      }
  272.83 +      a#source:hover {
  272.84 +        background: red;
  272.85 +      }
  272.86 +      a#doc {
  272.87 +        color: #ada900;
  272.88 +      }
  272.89 +      a#doc:hover {
  272.90 +        background: #ada900;
  272.91 +      }
  272.92 +      a#forums {
  272.93 +        color: #e47100;
  272.94 +      }
  272.95 +      a#forums:hover {
  272.96 +        background: #e47100;
  272.97 +      }
  272.98 +      a#irc {
  272.99 +        color: purple;
 272.100 +      }
 272.101 +      a#irc:hover {
 272.102 +        background: purple;
 272.103 +      }
 272.104 +    </style>
 272.105 +  </head>
 272.106 +  <body id="body">
 272.107 +    <center>
 272.108 +      <p id="navigation">
 272.109 +        <a href="/about">about</a> | 
 272.110 +        <a href="/blog">blog</a> | 
 272.111 +        <a href="/code">code</a> | 
 272.112 +        <a href="/forums">develop</a> | 
 272.113 +        <a href="/e-mail">e-mail</a> | 
 272.114 +        <a href="/faq">f.a.q.</a> | 
 272.115 +        <a href="/gear">gear</a> | 
 272.116 +        home
 272.117 +      </p>
 272.118 +      <table id="mainPanel">
 272.119 +        <thead>
 272.120 +          <tr>
 272.121 +            <th><center>
 272.122 +                  <h1>
 272.123 +                    <a href="/">interos.org</a>
 272.124 +                  </h1>
 272.125 +                  <h2>
 272.126 +                    internet open source
 272.127 +                  </h2>
 272.128 +                </center></th>
 272.129 +          </tr>
 272.130 +        </thead>
 272.131 +        <tfoot>
 272.132 +          <tr>
 272.133 +            <td><center>
 272.134 +                  <p>
 272.135 +                    see also: 
 272.136 +                    <strong>
 272.137 +                      <a href="https://www.interos.com/">interos.com</a>
 272.138 +                    </strong>
 272.139 +                  </p>
 272.140 +                </center></td>
 272.141 +          </tr>
 272.142 +        </tfoot>
 272.143 +        <tbody>
 272.144 +          <tr>
 272.145 +            <td><center>
 272.146 +                  <div id="toolkit">
 272.147 +                    <div id="logo">
 272.148 +                      <img src="/images/interos.org_logo.png" 
 272.149 +                           alt="interos.org logo" width="116" height="116" />
 272.150 +                    </div>
 272.151 +                    <h3>
 272.152 +                      development community toolkit
 272.153 +                    </h3>
 272.154 +                    <table>
 272.155 +                      <tr>
 272.156 +                        <td rowspan="3"><div>
 272.157 +                            <a id="wiki" 
 272.158 +                               href="http://wiki.interos.org/">wiki</a>
 272.159 +                          </div></td>
 272.160 +                        <td><div>
 272.161 +                            <a id="planet" 
 272.162 +                               href="http://planet.interos.org/">planet</a>
 272.163 +                          </div></td>
 272.164 +                        <td><div>
 272.165 +                            <a id="source" 
 272.166 +                               href="http://source.interos.org/">source</a>
 272.167 +                          </div></td>
 272.168 +                        <td rowspan="3"><div>
 272.169 +                            <a id="doc" 
 272.170 +                               href="http://doc.interos.org/">doc</a>
 272.171 +                          </div></td>
 272.172 +                      </tr>
 272.173 +                      <tr>
 272.174 +                        <td colspan="2"><br /></td>
 272.175 +                      </tr>
 272.176 +                      <tr>
 272.177 +                        <td><div>
 272.178 +                            <a id="forums" 
 272.179 +                               href="http://forums.interos.org/">forums</a>
 272.180 +                          </div></td>
 272.181 +                        <td><div>
 272.182 +                            <a id="irc" 
 272.183 +                               href="http://wiki.interos.org/view/IRC">irc</a>
 272.184 +                          </div></td>
 272.185 +                      </tr>
 272.186 +                      <tr>
 272.187 +                        <td colspan="4"><br /></td>
 272.188 +                      </tr>
 272.189 +                    </table>
 272.190 +		  </div>
 272.191 +              </center></td>
 272.192 +          </tr>
 272.193 +        </tbody>
 272.194 +      </table>
 272.195 +      <p id="copyrightDates">
 272.196 +        &copy; 2001&#8211;2010 interos
 272.197 +      </p>
 272.198 +    </center>
 272.199 +  </body>
 272.200 +  <!--=====================================================================-->
 272.201 +  <!--                  Copyright and Trademark Statement                  -->
 272.202 +  <!--=====================================================================-->
 272.203 +  <!--                                                                     -->
 272.204 +  <!--          All original textual and graphical site content:           -->
 272.205 +  <!--                                                                     -->
 272.206 +  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->
 272.207 +  <!--  reserved.  Reproduction in whole or in part without written        -->
 272.208 +  <!--  permission is prohibited.  interos and the interos logos are       -->
 272.209 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
 272.210 +  <!--  product, and service names mentioned herein may be the properties  -->
 272.211 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 272.212 +  <!--  are the properties of their respective authors.  All software      -->
 272.213 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 272.214 +  <!--                                                                     -->
 272.215 +  <!--=====================================================================-->
 272.216 +  <!--                      e-mail: info@interos.org                       -->
 272.217 +  <!--=====================================================================-->
 272.218 +</html>
   273.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   273.2 +++ b/xhtml/page/home_interos.org_ssl_old.xhtml	Sat May 01 16:19:36 2010 -0400
   273.3 @@ -0,0 +1,103 @@
   273.4 +<?xml version="1.0" encoding="utf-8"?>
   273.5 +<?xml-stylesheet type="text/css" href="/style/default.css"?>
   273.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   273.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   273.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   273.9 +  <!--=================================================-->
  273.10 +  <!--    interos Standard Document Header - Markup    -->
  273.11 +  <!--=================================================-->
  273.12 +  <!--    URIs:  https://interos.org/                  -->
  273.13 +  <!--           https://www.interos.org/              -->
  273.14 +  <!--   Title:  interos.org                           -->
  273.15 +  <!--  Author:  Brent Angeline                        -->
  273.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  273.17 +  <!--=================================================-->
  273.18 +  <head>
  273.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  273.20 +    <meta name="title" content="interos.org" />
  273.21 +    <meta name="description" content="internet open source" />
  273.22 +    <meta name="author" content="Brent Angeline" />
  273.23 +    <meta name="copyright" 
  273.24 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  273.25 +    <meta name="robots" content="index, follow, noarchive" />
  273.26 +    <title>interos.org</title>
  273.27 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  273.28 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  273.29 +    <link rel="stylesheet" type="text/css" href="/style/default.css" 
  273.30 +          media="screen, projection" />
  273.31 +    <script type="text/javascript" src="/js/default.js"></script>
  273.32 +  </head>
  273.33 +  <body id="body">
  273.34 +    <center>
  273.35 +      <p id="navigation">
  273.36 +        <a href="/about">about</a> | 
  273.37 +        <a href="/blog">blog</a> | 
  273.38 +        <a href="/code">code</a> | 
  273.39 +        <a href="/forums">develop</a> | 
  273.40 +        <a href="/e-mail">e-mail</a> | 
  273.41 +        <a href="/faq">f.a.q.</a> | 
  273.42 +        <a href="/gear">gear</a> | 
  273.43 +        home
  273.44 +      </p>
  273.45 +      <table id="mainPanel">
  273.46 +        <thead>
  273.47 +          <tr>
  273.48 +            <th><center>
  273.49 +                  <h1>
  273.50 +                    <a href="/">interos.org</a>
  273.51 +                  </h1>
  273.52 +                  <h2>
  273.53 +                    internet open source
  273.54 +                  </h2>
  273.55 +                </center></th>
  273.56 +          </tr>
  273.57 +        </thead>
  273.58 +        <tfoot>
  273.59 +          <tr>
  273.60 +            <td><br /></td>
  273.61 +          </tr>
  273.62 +        </tfoot>
  273.63 +        <tbody>
  273.64 +          <tr>
  273.65 +            <td><center>
  273.66 +                  <p>
  273.67 +                    A <strong><a href="https://www.interos.com/demo">sneak 
  273.68 +                    preview</a></strong> of interos is now available!
  273.69 +                  </p>
  273.70 +                  <p>
  273.71 +                    For information on developing free and open Java and Flash 
  273.72 +                    applications for interos, please contact:
  273.73 +                  </p>
  273.74 +                  <p>
  273.75 +                    <strong>
  273.76 +                      <a href="mailto:info@interos.org">info@interos.org</a>
  273.77 +                    </strong>
  273.78 +                  </p>
  273.79 +                </center></td>
  273.80 +          </tr>
  273.81 +        </tbody>
  273.82 +      </table>
  273.83 +      <p id="copyrightDates">
  273.84 +        &copy; 2001&#8211;2009 interos
  273.85 +      </p>
  273.86 +    </center>
  273.87 +  </body>
  273.88 +  <!--=====================================================================-->
  273.89 +  <!--                  Copyright and Trademark Statement                  -->
  273.90 +  <!--=====================================================================-->
  273.91 +  <!--                                                                     -->
  273.92 +  <!--          All original textual and graphical site content:           -->
  273.93 +  <!--                                                                     -->
  273.94 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  273.95 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  273.96 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  273.97 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  273.98 +  <!--  product, and service names mentioned herein may be the properties  -->
  273.99 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
 273.100 +  <!--  are the properties of their respective authors.  All software      -->
 273.101 +  <!--  developed in the forums is open source and belongs to everyone.    -->
 273.102 +  <!--                                                                     -->
 273.103 +  <!--=====================================================================-->
 273.104 +  <!--                      e-mail: info@interos.org                       -->
 273.105 +  <!--=====================================================================-->
 273.106 +</html>
   274.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   274.2 +++ b/xhtml/template.xhtml	Sat May 01 16:19:36 2010 -0400
   274.3 @@ -0,0 +1,53 @@
   274.4 +<?xml version="1.0" encoding="utf-8"?>
   274.5 +<?xml-stylesheet type="text/css" href="/sys/style/.css"?>
   274.6 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   274.7 +                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   274.8 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
   274.9 +  <!--=================================================-->
  274.10 +  <!--    interos Standard Document Header - Markup    -->
  274.11 +  <!--=================================================-->
  274.12 +  <!--    URIs:  http://interos.                       -->
  274.13 +  <!--           http://www.                           -->
  274.14 +  <!--   Title:  interos                               -->
  274.15 +  <!--  Author:  Brent Angeline                        -->
  274.16 +  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->
  274.17 +  <!--=================================================-->
  274.18 +  <head>
  274.19 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  274.20 +    <meta name="title" content="interos " />
  274.21 +    <meta name="description" content=" " />
  274.22 +    <meta name="author" content="Brent Angeline" />
  274.23 +    <meta name="keywords" 
  274.24 +          content=" " />
  274.25 +    <meta name="copyright" 
  274.26 +          content="Copyright &copy; 2001-2009 Brent Angeline and interos LLC" />
  274.27 +    <meta name="robots" content="index, nofollow, noarchive" />
  274.28 +    <title>interos </title>
  274.29 +    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  274.30 +    <link rel="icon" type="image/gif" href="/images/favicon.gif" />
  274.31 +    <link rel="stylesheet" type="text/css" href="/style/.css" 
  274.32 +          media="screen, projection" />
  274.33 +    <script type="text/javascript" src="/js/.js"></script>
  274.34 +  </head>
  274.35 +  <body>
  274.36 +    
  274.37 +  </body>
  274.38 +  <!--=====================================================================-->
  274.39 +  <!--                  Copyright and Trademark Statement                  -->
  274.40 +  <!--=====================================================================-->
  274.41 +  <!--                                                                     -->
  274.42 +  <!--          All original textual and graphical site content:           -->
  274.43 +  <!--                                                                     -->
  274.44 +  <!--  Copyright 2001-2009 Brent Angeline and interos LLC.  All rights    -->
  274.45 +  <!--  reserved.  Reproduction in whole or in part without written        -->
  274.46 +  <!--  permission is prohibited.  interos and the interos logos are       -->
  274.47 +  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->
  274.48 +  <!--  product, and service names mentioned herein may be the properties  -->
  274.49 +  <!--  of their respective owners.  Comments in the interos.org forums    -->
  274.50 +  <!--  are the properties of their respective authors.  All software      -->
  274.51 +  <!--  developed in the forums is open source and belongs to everyone.    -->
  274.52 +  <!--                                                                     -->
  274.53 +  <!--=====================================================================-->
  274.54 +  <!--                      e-mail: info@interos.                          -->
  274.55 +  <!--=====================================================================-->
  274.56 +</html>
   275.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   275.2 +++ b/xml/c/access_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
   275.3 @@ -0,0 +1,315 @@
   275.4 +/******************************************************/
   275.5 +/*    interos Standard Document Header - CGI in C     */
   275.6 +/******************************************************/
   275.7 +/*         File:  access                              */
   275.8 +/*       Source:  access.c                            */
   275.9 +/*  Description:  FastCGI for interos access checker  */
  275.10 +/*       Author:  Brent Angeline                      */
  275.11 +/*          CGI:  FastCGI in ISO/ANSI C               */
  275.12 +/******************************************************/
  275.13 +
  275.14 +/* PREPROCESSOR DIRECTIVES */
  275.15 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen()                                */
  275.16 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
  275.17 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
  275.18 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen(), strncmp()                        */
  275.19 +#include <unistd.h>         /*  F_OK, access()                                                           */
  275.20 +
  275.21 +/* FUNCTION PROTOTYPE DECLARATIONS */
  275.22 +static void DenyAccess(void);
  275.23 +static void GrantAccess(void);
  275.24 +
  275.25 +/* BEGIN MAIN PROGRAM */
  275.26 +int main(void) {
  275.27 +
  275.28 +  /* BEGIN FASTCGI */
  275.29 +  while (FCGI_Accept() >= 0) {
  275.30 +
  275.31 +    /* IF A URI REQUEST DOESN'T EXIST OR IS TOO LONG... */
  275.32 +    if (!getenv("REQUEST_URI") || (sizeof(strlen(getenv("REQUEST_URI"))) > sizeof(INT))) {
  275.33 +      /** ERROR | A URI REQUEST DOES NOT EXIST OR IS TOO LONG > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
  275.34 +      DenyAccess();
  275.35 +
  275.36 +    /* OTHERWISE, IF A URI REQUEST DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  275.37 +    } else {
  275.38 +
  275.39 +      /* IF THE URI REQUEST IS FOR A PUBLIC FILE IN THE SERVER ROOT... */
  275.40 +      if (!(strcmp(getenv("REQUEST_URI"), "/") && strcmp(getenv("REQUEST_URI"), "/favicon.ico") &&
  275.41 +            strcmp(getenv("REQUEST_URI"), "/index.html") && strcmp(getenv("REQUEST_URI"), "/index.xhtml") &&
  275.42 +            strcmp(getenv("REQUEST_URI"), "/about") && strcmp(getenv("REQUEST_URI"), "/about/") &&
  275.43 +            strcmp(getenv("REQUEST_URI"), "/blog") && strcmp(getenv("REQUEST_URI"), "/blog/") &&
  275.44 +            strcmp(getenv("REQUEST_URI"), "/code") && strcmp(getenv("REQUEST_URI"), "/code/") &&
  275.45 +            strcmp(getenv("REQUEST_URI"), "/demo") && strcmp(getenv("REQUEST_URI"), "/demo/") &&
  275.46 +            strcmp(getenv("REQUEST_URI"), "/e-mail") && strcmp(getenv("REQUEST_URI"), "/e-mail/") &&
  275.47 +            strcmp(getenv("REQUEST_URI"), "/email") && strcmp(getenv("REQUEST_URI"), "/email/") &&
  275.48 +            strcmp(getenv("REQUEST_URI"), "/f.a.q.") && strcmp(getenv("REQUEST_URI"), "/f.a.q./") &&
  275.49 +            strcmp(getenv("REQUEST_URI"), "/faq") && strcmp(getenv("REQUEST_URI"), "/faq/") &&
  275.50 +            strcmp(getenv("REQUEST_URI"), "/gear") && strcmp(getenv("REQUEST_URI"), "/gear/") &&
  275.51 +            strcmp(getenv("REQUEST_URI"), "/help") && strcmp(getenv("REQUEST_URI"), "/help/") &&
  275.52 +            strcmp(getenv("REQUEST_URI"), "/home") && strcmp(getenv("REQUEST_URI"), "/home/") &&
  275.53 +            strcmp(getenv("REQUEST_URI"), "/bottom") && strcmp(getenv("REQUEST_URI"), "/bottom/") &&
  275.54 +            strcmp(getenv("REQUEST_URI"), "/browse") && strcmp(getenv("REQUEST_URI"), "/browse/") &&
  275.55 +            strcmp(getenv("REQUEST_URI"), "/content") && strcmp(getenv("REQUEST_URI"), "/content/") &&
  275.56 +            strcmp(getenv("REQUEST_URI"), "/login") && strcmp(getenv("REQUEST_URI"), "/login/") &&
  275.57 +            strcmp(getenv("REQUEST_URI"), "/logout") && strcmp(getenv("REQUEST_URI"), "/logout/") &&
  275.58 +            strcmp(getenv("REQUEST_URI"), "/main") && strcmp(getenv("REQUEST_URI"), "/main/") &&
  275.59 +            strcmp(getenv("REQUEST_URI"), "/interos") && strcmp(getenv("REQUEST_URI"), "/interos/") &&
  275.60 +            strcmp(getenv("REQUEST_URI"), "/menu") && strcmp(getenv("REQUEST_URI"), "/menu/") &&
  275.61 +            strcmp(getenv("REQUEST_URI"), "/new") && strcmp(getenv("REQUEST_URI"), "/new/") &&
  275.62 +            strcmp(getenv("REQUEST_URI"), "/new_user") && strcmp(getenv("REQUEST_URI"), "/new_user/") &&
  275.63 +            strcmp(getenv("REQUEST_URI"), "/newuser") && strcmp(getenv("REQUEST_URI"), "/newuser/") &&
  275.64 +            strcmp(getenv("REQUEST_URI"), "/next") && strcmp(getenv("REQUEST_URI"), "/next/") &&
  275.65 +            strcmp(getenv("REQUEST_URI"), "/open") && strcmp(getenv("REQUEST_URI"), "/open/") &&
  275.66 +            strcmp(getenv("REQUEST_URI"), "/settings") && strcmp(getenv("REQUEST_URI"), "/settings/") &&
  275.67 +            strcmp(getenv("REQUEST_URI"), "/top") && strcmp(getenv("REQUEST_URI"), "/top/") &&
  275.68 +            strcmp(getenv("REQUEST_URI"), "/upload") && strcmp(getenv("REQUEST_URI"), "/upload/") &&
  275.69 +            strcmp(getenv("REQUEST_URI"), "/user") && strcmp(getenv("REQUEST_URI"), "/user/") &&
  275.70 +            strcmp(getenv("REQUEST_URI"), "/welcome") && strcmp(getenv("REQUEST_URI"), "/welcome/") &&
  275.71 +            strcmp(getenv("REQUEST_URI"), "/welcome_back") && strcmp(getenv("REQUEST_URI"), "/welcome_back/") &&
  275.72 +            strcmp(getenv("REQUEST_URI"), "/welcomeback") && strcmp(getenv("REQUEST_URI"), "/welcomeback/"))) {
  275.73 +        /** STATUS | PUBLIC FILE > GRANT ACCESS **/
  275.74 +        GrantAccess();
  275.75 +
  275.76 +      /* OTHERWISE, IF THE URI REQUEST IS FOR A PUBLIC SYSTEM FILE... */
  275.77 +      } else if (!(strncmp(getenv("REQUEST_URI"), "/dtd/", 5) &&
  275.78 +                   strncmp(getenv("REQUEST_URI"), "/flash/", 7) &&
  275.79 +                   strncmp(getenv("REQUEST_URI"), "/flex/", 6) &&
  275.80 +                   strncmp(getenv("REQUEST_URI"), "/html/", 6) &&
  275.81 +                   strncmp(getenv("REQUEST_URI"), "/icons/", 7) &&
  275.82 +                   strncmp(getenv("REQUEST_URI"), "/images/", 8) &&
  275.83 +                   strncmp(getenv("REQUEST_URI"), "/java/", 6) &&
  275.84 +                   strncmp(getenv("REQUEST_URI"), "/javafx/", 8) &&
  275.85 +                   strncmp(getenv("REQUEST_URI"), "/js/", 4) &&
  275.86 +                   strncmp(getenv("REQUEST_URI"), "/markup/", 8) &&
  275.87 +                   strncmp(getenv("REQUEST_URI"), "/style/", 7) &&
  275.88 +                   strncmp(getenv("REQUEST_URI"), "/sys/", 5) &&
  275.89 +                   strncmp(getenv("REQUEST_URI"), "/xhtml/", 7) &&
  275.90 +                   strncmp(getenv("REQUEST_URI"), "/xml/", 5))) {
  275.91 +        /** STATUS | PUBLIC SYSTEM FILE > GRANT ACCESS **/
  275.92 +        GrantAccess();
  275.93 +
  275.94 +      /* OTHERWISE, THE PROPER COOKIES ARE REQUIRED FOR ACCESS... */
  275.95 +      } else {
  275.96 +
  275.97 +        /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
  275.98 +        if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
  275.99 +          /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
 275.100 +          DenyAccess();
 275.101 +
 275.102 +        /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
 275.103 +        } else {
 275.104 +
 275.105 +          /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
 275.106 +          char *cookie;
 275.107 +          INT cookieLength = strlen(getenv("HTTP_COOKIE"));
 275.108 +          if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
 275.109 +            /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.110 +            DenyAccess();
 275.111 +          } else {
 275.112 +            char *variableName;
 275.113 +            if (!(variableName = malloc(cookieLength + 1))) {
 275.114 +              /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.115 +              DenyAccess();
 275.116 +            } else {
 275.117 +              char *variableValue;
 275.118 +              if (!(variableValue = malloc(cookieLength + 1))) {
 275.119 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.120 +                DenyAccess();
 275.121 +
 275.122 +              /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
 275.123 +              } else {
 275.124 +
 275.125 +                /* PROCESS COOKIE DATA */
 275.126 +                char *login, *password;
 275.127 +                INT c, i;
 275.128 +                login = password = NULL;
 275.129 +                c = 0;
 275.130 +                strcpy(cookie, getenv("HTTP_COOKIE"));
 275.131 +                while ((c < cookieLength) && (cookie[c] != '\0')) {
 275.132 +                  i = 0;
 275.133 +                  while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
 275.134 +                    variableName[i] = cookie[c];
 275.135 +                    ++c;
 275.136 +                    ++i;
 275.137 +                  }
 275.138 +                  variableName[i] = '\0';
 275.139 +                  ++c;
 275.140 +                  i = 0;
 275.141 +                  while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
 275.142 +                    variableValue[i] = cookie[c];
 275.143 +                    ++c;
 275.144 +                    ++i;
 275.145 +                  }
 275.146 +                  variableValue[i] = '\0';
 275.147 +                  ++c;
 275.148 +                  while ((c < cookieLength) && (cookie[c] == ' ')) {
 275.149 +                    ++c;
 275.150 +                  }
 275.151 +                  if (!login && !strcmp(variableName, "login")) {
 275.152 +                    if ((login = malloc(strlen(variableValue) + 1)) != 0) {
 275.153 +                      strcpy(login, variableValue);
 275.154 +                    }
 275.155 +                  } else if (!password && !strcmp(variableName, "password")) {
 275.156 +                    if ((password = malloc(strlen(variableValue) + 1)) != 0) {
 275.157 +                      strcpy(password, variableValue);
 275.158 +                    }
 275.159 +                  }
 275.160 +                }
 275.161 +
 275.162 +                /* IF LOGIN VALUE IS MISSING... */
 275.163 +                if (!login) {
 275.164 +                  /** ERROR | LOGIN VALUE IS MISSING > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.165 +                  DenyAccess();
 275.166 +
 275.167 +                /* OTHERWISE, IF LOGIN VALUE EXISTS... */
 275.168 +                } else {
 275.169 +
 275.170 +                  /* VERIFY LOGIN AND PASSWORD */
 275.171 +                  char *directory;
 275.172 +                  if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
 275.173 +                    /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.174 +                    DenyAccess();
 275.175 +                  } else {
 275.176 +                    char *systemDirectory;
 275.177 +                    if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
 275.178 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.179 +                      DenyAccess();
 275.180 +                    } else {
 275.181 +                      strcpy(directory, DIRECTORY);
 275.182 +                      strcat(directory, login);
 275.183 +                      strcpy(systemDirectory, SYSTEM_DIRECTORY);
 275.184 +                      strcat(systemDirectory, login);
 275.185 +
 275.186 +                      /* IF DIRECTORY CAN'T BE ACCESSED... */
 275.187 +                      if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
 275.188 +                        /** ERROR | CANNOT ACCESS DIRECTORY > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.189 +                        DenyAccess();
 275.190 +
 275.191 +                      /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
 275.192 +                      } else {
 275.193 +
 275.194 +                        /* ATTEMPT TO ACCESS PASSWORD FILE */
 275.195 +                        char *passwordFileName;
 275.196 +                        if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
 275.197 +                          /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.198 +                          DenyAccess();
 275.199 +                        } else {
 275.200 +                          strcpy(passwordFileName, systemDirectory);
 275.201 +                          strcat(passwordFileName, PASSWORD_FILE_NAME);
 275.202 +
 275.203 +                          /* IF PASSWORD FILE CAN'T BE ACCESSED... */
 275.204 +                          if (access(passwordFileName, F_OK)) {
 275.205 +                            /** ERROR | CANNOT ACCESS FILE > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.206 +                            DenyAccess();
 275.207 +
 275.208 +                          /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
 275.209 +                          } else {
 275.210 +
 275.211 +                            /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
 275.212 +                            FILE *passwordFile;
 275.213 +
 275.214 +                            /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
 275.215 +                            if (!(passwordFile = fopen(passwordFileName, "r"))) {
 275.216 +                              /** ERROR | CANNOT READ FILE > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.217 +                              DenyAccess();
 275.218 +
 275.219 +                            /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
 275.220 +                            } else {
 275.221 +                              char *filePassword;
 275.222 +                              if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
 275.223 +                                /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE **/
 275.224 +                                /**       > DENY ACCESS AND REDIRECT TO LOGIN PANEL       **/
 275.225 +                                DenyAccess();
 275.226 +                              } else {
 275.227 +                                char c;
 275.228 +                                i = 0;
 275.229 +
 275.230 +                                /* READ PASSWORD FROM PASSWORD FILE */
 275.231 +                                while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
 275.232 +                                  filePassword[i] = c;
 275.233 +                                  ++i;
 275.234 +                                }
 275.235 +                                filePassword[i] = '\0';
 275.236 +                                fclose(passwordFile);
 275.237 +
 275.238 +                                /* IF PASSWORD FAILS COMPARISON... */
 275.239 +                                if (strcmp(filePassword, password)) {
 275.240 +                                  /** ERROR | PASSWORD FAILED > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.241 +                                  DenyAccess();
 275.242 +
 275.243 +                                /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
 275.244 +                                } else {
 275.245 +                                  char *loginDirectory;
 275.246 +                                  if (!(loginDirectory = malloc(strlen(login) + 3))) {
 275.247 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR LOGIN DIRECTORY NAME **/
 275.248 +                                    /**       > DENY ACCESS AND REDIRECT TO LOGIN PANEL         **/
 275.249 +                                    DenyAccess();
 275.250 +                                  } else {
 275.251 +                                    strcpy(loginDirectory, "/");
 275.252 +                                    strcat(loginDirectory, login);
 275.253 +                                    strcat(loginDirectory, "/");
 275.254 +                                    if (strncmp(loginDirectory, getenv("REQUEST_URI"), (strlen(login) + 2))) {
 275.255 +                                      /** STATUS | FILE DOES NOT BELONG TO USER > DENY ACCESS AND REDIRECT TO LOGIN PANEL **/
 275.256 +                                      DenyAccess();
 275.257 +                                    } else {
 275.258 +                                      /** STATUS | FILE DOES BELONG TO USER > GRANT ACCESS **/
 275.259 +                                      GrantAccess();
 275.260 +                                    }
 275.261 +                                    free(loginDirectory);
 275.262 +                                  }
 275.263 +                                }
 275.264 +                                free(filePassword);
 275.265 +                              }
 275.266 +                            }
 275.267 +                          }
 275.268 +                          free(passwordFileName);
 275.269 +                        }
 275.270 +                      }
 275.271 +                      free(systemDirectory);
 275.272 +                    }
 275.273 +                    free(directory);
 275.274 +                  }
 275.275 +                  free(login);
 275.276 +                }
 275.277 +                free(password);
 275.278 +                free(variableValue);
 275.279 +              }
 275.280 +              free(variableName);
 275.281 +            }
 275.282 +            free(cookie);
 275.283 +          }
 275.284 +        }
 275.285 +      }
 275.286 +    }
 275.287 +  }
 275.288 +  return 0;
 275.289 +}
 275.290 +
 275.291 +/* FUNCTION | DENY ACCESS */
 275.292 +static void DenyAccess(void) {
 275.293 +  printf("Status: 403\r\n\r\n");
 275.294 +}
 275.295 +
 275.296 +/* FUNCTION | GRANT ACCESS */
 275.297 +static void GrantAccess(void) {
 275.298 +  printf("Status: 200\r\n\r\n");
 275.299 +}
 275.300 +
 275.301 +/***********************************************************************/
 275.302 +/*                  Copyright and Trademark Statement                  */
 275.303 +/***********************************************************************/
 275.304 +/*                                                                     */
 275.305 +/*          All original textual and graphical site content:           */
 275.306 +/*                                                                     */
 275.307 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
 275.308 +/*  reserved.  Reproduction in whole or in part without written        */
 275.309 +/*  permission is prohibited.  interos and the interos logos are       */
 275.310 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 275.311 +/*  product, and service names mentioned herein may be the properties  */
 275.312 +/*  of their respective owners.  Comments in the interos.org forums    */
 275.313 +/*  are the properties of their respective authors.  All software      */
 275.314 +/*  developed in the forums is open source and belongs to everyone.    */
 275.315 +/*                                                                     */
 275.316 +/***********************************************************************/
 275.317 +/*                      e-mail: info@interos.com                       */
 275.318 +/***********************************************************************/
   276.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   276.2 +++ b/xml/c/bottom_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
   276.3 @@ -0,0 +1,514 @@
   276.4 +/******************************************************/
   276.5 +/*    interos Standard Document Header - CGI in C     */
   276.6 +/******************************************************/
   276.7 +/*         URIs:  https://interos.com/bottom          */
   276.8 +/*                https://www.interos.com/bottom      */
   276.9 +/*       Source:  bottom.c                            */
  276.10 +/*  Description:  FastCGI for interos bottom toolbar  */
  276.11 +/*       Author:  Brent Angeline                      */
  276.12 +/*          CGI:  FastCGI in ISO/ANSI C               */
  276.13 +/******************************************************/
  276.14 +
  276.15 +/* PREPROCESSOR DIRECTIVES */
  276.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                      */
  276.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
  276.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
  276.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
  276.20 +#include <unistd.h>         /*  F_OK, access()                                                           */
  276.21 +
  276.22 +/* FUNCTION PROTOTYPE DECLARATIONS */
  276.23 +static void RedirectToLoginPanel(void);
  276.24 +static void OutputBottom(char *status);
  276.25 +static void OutputNewMenuButton(void);
  276.26 +static void OutputSettingsMenuButton(void);
  276.27 +static void BeginXHTMLOutput(void);
  276.28 +static void BeginBottomOutput(void);
  276.29 +static void FinishXHTMLOutput(void);
  276.30 +
  276.31 +/* BEGIN MAIN PROGRAM */
  276.32 +int main(void) {
  276.33 +
  276.34 +  /* BEGIN FASTCGI */
  276.35 +  while (FCGI_Accept() >= 0) {
  276.36 +
  276.37 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
  276.38 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
  276.39 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
  276.40 +      RedirectToLoginPanel();
  276.41 +
  276.42 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  276.43 +    } else {
  276.44 +
  276.45 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
  276.46 +      char *cookie;
  276.47 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
  276.48 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
  276.49 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
  276.50 +        RedirectToLoginPanel();
  276.51 +      } else {
  276.52 +        char *variableName;
  276.53 +        if (!(variableName = malloc(cookieLength + 1))) {
  276.54 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
  276.55 +          RedirectToLoginPanel();
  276.56 +        } else {
  276.57 +          char *variableValue;
  276.58 +          if (!(variableValue = malloc(cookieLength + 1))) {
  276.59 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
  276.60 +            RedirectToLoginPanel();
  276.61 +
  276.62 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
  276.63 +          } else {
  276.64 +
  276.65 +            /* PROCESS COOKIE DATA */
  276.66 +            char *login, *password;
  276.67 +            INT c, i;
  276.68 +            login = password = NULL;
  276.69 +            c = 0;
  276.70 +            strcpy(cookie, getenv("HTTP_COOKIE"));
  276.71 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
  276.72 +              i = 0;
  276.73 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
  276.74 +                variableName[i] = cookie[c];
  276.75 +                ++c;
  276.76 +                ++i;
  276.77 +              }
  276.78 +              variableName[i] = '\0';
  276.79 +              ++c;
  276.80 +              i = 0;
  276.81 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
  276.82 +                variableValue[i] = cookie[c];
  276.83 +                ++c;
  276.84 +                ++i;
  276.85 +              }
  276.86 +              variableValue[i] = '\0';
  276.87 +              ++c;
  276.88 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
  276.89 +                ++c;
  276.90 +              }
  276.91 +              if (!login && !strcmp(variableName, "login")) {
  276.92 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
  276.93 +                  strcpy(login, variableValue);
  276.94 +                }
  276.95 +              } else if (!password && !strcmp(variableName, "password")) {
  276.96 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
  276.97 +                  strcpy(password, variableValue);
  276.98 +                }
  276.99 +              }
 276.100 +            }
 276.101 +
 276.102 +            /* IF LOGIN VALUE IS MISSING... */
 276.103 +            if (!login) {
 276.104 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
 276.105 +              RedirectToLoginPanel();
 276.106 +
 276.107 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
 276.108 +            } else {
 276.109 +
 276.110 +              /* VERIFY LOGIN AND PASSWORD */
 276.111 +              char *directory;
 276.112 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
 276.113 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
 276.114 +                RedirectToLoginPanel();
 276.115 +              } else {
 276.116 +                char *systemDirectory;
 276.117 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
 276.118 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
 276.119 +                  RedirectToLoginPanel();
 276.120 +                } else {
 276.121 +                  strcpy(directory, DIRECTORY);
 276.122 +                  strcat(directory, login);
 276.123 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
 276.124 +                  strcat(systemDirectory, login);
 276.125 +
 276.126 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
 276.127 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
 276.128 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
 276.129 +                    RedirectToLoginPanel();
 276.130 +
 276.131 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
 276.132 +                  } else {
 276.133 +
 276.134 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
 276.135 +                    char *passwordFileName;
 276.136 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
 276.137 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
 276.138 +                      RedirectToLoginPanel();
 276.139 +                    } else {
 276.140 +                      strcpy(passwordFileName, systemDirectory);
 276.141 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
 276.142 +
 276.143 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
 276.144 +                      if (access(passwordFileName, F_OK)) {
 276.145 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
 276.146 +                        RedirectToLoginPanel();
 276.147 +
 276.148 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
 276.149 +                      } else {
 276.150 +
 276.151 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
 276.152 +                        FILE *passwordFile;
 276.153 +
 276.154 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
 276.155 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
 276.156 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
 276.157 +                          RedirectToLoginPanel();
 276.158 +
 276.159 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
 276.160 +                        } else {
 276.161 +                          char *filePassword;
 276.162 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
 276.163 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
 276.164 +                            RedirectToLoginPanel();
 276.165 +                          } else {
 276.166 +                            char c;
 276.167 +                            i = 0;
 276.168 +
 276.169 +                            /* READ PASSWORD FROM PASSWORD FILE */
 276.170 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
 276.171 +                              filePassword[i] = c;
 276.172 +                              ++i;
 276.173 +                            }
 276.174 +                            filePassword[i] = '\0';
 276.175 +                            fclose(passwordFile);
 276.176 +
 276.177 +                            /* IF PASSWORD FAILS COMPARISON... */
 276.178 +                            if (strcmp(filePassword, password)) {
 276.179 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
 276.180 +                              RedirectToLoginPanel();
 276.181 +
 276.182 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
 276.183 +                            } else {
 276.184 +
 276.185 +                              /* LOAD SETTINGS VALUES FROM FILES */
 276.186 +
 276.187 +                              /* LOAD interos BOTTOM COMPONENTS FROM FILES */
 276.188 +
 276.189 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
 276.190 +                              char *status, *button;
 276.191 +                              status = button = NULL;
 276.192 +
 276.193 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
 276.194 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
 276.195 +                                char *query;
 276.196 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
 276.197 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
 276.198 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
 276.199 +                                } else {
 276.200 +                                  strcpy(query, getenv("QUERY_STRING"));
 276.201 +                                  free(variableName);
 276.202 +                                  if (!(variableName = malloc(queryLength + 1))) {
 276.203 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
 276.204 +                                  } else {
 276.205 +                                    free(variableValue);
 276.206 +                                    if (!(variableValue = malloc(queryLength + 1))) {
 276.207 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
 276.208 +
 276.209 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
 276.210 +                                    } else {
 276.211 +
 276.212 +                                      /* PROCESS QUERY DATA */
 276.213 +                                      INT q = 0;
 276.214 +                                      i = 0;
 276.215 +                                      while ((q < queryLength) && (query[q] != '\0')) {
 276.216 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
 276.217 +                                          variableName[i] = query[q];
 276.218 +                                          ++q;
 276.219 +                                          ++i;
 276.220 +                                        }
 276.221 +                                        variableName[i] = '\0';
 276.222 +                                        ++q;
 276.223 +                                        i = 0;
 276.224 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
 276.225 +                                          variableValue[i] = query[q];
 276.226 +                                          ++q;
 276.227 +                                          ++i;
 276.228 +                                        }
 276.229 +                                        variableValue[i] = '\0';
 276.230 +                                        if (query[q] != '\0') {
 276.231 +                                          ++q;
 276.232 +                                        }
 276.233 +                                        if (!status && !strcmp(variableName, "status")) {
 276.234 +                                          if ((status = malloc(strlen(variableValue) + 1)) != 0) {
 276.235 +                                            strcpy(status, variableValue);
 276.236 +                                          }
 276.237 +                                        } else if (!button && !strcmp(variableName, "button")) {
 276.238 +                                          if ((button = malloc(strlen(variableValue) + 1)) != 0) {
 276.239 +                                            strcpy(button, variableValue);
 276.240 +                                          }
 276.241 +                                        }
 276.242 +                                      }
 276.243 +                                    }
 276.244 +                                  }
 276.245 +                                  free(query);
 276.246 +                                }
 276.247 +                              }
 276.248 +
 276.249 +                              /* OUTPUT GUI COMPONENT(S) BASED ON VARIABLES */
 276.250 +                              if (button) {
 276.251 +                                if (!strcmp(button, "new")) {
 276.252 +                                  OutputNewMenuButton();
 276.253 +                                } else if (!strcmp(button, "settings")) {
 276.254 +                                  OutputSettingsMenuButton();
 276.255 +                                } else {
 276.256 +
 276.257 +                                  /* OUTPUT XHTML FOR interos BOTTOM BAR */
 276.258 +                                  OutputBottom(status);
 276.259 +                                }
 276.260 +                              } else {
 276.261 +
 276.262 +                                /* OUTPUT XHTML FOR interos BOTTOM BAR */
 276.263 +                                OutputBottom(status);
 276.264 +                              }
 276.265 +                              free(button);
 276.266 +                              free(status);
 276.267 +                            }
 276.268 +                            free(filePassword);
 276.269 +                          }
 276.270 +                        }
 276.271 +                      }
 276.272 +                      free(passwordFileName);
 276.273 +                    }
 276.274 +                  }
 276.275 +                  free(systemDirectory);
 276.276 +                }
 276.277 +                free(directory);
 276.278 +              }
 276.279 +              free(login);
 276.280 +            }
 276.281 +            free(password);
 276.282 +            free(variableValue);
 276.283 +          }
 276.284 +          free(variableName);
 276.285 +        }
 276.286 +        free(cookie);
 276.287 +      }
 276.288 +    }
 276.289 +  }
 276.290 +  return 0;
 276.291 +}
 276.292 +
 276.293 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
 276.294 +static void RedirectToLoginPanel(void) {
 276.295 +  BeginXHTMLOutput();
 276.296 +  BeginBottomOutput();
 276.297 +  printf("      <a href=\"/login\" \n");
 276.298 +  printf("         target=\"_top\">click here to login for interos bottom toolbar</a>\n");
 276.299 +  FinishXHTMLOutput();
 276.300 +}
 276.301 +
 276.302 +/* FUNCTION | OUTPUT XHTML FOR interos BOTTOM TOOLBAR */
 276.303 +static void OutputBottom(char *status) {
 276.304 +  BeginXHTMLOutput();
 276.305 +  BeginBottomOutput();
 276.306 +  printf("      <table id=\"bottomToolbar\" width=\"100%%\" \n");
 276.307 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
 276.308 +  printf("        <tr>\n");
 276.309 +  printf("          <td width=\"72\" \n");
 276.310 +  printf("              height=\"72\"><center>\n");
 276.311 +  printf("                            <a id=\"newButton\" \n");
 276.312 +  printf("                               href=\"/interos?menu=new\" \n");
 276.313 +  printf("                               style=\"padding: 26px 0 27px\" \n");
 276.314 +  printf("                               target=\"_top\"><strong>new</strong></a>\n");
 276.315 +  printf("                          </center></td>\n");
 276.316 +  printf("          <td><center>\n");
 276.317 +  printf("                &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
 276.318 +  printf("              </center></td>\n");
 276.319 +  printf("          <td width=\"72\" \n");
 276.320 +  printf("              height=\"72\"><center>\n");
 276.321 +  printf("                            <a id=\"settingsButton\" \n");
 276.322 +  printf("                               href=\"/interos?menu=settings\" \n");
 276.323 +  printf("                               style=\"padding: 26px 0 27px\" \n");
 276.324 +  printf("                               target=\"_top\"><strong>settings</strong></a>\n");
 276.325 +  printf("                          </center></td>\n");
 276.326 +  printf("        </tr>\n");
 276.327 +  printf("      </table>\n");
 276.328 +  FinishXHTMLOutput();
 276.329 +}
 276.330 +
 276.331 +/* FUNCTION | OUTPUT XHTML FOR NEW MENU BUTTON */
 276.332 +static void OutputNewMenuButton(void) {
 276.333 +  BeginXHTMLOutput();
 276.334 +  printf("  <!--======================================================-->\n");
 276.335 +  printf("  <!--      interos Standard Document Header - Markup       -->\n");
 276.336 +  printf("  <!--======================================================-->\n");
 276.337 +  printf("  <!--    URIs:  https://interos.com/bottom?button=new      -->\n");
 276.338 +  printf("  <!--           https://www.interos.com/bottom?button=new  -->\n");
 276.339 +  printf("  <!--   Title:  interos new menu button                    -->\n");
 276.340 +  printf("  <!--  Author:  Brent Angeline                             -->\n");
 276.341 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional       -->\n");
 276.342 +  printf("  <!--======================================================-->\n");
 276.343 +  printf("  <head>\n");
 276.344 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 276.345 +  printf("    <meta name=\"title\" content=\"interos new menu button\" />\n");
 276.346 +  printf("    <meta name=\"description\" content=\"button for interos new menu\" />\n");
 276.347 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 276.348 +  printf("    <meta name=\"copyright\" \n");
 276.349 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
 276.350 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
 276.351 +  printf("    <title>interos new menu button</title>\n");
 276.352 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
 276.353 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
 276.354 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
 276.355 +  printf("          media=\"screen, projection\" />\n");
 276.356 +  printf("    <script type=\"text/javascript\" src=\"/js/bottom.js\"></script>\n");
 276.357 +  printf("  </head>\n");
 276.358 +  printf("  <body id=\"body\">\n");
 276.359 +  printf("    <center>\n");
 276.360 +  printf("      <table id=\"bottomToolbarFaded\" width=\"100%%\" \n");
 276.361 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
 276.362 +  printf("        <tr>\n");
 276.363 +  printf("          <td width=\"72\" \n");
 276.364 +  printf("              height=\"72\"><center>\n");
 276.365 +  printf("                            <a id=\"newMenuButton\" \n");
 276.366 +  printf("                               href=\"/main\" \n");
 276.367 +  printf("                               style=\"padding: 26px 0 27px\" \n");
 276.368 +  printf("                               target=\"_top\"><strong>&laquo; back</strong></a>\n");
 276.369 +  printf("                          </center></td>\n");
 276.370 +  printf("          <td><center>\n");
 276.371 +  printf("                &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
 276.372 +  printf("              </center></td>\n");
 276.373 +  printf("          <td id=\"bottomToolbarCornerFaded\" \n");
 276.374 +  printf("              width=\"72\" \n");
 276.375 +  printf("              height=\"72\"><p>\n");
 276.376 +  printf("                            <br />\n");
 276.377 +  printf("                          </p></td>\n");
 276.378 +  printf("        </tr>\n");
 276.379 +  printf("      </table>\n");
 276.380 +  FinishXHTMLOutput();
 276.381 +}
 276.382 +
 276.383 +/* FUNCTION | OUTPUT XHTML FOR SETTINGS MENU BUTTON */
 276.384 +static void OutputSettingsMenuButton(void) {
 276.385 +  BeginXHTMLOutput();
 276.386 +  printf("  <!--===========================================================-->\n");
 276.387 +  printf("  <!--         interos Standard Document Header - Markup         -->\n");
 276.388 +  printf("  <!--===========================================================-->\n");
 276.389 +  printf("  <!--    URIs:  https://interos.com/bottom?button=settings      -->\n");
 276.390 +  printf("  <!--           https://www.interos.com/bottom?button=settings  -->\n");
 276.391 +  printf("  <!--   Title:  interos settings menu button                    -->\n");
 276.392 +  printf("  <!--  Author:  Brent Angeline                                  -->\n");
 276.393 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional            -->\n");
 276.394 +  printf("  <!--===========================================================-->\n");
 276.395 +  printf("  <head>\n");
 276.396 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 276.397 +  printf("    <meta name=\"title\" content=\"interos settings menu button\" />\n");
 276.398 +  printf("    <meta name=\"description\" content=\"button for interos settings menu\" />\n");
 276.399 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 276.400 +  printf("    <meta name=\"copyright\" \n");
 276.401 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
 276.402 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
 276.403 +  printf("    <title>interos settings menu button</title>\n");
 276.404 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
 276.405 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
 276.406 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
 276.407 +  printf("          media=\"screen, projection\" />\n");
 276.408 +  printf("    <script type=\"text/javascript\" src=\"/js/bottom.js\"></script>\n");
 276.409 +  printf("  </head>\n");
 276.410 +  printf("  <body id=\"body\">\n");
 276.411 +  printf("    <center>\n");
 276.412 +  printf("      <table id=\"bottomToolbarFaded\" width=\"100%%\" \n");
 276.413 +  printf("             border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
 276.414 +  printf("        <tr>\n");
 276.415 +  printf("          <td id=\"bottomToolbarCornerFaded\" \n");
 276.416 +  printf("              width=\"72\" \n");
 276.417 +  printf("              height=\"72\"><p>\n");
 276.418 +  printf("                            <br />\n");
 276.419 +  printf("                          </p></td>\n");
 276.420 +  printf("          <td><center>\n");
 276.421 +  printf("               &nbsp;<span class=\"hidden\">|</span>&nbsp;\n");
 276.422 +  printf("              </center></td>\n");
 276.423 +  printf("          <td width=\"72\" \n");
 276.424 +  printf("              height=\"72\"><center>\n");
 276.425 +  printf("                            <a id=\"settingsMenuButton\" \n");
 276.426 +  printf("                               href=\"/main\" \n");
 276.427 +  printf("                               style=\"padding: 26px 0 27px\" \n");
 276.428 +  printf("                               target=\"_top\"><strong>&laquo; back</strong></a>\n");
 276.429 +  printf("                          </center></td>\n");
 276.430 +  printf("        </tr>\n");
 276.431 +  printf("      </table>\n");
 276.432 +  FinishXHTMLOutput();
 276.433 +}
 276.434 +
 276.435 +/* FUNCTION | BEGIN XHTML OUTPUT */
 276.436 +static void BeginXHTMLOutput(void) {
 276.437 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
 276.438 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
 276.439 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
 276.440 +  printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n");
 276.441 +  printf("                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
 276.442 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
 276.443 +}
 276.444 +
 276.445 +/* FUNCTION | BEGIN interos BOTTOM TOOLBAR OUTPUT */
 276.446 +static void BeginBottomOutput(void) {
 276.447 +  printf("  <!--=================================================-->\n");
 276.448 +  printf("  <!--    interos Standard Document Header - Markup    -->\n");
 276.449 +  printf("  <!--=================================================-->\n");
 276.450 +  printf("  <!--    URIs:  https://interos.com/bottom            -->\n");
 276.451 +  printf("  <!--           https://www.interos.com/bottom        -->\n");
 276.452 +  printf("  <!--   Title:  interos bottom toolbar                 -->\n");
 276.453 +  printf("  <!--  Author:  Brent Angeline                        -->\n");
 276.454 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->\n");
 276.455 +  printf("  <!--=================================================-->\n");
 276.456 +  printf("  <head>\n");
 276.457 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 276.458 +  printf("    <meta name=\"title\" content=\"interos bottom toolbar\" />\n");
 276.459 +  printf("    <meta name=\"description\" content=\"bottom toolbar for interos\" />\n");
 276.460 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 276.461 +  printf("    <meta name=\"copyright\" \n");
 276.462 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
 276.463 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
 276.464 +  printf("    <title>interos bottom</title>\n");
 276.465 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
 276.466 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
 276.467 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
 276.468 +  printf("          media=\"screen, projection\" />\n");
 276.469 +  printf("    <script type=\"text/javascript\" src=\"/js/bottom.js\"></script>\n");
 276.470 +  printf("  </head>\n");
 276.471 +  printf("  <body id=\"body\">\n");
 276.472 +  printf("    <center>\n");
 276.473 +}
 276.474 +
 276.475 +/* FUNCTION | FINISH XHTML OUTPUT */
 276.476 +static void FinishXHTMLOutput(void) {
 276.477 +  printf("    </center>\n");
 276.478 +  printf("  </body>\n");
 276.479 +  printf("  <!--=====================================================================-->\n");
 276.480 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
 276.481 +  printf("  <!--=====================================================================-->\n");
 276.482 +  printf("  <!--                                                                     -->\n");
 276.483 +  printf("  <!--          All original textual and graphical site content:           -->\n");
 276.484 +  printf("  <!--                                                                     -->\n");
 276.485 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
 276.486 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
 276.487 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
 276.488 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
 276.489 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
 276.490 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
 276.491 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
 276.492 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
 276.493 +  printf("  <!--                                                                     -->\n");
 276.494 +  printf("  <!--=====================================================================-->\n");
 276.495 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
 276.496 +  printf("  <!--=====================================================================-->\n");
 276.497 +  printf("</html>");
 276.498 +}
 276.499 +
 276.500 +/***********************************************************************/
 276.501 +/*                  Copyright and Trademark Statement                  */
 276.502 +/***********************************************************************/
 276.503 +/*                                                                     */
 276.504 +/*          All original textual and graphical site content:           */
 276.505 +/*                                                                     */
 276.506 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
 276.507 +/*  reserved.  Reproduction in whole or in part without written        */
 276.508 +/*  permission is prohibited.  interos and the interos logos are       */
 276.509 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 276.510 +/*  product, and service names mentioned herein may be the properties  */
 276.511 +/*  of their respective owners.  Comments in the interos.org forums    */
 276.512 +/*  are the properties of their respective authors.  All software      */
 276.513 +/*  developed in the forums is open source and belongs to everyone.    */
 276.514 +/*                                                                     */
 276.515 +/***********************************************************************/
 276.516 +/*                      e-mail: info@interos.com                       */
 276.517 +/***********************************************************************/
   277.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   277.2 +++ b/xml/c/browse_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
   277.3 @@ -0,0 +1,374 @@
   277.4 +/**************************************************/
   277.5 +/*  interos Standard Document Header - CGI in C   */
   277.6 +/**************************************************/
   277.7 +/*         URIs:  https://interos.com/browse      */
   277.8 +/*                https://www.interos.com/browse  */
   277.9 +/*       Source:  browse.c                        */
  277.10 +/*  Description:  FastCGI for interos browse      */
  277.11 +/*       Author:  Brent Angeline                  */
  277.12 +/*          CGI:  FastCGI in ISO/ANSI C           */
  277.13 +/**************************************************/
  277.14 +
  277.15 +/* PREPROCESSOR DIRECTIVES */
  277.16 +#include "fcgi_stdio.h"     /*  EOF, FCGI_Accept(), fclose(), fgetc(), fopen(), fread(), printf()        */
  277.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
  277.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
  277.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
  277.20 +#include <unistd.h>         /*  F_OK, access()                                                           */
  277.21 +
  277.22 +/* FUNCTION PROTOTYPE DECLARATIONS */
  277.23 +static void RedirectToLoginPanel(void);
  277.24 +static void BeginXHTMLOutput(void);
  277.25 +static void FinishXHTMLOutput(void);
  277.26 +
  277.27 +/* BEGIN MAIN PROGRAM */
  277.28 +int main(void) {
  277.29 +
  277.30 +  /* BEGIN FASTCGI */
  277.31 +  while (FCGI_Accept() >= 0) {
  277.32 +
  277.33 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
  277.34 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
  277.35 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
  277.36 +      RedirectToLoginPanel();
  277.37 +
  277.38 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  277.39 +    } else {
  277.40 +
  277.41 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
  277.42 +      char *cookie;
  277.43 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
  277.44 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
  277.45 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
  277.46 +        RedirectToLoginPanel();
  277.47 +      } else {
  277.48 +        char *variableName;
  277.49 +        if (!(variableName = malloc(cookieLength + 1))) {
  277.50 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
  277.51 +          RedirectToLoginPanel();
  277.52 +        } else {
  277.53 +          char *variableValue;
  277.54 +          if (!(variableValue = malloc(cookieLength + 1))) {
  277.55 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
  277.56 +            RedirectToLoginPanel();
  277.57 +
  277.58 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
  277.59 +          } else {
  277.60 +
  277.61 +            /* PROCESS COOKIE DATA */
  277.62 +            char *login, *password;
  277.63 +            INT c, i;
  277.64 +            login = password = NULL;
  277.65 +            c = 0;
  277.66 +            strcpy(cookie, getenv("HTTP_COOKIE"));
  277.67 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
  277.68 +              i = 0;
  277.69 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
  277.70 +                variableName[i] = cookie[c];
  277.71 +                ++c;
  277.72 +                ++i;
  277.73 +              }
  277.74 +              variableName[i] = '\0';
  277.75 +              ++c;
  277.76 +              i = 0;
  277.77 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
  277.78 +                variableValue[i] = cookie[c];
  277.79 +                ++c;
  277.80 +                ++i;
  277.81 +              }
  277.82 +              variableValue[i] = '\0';
  277.83 +              ++c;
  277.84 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
  277.85 +                ++c;
  277.86 +              }
  277.87 +              if (!login && !strcmp(variableName, "login")) {
  277.88 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
  277.89 +                  strcpy(login, variableValue);
  277.90 +                }
  277.91 +              } else if (!password && !strcmp(variableName, "password")) {
  277.92 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
  277.93 +                  strcpy(password, variableValue);
  277.94 +                }
  277.95 +              }
  277.96 +            }
  277.97 +
  277.98 +            /* IF LOGIN VALUE IS MISSING... */
  277.99 +            if (!login) {
 277.100 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
 277.101 +              RedirectToLoginPanel();
 277.102 +
 277.103 +              /* OTHERWISE, IF LOGIN VALUE EXISTS... */
 277.104 +              } else {
 277.105 +
 277.106 +              /* VERIFY LOGIN AND PASSWORD */
 277.107 +              char *directory;
 277.108 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
 277.109 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
 277.110 +                RedirectToLoginPanel();
 277.111 +              } else {
 277.112 +                char *systemDirectory;
 277.113 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
 277.114 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
 277.115 +                  RedirectToLoginPanel();
 277.116 +                } else {
 277.117 +                  strcpy(directory, DIRECTORY);
 277.118 +                  strcat(directory, login);
 277.119 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
 277.120 +                  strcat(systemDirectory, login);
 277.121 +
 277.122 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
 277.123 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
 277.124 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
 277.125 +                    RedirectToLoginPanel();
 277.126 +
 277.127 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
 277.128 +                  } else {
 277.129 +
 277.130 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
 277.131 +                    char *passwordFileName;
 277.132 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
 277.133 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
 277.134 +                      RedirectToLoginPanel();
 277.135 +                    } else {
 277.136 +                      strcpy(passwordFileName, systemDirectory);
 277.137 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
 277.138 +
 277.139 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
 277.140 +                      if (access(passwordFileName, F_OK)) {
 277.141 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
 277.142 +                        RedirectToLoginPanel();
 277.143 +
 277.144 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
 277.145 +                      } else {
 277.146 +
 277.147 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
 277.148 +                        FILE *passwordFile;
 277.149 +
 277.150 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
 277.151 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
 277.152 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
 277.153 +                          RedirectToLoginPanel();
 277.154 +
 277.155 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
 277.156 +                        } else {
 277.157 +                          char *filePassword;
 277.158 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
 277.159 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
 277.160 +                            RedirectToLoginPanel();
 277.161 +                          } else {
 277.162 +                            char c;
 277.163 +                            i = 0;
 277.164 +
 277.165 +                            /* READ PASSWORD FROM PASSWORD FILE */
 277.166 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
 277.167 +                              filePassword[i] = c;
 277.168 +                              ++i;
 277.169 +                            }
 277.170 +                            filePassword[i] = '\0';
 277.171 +                            fclose(passwordFile);
 277.172 +
 277.173 +                            /* IF PASSWORD FAILS COMPARISON... */
 277.174 +                            if (strcmp(filePassword, password)) {
 277.175 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
 277.176 +                              RedirectToLoginPanel();
 277.177 +
 277.178 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
 277.179 +                            } else {
 277.180 +
 277.181 +                              /* LOAD SETTINGS VALUES FROM FILE(S) */
 277.182 +
 277.183 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
 277.184 +                              char *address, *search;
 277.185 +                              address = search = NULL;
 277.186 +
 277.187 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
 277.188 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
 277.189 +                                char *query;
 277.190 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
 277.191 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
 277.192 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
 277.193 +                                } else {
 277.194 +                                  strcpy(query, getenv("QUERY_STRING"));
 277.195 +                                  free(variableName);
 277.196 +                                  if (!(variableName = malloc(queryLength + 1))) {
 277.197 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
 277.198 +                                  } else {
 277.199 +                                    free(variableValue);
 277.200 +                                    if (!(variableValue = malloc(queryLength + 1))) {
 277.201 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
 277.202 +
 277.203 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
 277.204 +                                    } else {
 277.205 +
 277.206 +                                      /* PROCESS QUERY DATA */
 277.207 +                                      INT q = 0;
 277.208 +                                      i = 0;
 277.209 +                                      while ((q < queryLength) && (query[q] != '\0')) {
 277.210 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
 277.211 +                                          variableName[i] = query[q];
 277.212 +                                          ++q;
 277.213 +                                          ++i;
 277.214 +                                        }
 277.215 +                                        variableName[i] = '\0';
 277.216 +                                        ++q;
 277.217 +                                        i = 0;
 277.218 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
 277.219 +                                          variableValue[i] = query[q];
 277.220 +                                          ++q;
 277.221 +                                          ++i;
 277.222 +                                        }
 277.223 +                                        variableValue[i] = '\0';
 277.224 +                                        if (query[q] != '\0') {
 277.225 +                                          ++q;
 277.226 +                                        }
 277.227 +                                        if (!address && !strcmp(variableName, "address")) {
 277.228 +                                          if ((address = malloc(strlen(variableValue) + 1)) != 0) {
 277.229 +                                            strcpy(address, variableValue);
 277.230 +                                          }
 277.231 +                                        } else if (!search && !strcmp(variableName, "search")) {
 277.232 +                                          if ((search = malloc(strlen(variableValue) + 1)) != 0) {
 277.233 +                                            strcpy(search, variableValue);
 277.234 +                                            for (c = 0; c < strlen(search); ++c) {
 277.235 +                                              if (search[c] == ' ') {
 277.236 +                                                search[c] = '+';
 277.237 +                                              }
 277.238 +                                            }
 277.239 +                                          }
 277.240 +                                        }
 277.241 +                                      }
 277.242 +                                      free(variableValue);
 277.243 +                                      variableValue = NULL;
 277.244 +                                    }
 277.245 +                                    free(variableName);
 277.246 +                                    variableName = NULL;
 277.247 +                                  }
 277.248 +                                  free(query);
 277.249 +                                }
 277.250 +                              }
 277.251 +
 277.252 +                              /* IF THIS IS A CONTINUED SESSION... */
 277.253 +
 277.254 +                                /* LOAD SESSION FROM FILE */
 277.255 +
 277.256 +                              /* OUTPUT GUI COMPONENTS BASED ON VARIABLES */
 277.257 +                              printf("Content-type: text/html\n\n");
 277.258 +                              printf("<!--=======================================================-->\n");
 277.259 +                              printf("<!--  interos.com Standard Document Model Header - Markup  -->\n");
 277.260 +                              printf("<!--=======================================================-->\n");
 277.261 +                              printf("<!--      URIs:   https://www.interos.com/sys/browser      -->\n");
 277.262 +                              printf("<!--              interos.com/sys/browser                  -->\n");
 277.263 +                              printf("<!--      Title:  interos browser                          -->\n");
 277.264 +                              printf("<!--     Author:  Brent Angeline                           -->\n");
 277.265 +                              printf("<!--     Markup:  Dynamic XHTML                            -->\n");
 277.266 +                              printf("<!--=======================================================-->\n");
 277.267 +                              printf("<html>");
 277.268 +                                printf("<head>");
 277.269 +                                  printf("<title>interos > %s > browser</title>", login);
 277.270 +                                printf("</head>");
 277.271 +                                printf("<frameset rows=\"72,*,72\" border=\"0\">");
 277.272 +                                  printf("<frame name=\"top\" src=\"top\" scrolling=\"no\" noresize=\"noresize\">");
 277.273 +                                  if (address != NULL) {
 277.274 +                                    printf("<frame name=\"content\" src=\"http://%s\" scrolling=\"yes\" noresize=\"noresize\">", address);
 277.275 +                                  } else {
 277.276 +                                    printf("<frame name=\"content\" src=\"http://www.google.com/search?hl=en&q=%s&btnG=Google+Search\" scrolling=\"yes\" noresize=\"noresize\">", search);
 277.277 +                                  }
 277.278 +                                  printf("<frame name=\"bottom\" src=\"bottom\" scrolling=\"no\" noresize=\"noresize\">");
 277.279 +                                printf("</frameset>");
 277.280 +                                printf("<noframes>");
 277.281 +                                printf("</noframes>");
 277.282 +                              printf("</html>\n");
 277.283 +                              printf("<!--===========================================================================-->\n");
 277.284 +                              printf("<!--                   Copyright and Trademark Legal Notice                    -->\n");
 277.285 +                              printf("<!--===========================================================================-->\n");
 277.286 +                              printf("<!--                                                                           -->\n");
 277.287 +                              printf("<!--                  All textual and graphical site content:                  -->\n");
 277.288 +                              printf("<!--                                                                           -->\n");
 277.289 +                              printf("<!--  Copyright (C) 2001 - 2010 Brent Angeline / interos.com / interos.        -->\n");
 277.290 +                              printf("<!--  Reproduction in whole or part without written permission is prohibited.  -->\n");
 277.291 +                              printf("<!--  All rights reserved.  interos.com and the interos logos are              -->\n");
 277.292 +                              printf("<!--  trademarks of Brent Angeline / interos.com / interos.                    -->\n");
 277.293 +                              printf("<!--  All other company names, product names and services mentioned herein     -->\n");
 277.294 +                              printf("<!--  may be the property of their respective owners.                          -->\n");
 277.295 +                              printf("<!--                                                                           -->\n");
 277.296 +                              printf("<!--===========================================================================-->\n");
 277.297 +                              printf("<!--                         e-mail: info@interos.com                          -->\n");
 277.298 +                              printf("<!--===========================================================================-->");
 277.299 +
 277.300 +                              free(address);
 277.301 +                              free(search);
 277.302 +                            }
 277.303 +                            free(filePassword);
 277.304 +                          }
 277.305 +                        }
 277.306 +                      }
 277.307 +                      free(passwordFileName);
 277.308 +                    }
 277.309 +                  }
 277.310 +                  free(systemDirectory);
 277.311 +                }
 277.312 +                free(directory);
 277.313 +              }
 277.314 +              free(login);
 277.315 +            }
 277.316 +            free(password);
 277.317 +            free(variableValue);
 277.318 +          }
 277.319 +          free(variableName);
 277.320 +        }
 277.321 +        free(cookie);
 277.322 +      }
 277.323 +    }
 277.324 +  }
 277.325 +  return 0;
 277.326 +}
 277.327 +
 277.328 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
 277.329 +static void RedirectToLoginPanel(void) {
 277.330 +  printf("Location: login\r\n\r\n");
 277.331 +}
 277.332 +
 277.333 +static void BeginXHTMLOutput(void) {
 277.334 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
 277.335 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
 277.336 +}
 277.337 +
 277.338 +static void FinishXHTMLOutput(void) {
 277.339 +  printf("  <!--=====================================================================-->\n");
 277.340 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
 277.341 +  printf("  <!--=====================================================================-->\n");
 277.342 +  printf("  <!--                                                                     -->\n");
 277.343 +  printf("  <!--          All original textual and graphical site content:           -->\n");
 277.344 +  printf("  <!--                                                                     -->\n");
 277.345 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
 277.346 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
 277.347 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
 277.348 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
 277.349 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
 277.350 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
 277.351 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
 277.352 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
 277.353 +  printf("  <!--                                                                     -->\n");
 277.354 +  printf("  <!--=====================================================================-->\n");
 277.355 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
 277.356 +  printf("  <!--=====================================================================-->\n");
 277.357 +  printf("</html>");
 277.358 +}
 277.359 +
 277.360 +/***********************************************************************/
 277.361 +/*                  Copyright and Trademark Statement                  */
 277.362 +/***********************************************************************/
 277.363 +/*                                                                     */
 277.364 +/*          All original textual and graphical site content:           */
 277.365 +/*                                                                     */
 277.366 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
 277.367 +/*  reserved.  Reproduction in whole or in part without written        */
 277.368 +/*  permission is prohibited.  interos and the interos logos are       */
 277.369 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 277.370 +/*  product, and service names mentioned herein may be the properties  */
 277.371 +/*  of their respective owners.  Comments in the interos.org forums    */
 277.372 +/*  are the properties of their respective authors.  All software      */
 277.373 +/*  developed in the forums is open source and belongs to everyone.    */
 277.374 +/*                                                                     */
 277.375 +/***********************************************************************/
 277.376 +/*                      e-mail: info@interos.com                       */
 277.377 +/***********************************************************************/
   278.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   278.2 +++ b/xml/c/content_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
   278.3 @@ -0,0 +1,390 @@
   278.4 +/***************************************************/
   278.5 +/*   interos Standard Document Header - CGI in C   */
   278.6 +/***************************************************/
   278.7 +/*         URIs:  https://interos.com/content      */
   278.8 +/*                https://www.interos.com/content  */
   278.9 +/*       Source:  content.c                        */
  278.10 +/*  Description:  FastCGI for interos content      */
  278.11 +/*       Author:  Brent Angeline                   */
  278.12 +/*          CGI:  FastCGI in ISO/ANSI C            */
  278.13 +/***************************************************/
  278.14 +
  278.15 +/* PREPROCESSOR DIRECTIVES */
  278.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                      */
  278.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
  278.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                               */
  278.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                   */
  278.20 +#include <unistd.h>         /*  F_OK, access()                                                           */
  278.21 +
  278.22 +/* FUNCTION PROTOTYPE DECLARATIONS */
  278.23 +static void RedirectToLoginPanel(void);
  278.24 +static void OutputContent(const char *variableName, char *variableValue);
  278.25 +
  278.26 +/* BEGIN MAIN PROGRAM */
  278.27 +int main(void) {
  278.28 +
  278.29 +  /* BEGIN FASTCGI */
  278.30 +  while (FCGI_Accept() >= 0) {
  278.31 +
  278.32 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
  278.33 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
  278.34 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
  278.35 +      RedirectToLoginPanel();
  278.36 +
  278.37 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  278.38 +    } else {
  278.39 +
  278.40 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
  278.41 +      char *cookie;
  278.42 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
  278.43 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
  278.44 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
  278.45 +        RedirectToLoginPanel();
  278.46 +      } else {
  278.47 +        char *variableName;
  278.48 +        if (!(variableName = malloc(cookieLength + 1))) {
  278.49 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
  278.50 +          RedirectToLoginPanel();
  278.51 +        } else {
  278.52 +          char *variableValue;
  278.53 +          if (!(variableValue = malloc(cookieLength + 1))) {
  278.54 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
  278.55 +            RedirectToLoginPanel();
  278.56 +
  278.57 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
  278.58 +          } else {
  278.59 +
  278.60 +            /* PROCESS COOKIE DATA */
  278.61 +            char *login, *password;
  278.62 +            INT c, i;
  278.63 +            login = password = NULL;
  278.64 +            c = 0;
  278.65 +            strcpy(cookie, getenv("HTTP_COOKIE"));
  278.66 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
  278.67 +              i = 0;
  278.68 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
  278.69 +                variableName[i] = cookie[c];
  278.70 +                ++c;
  278.71 +                ++i;
  278.72 +              }
  278.73 +              variableName[i] = '\0';
  278.74 +              ++c;
  278.75 +              i = 0;
  278.76 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
  278.77 +                variableValue[i] = cookie[c];
  278.78 +                ++c;
  278.79 +                ++i;
  278.80 +              }
  278.81 +              variableValue[i] = '\0';
  278.82 +              ++c;
  278.83 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
  278.84 +                ++c;
  278.85 +              }
  278.86 +              if (!login && !strcmp(variableName, "login")) {
  278.87 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
  278.88 +                  strcpy(login, variableValue);
  278.89 +                }
  278.90 +              } else if (!password && !strcmp(variableName, "password")) {
  278.91 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
  278.92 +                  strcpy(password, variableValue);
  278.93 +                }
  278.94 +              }
  278.95 +            }
  278.96 +
  278.97 +            /* IF LOGIN VALUE IS MISSING... */
  278.98 +            if (!login) {
  278.99 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
 278.100 +              RedirectToLoginPanel();
 278.101 +
 278.102 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
 278.103 +            } else {
 278.104 +
 278.105 +              /* VERIFY LOGIN AND PASSWORD */
 278.106 +              char *directory;
 278.107 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
 278.108 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
 278.109 +                RedirectToLoginPanel();
 278.110 +              } else {
 278.111 +                char *systemDirectory;
 278.112 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
 278.113 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
 278.114 +                  RedirectToLoginPanel();
 278.115 +                } else {
 278.116 +                  strcpy(directory, DIRECTORY);
 278.117 +                  strcat(directory, login);
 278.118 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
 278.119 +                  strcat(systemDirectory, login);
 278.120 +
 278.121 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
 278.122 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
 278.123 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
 278.124 +                    RedirectToLoginPanel();
 278.125 +
 278.126 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
 278.127 +                  } else {
 278.128 +
 278.129 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
 278.130 +                    char *passwordFileName;
 278.131 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
 278.132 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
 278.133 +                      RedirectToLoginPanel();
 278.134 +                    } else {
 278.135 +                      strcpy(passwordFileName, systemDirectory);
 278.136 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
 278.137 +
 278.138 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
 278.139 +                      if (access(passwordFileName, F_OK)) {
 278.140 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
 278.141 +                        RedirectToLoginPanel();
 278.142 +
 278.143 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
 278.144 +                      } else {
 278.145 +
 278.146 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
 278.147 +                        FILE *passwordFile;
 278.148 +
 278.149 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
 278.150 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
 278.151 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
 278.152 +                          RedirectToLoginPanel();
 278.153 +
 278.154 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
 278.155 +                        } else {
 278.156 +                          char *filePassword;
 278.157 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
 278.158 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
 278.159 +                            RedirectToLoginPanel();
 278.160 +                          } else {
 278.161 +                            char c;
 278.162 +                            i = 0;
 278.163 +
 278.164 +                            /* READ PASSWORD FROM PASSWORD FILE */
 278.165 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
 278.166 +                              filePassword[i] = c;
 278.167 +                              ++i;
 278.168 +                            }
 278.169 +                            filePassword[i] = '\0';
 278.170 +                            fclose(passwordFile);
 278.171 +
 278.172 +                            /* IF PASSWORD FAILS COMPARISON... */
 278.173 +                            if (strcmp(filePassword, password)) {
 278.174 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
 278.175 +                              RedirectToLoginPanel();
 278.176 +
 278.177 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
 278.178 +                            } else {
 278.179 +
 278.180 +                              /* LOAD SETTINGS VALUES FROM FILES */
 278.181 +
 278.182 +                              /* LOAD interos CONTENT COMPONENTS FROM FILES */
 278.183 +
 278.184 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
 278.185 +                              char *new, *open, *text_file, *status;
 278.186 +                              new = open = text_file = status = NULL;
 278.187 +
 278.188 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
 278.189 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
 278.190 +                                char *query;
 278.191 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
 278.192 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
 278.193 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
 278.194 +                                } else {
 278.195 +                                  free(variableName);
 278.196 +                                  strcpy(query, getenv("QUERY_STRING"));
 278.197 +                                  if (!(variableName = malloc(queryLength + 1))) {
 278.198 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
 278.199 +                                  } else {
 278.200 +                                    free(variableValue);
 278.201 +                                    if (!(variableValue = malloc(queryLength + 1))) {
 278.202 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
 278.203 +
 278.204 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
 278.205 +                                    } else {
 278.206 +
 278.207 +                                      /* PROCESS QUERY DATA */
 278.208 +                                      INT q = 0;
 278.209 +                                      i = 0;
 278.210 +                                      while ((q < queryLength) && (query[q] != '\0')) {
 278.211 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
 278.212 +                                          variableName[i] = query[q];
 278.213 +                                          ++q;
 278.214 +                                          ++i;
 278.215 +                                        }
 278.216 +                                        variableName[i] = '\0';
 278.217 +                                        ++q;
 278.218 +                                        i = 0;
 278.219 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
 278.220 +                                          variableValue[i] = query[q];
 278.221 +                                          ++q;
 278.222 +                                          ++i;
 278.223 +                                        }
 278.224 +                                        variableValue[i] = '\0';
 278.225 +                                        if (query[q] != '\0') {
 278.226 +                                          ++q;
 278.227 +                                        }
 278.228 +                                        if (!new && !strcmp(variableName, "new")) {
 278.229 +                                          if ((new = malloc(strlen(variableValue) + 1)) != 0) {
 278.230 +                                            strcpy(new, variableValue);
 278.231 +                                          }
 278.232 +                                        } else if (!open && !strcmp(variableName, "open")) {
 278.233 +                                          if ((open = malloc(strlen(variableValue) + 1)) != 0) {
 278.234 +                                            strcpy(open, variableValue);
 278.235 +                                          }
 278.236 +                                        } else if (!text_file && !strcmp(variableName, "text_file")) {
 278.237 +                                          if ((text_file = malloc(strlen(variableValue) + 1)) != 0) {
 278.238 +                                            strcpy(text_file, variableValue);
 278.239 +                                          }
 278.240 +                                        } else if (!status && !strcmp(variableName, "status")) {
 278.241 +                                          if ((status = malloc(strlen(variableValue) + 1)) != 0) {
 278.242 +                                            strcpy(status, variableValue);
 278.243 +                                          }
 278.244 +                                        }
 278.245 +                                      }
 278.246 +                                      free(variableValue);
 278.247 +                                      variableValue = NULL;
 278.248 +                                    }
 278.249 +                                    free(variableName);
 278.250 +                                    variableName = NULL;
 278.251 +                                  }
 278.252 +                                  free(query);
 278.253 +                                }
 278.254 +                              }
 278.255 +
 278.256 +                              /* OUTPUT XHTML FOR interos CONTENT */
 278.257 +                              if (new) {
 278.258 +                                OutputContent("new", new);
 278.259 +                              } else if (open) {
 278.260 +                                OutputContent("open", open);
 278.261 +                              } else if (text_file) {
 278.262 +                                OutputContent("text_file", text_file);
 278.263 +                              } else if (status) {
 278.264 +                                OutputContent("status", status);
 278.265 +                              } else {
 278.266 +                                OutputContent(NULL, NULL);
 278.267 +                              }
 278.268 +                              free(status);
 278.269 +                              free(text_file);
 278.270 +                              free(open);
 278.271 +                              free(new);
 278.272 +                            }
 278.273 +                            free(filePassword);
 278.274 +                          }
 278.275 +                        }
 278.276 +                      }
 278.277 +                      free(passwordFileName);
 278.278 +                    }
 278.279 +                  }
 278.280 +                  free(systemDirectory);
 278.281 +                }
 278.282 +                free(directory);
 278.283 +              }
 278.284 +              free(login);
 278.285 +            }
 278.286 +            free(password);
 278.287 +            free(variableValue);
 278.288 +          }
 278.289 +          free(variableName);
 278.290 +        }
 278.291 +        free(cookie);
 278.292 +      }
 278.293 +    }
 278.294 +  }
 278.295 +  return 0;
 278.296 +}
 278.297 +
 278.298 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
 278.299 +static void RedirectToLoginPanel(void) {
 278.300 +  printf("Location: login\r\n\r\n");
 278.301 +}
 278.302 +
 278.303 +/* FUNCTION | OUTPUT XHTML FOR interos CONTENT */
 278.304 +static void OutputContent(const char *variableName, char *variableValue) {
 278.305 +  printf("Content-Type: text/html\r\n\r\n");
 278.306 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
 278.307 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/content.css\"?>\n");
 278.308 +  printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n");
 278.309 +  printf("                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
 278.310 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
 278.311 +  printf("  <!--=================================================-->\n");
 278.312 +  printf("  <!--    interos Standard Document Header - Markup    -->\n");
 278.313 +  printf("  <!--=================================================-->\n");
 278.314 +  printf("  <!--    URIs:  https://interos.com/content           -->\n");
 278.315 +  printf("  <!--           https://www.interos.com/content       -->\n");
 278.316 +  printf("  <!--   Title:  interos content                       -->\n");
 278.317 +  printf("  <!--  Author:  Brent Angeline                        -->\n");
 278.318 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->\n");
 278.319 +  printf("  <!--=================================================-->\n");
 278.320 +  printf("  <head>\n");
 278.321 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 278.322 +  printf("    <meta name=\"title\" content=\"interos content\" />\n");
 278.323 +  printf("    <meta name=\"description\" content=\"middle frame for interos content\" />\n");
 278.324 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 278.325 +  printf("    <meta name=\"copyright\" \n");
 278.326 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
 278.327 +  printf("    <meta name=\"robots\" content=\"noindex,nofollow,noarchive\" />\n");
 278.328 +  printf("    <title>interos content</title>\n");
 278.329 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
 278.330 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
 278.331 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/content.css\" />\n");
 278.332 +  printf("    <script type=\"text/javascript\" src=\"/js/content.js\"></script>\n");
 278.333 +  printf("  </head>\n");
 278.334 +  printf("  <body>\n");
 278.335 +  printf("    <div id=\"content\">\n");
 278.336 +  if (variableName && variableValue) {
 278.337 +    if (!strcmp(variableName, "new")) {
 278.338 +      if (!strcmp(variableValue, "text_file")) {
 278.339 +        printf("      <applet code=\"text_editor\" \n");
 278.340 +        printf("              archive=\"/java/text_editor.jar,/java/interos_connect.jar\" \n");
 278.341 +        printf("              width=\"100%%\" \n");
 278.342 +        printf("              height=\"100%%\"></applet>\n");
 278.343 +      }
 278.344 +    } else if (!strcmp(variableName, "text_file")) {
 278.345 +        printf("      <applet code=\"text_editor\" \n");
 278.346 +        printf("              archive=\"/java/text_editor.jar,/java/interos_connect.jar\" \n");
 278.347 +        printf("              width=\"100%%\" \n");
 278.348 +        printf("              height=\"100%%\">\n");
 278.349 +        printf("        <param name=\"text_file\" value=\"%s\" />\n", variableValue);
 278.350 +        printf("      </applet>\n");
 278.351 +    }
 278.352 +  }
 278.353 +  printf("    </div>\n");
 278.354 +  printf("  </body>\n");
 278.355 +  printf("  <!--=====================================================================-->\n");
 278.356 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
 278.357 +  printf("  <!--=====================================================================-->\n");
 278.358 +  printf("  <!--                                                                     -->\n");
 278.359 +  printf("  <!--          All original textual and graphical site content:           -->\n");
 278.360 +  printf("  <!--                                                                     -->\n");
 278.361 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
 278.362 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
 278.363 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
 278.364 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
 278.365 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
 278.366 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
 278.367 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
 278.368 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
 278.369 +  printf("  <!--                                                                     -->\n");
 278.370 +  printf("  <!--=====================================================================-->\n");
 278.371 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
 278.372 +  printf("  <!--=====================================================================-->\n");
 278.373 +  printf("</html>");
 278.374 +}
 278.375 +
 278.376 +/***********************************************************************/
 278.377 +/*                  Copyright and Trademark Statement                  */
 278.378 +/***********************************************************************/
 278.379 +/*                                                                     */
 278.380 +/*          All original textual and graphical site content:           */
 278.381 +/*                                                                     */
 278.382 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
 278.383 +/*  reserved.  Reproduction in whole or in part without written        */
 278.384 +/*  permission is prohibited.  interos and the interos logos are       */
 278.385 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 278.386 +/*  product, and service names mentioned herein may be the properties  */
 278.387 +/*  of their respective owners.  Comments in the interos.org forums    */
 278.388 +/*  are the properties of their respective authors.  All software      */
 278.389 +/*  developed in the forums is open source and belongs to everyone.    */
 278.390 +/*                                                                     */
 278.391 +/***********************************************************************/
 278.392 +/*                      e-mail: info@interos.com                       */
 278.393 +/***********************************************************************/
   279.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   279.2 +++ b/xml/c/interos.c	Sat May 01 16:19:36 2010 -0400
   279.3 @@ -0,0 +1,1 @@
   279.4 +interos_interos.com_ssl.c
   279.5 \ No newline at end of file
   280.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   280.2 +++ b/xml/c/interos.h	Sat May 01 16:19:36 2010 -0400
   280.3 @@ -0,0 +1,1 @@
   280.4 +interos_interos.com_ssl.h
   280.5 \ No newline at end of file
   281.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   281.2 +++ b/xml/c/interos.org.h	Sat May 01 16:19:36 2010 -0400
   281.3 @@ -0,0 +1,1 @@
   281.4 +interos.org_interos.org_ssl.h
   281.5 \ No newline at end of file
   282.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   282.2 +++ b/xml/c/interos_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
   282.3 @@ -0,0 +1,229 @@
   282.4 +#include "fcgi_stdio.h"
   282.5 +#include "interos.h"
   282.6 +#include <stdlib.h>
   282.7 +#include <string.h>
   282.8 +#include <dirent.h>
   282.9 +#include <langinfo.h>
  282.10 +#include <sys/stat.h>
  282.11 +#include <unistd.h>
  282.12 +
  282.13 +/*  */
  282.14 +void outputErrorXML(const char *errorMessage) {
  282.15 +  printf("Content-Type: text/xml\r\n\r\n");
  282.16 +  printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
  282.17 +  printf("<directory>\n");
  282.18 +  printf("  <errorCode error=\"true\">\n");
  282.19 +  printf("    <description>%s</description>\n", errorMessage);
  282.20 +  printf("  </errorCode>\n");
  282.21 +  printf("</directory>");
  282.22 +}
  282.23 +
  282.24 +POSTDATA *getPostData(){
  282.25 +    POSTDATA* postdata = (POSTDATA*)(malloc(sizeof(POSTDATA)));
  282.26 +	postdata->postData = NULL;
  282.27 +	postdata->length = 0;
  282.28 +	/* IF POST DATA DOESN'T EXIST OR IS TOO LONG... */
  282.29 +	if (!getenv("CONTENT_LENGTH") || (sizeof(STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10)) > sizeof(INT))) {
  282.30 +	/** ERROR | POST DATA DOES NOT EXIST OR IS TOO LONG > OUTPUT ERROR XML **/
  282.31 +	outputErrorXML("No post data was received by the web server.");
  282.32 +	free(postdata);
  282.33 +	postdata = NULL;
  282.34 +
  282.35 +	/* OTHERWISE, IF POST DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  282.36 +	} else {
  282.37 +
  282.38 +		/* ATTEMPT TO ALLOCATE MEMORY FOR POST VARIABLES */
  282.39 +		void* post;
  282.40 +		INT postLength = STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10);
  282.41 +		if ((postLength < 1) || !(post = malloc(postLength + 1))) {
  282.42 +		  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR POST DATA! > OUTPUT ERROR XML **/
  282.43 +		  outputErrorXML("The length of the post data string received by the web server was indicated to be less than 1 byte.");
  282.44 +		  free(postdata);
  282.45 +		  postdata = NULL;
  282.46 +		} else {
  282.47 +			/* PROCESS POST DATA */
  282.48 +			fread(post, postLength, 1, stdin);
  282.49 +			postdata->postData = post;
  282.50 +			postdata->length = postLength;
  282.51 +		}
  282.52 +	}
  282.53 +	return postdata;
  282.54 +}
  282.55 +
  282.56 +char* validateCookie() {
  282.57 +	char *username = NULL;
  282.58 +
  282.59 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
  282.60 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
  282.61 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > OUTPUT ERROR XML **/
  282.62 +      outputErrorXML("No cookie data was received by the web server.");
  282.63 +
  282.64 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  282.65 +    } else {
  282.66 +
  282.67 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
  282.68 +      char *cookie;
  282.69 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
  282.70 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
  282.71 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > OUTPUT ERROR XML **/
  282.72 +        outputErrorXML("The length of the cookie data string received by the web server was indicated to be less than 1 byte.");
  282.73 +      } else {
  282.74 +        char *variableName;
  282.75 +        if (!(variableName = malloc(cookieLength + 1))) {
  282.76 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > OUTPUT ERROR XML **/
  282.77 +          outputErrorXML("Sufficient memory could not be allocated on the server for cookie variable names.");
  282.78 +        } else {
  282.79 +          char *variableValue;
  282.80 +          if (!(variableValue = malloc(cookieLength + 1))) {
  282.81 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > OUTPUT ERROR XML **/
  282.82 +            outputErrorXML("Sufficient memory could not be allocated on the server for cookie variable values.");
  282.83 +
  282.84 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
  282.85 +          } else {
  282.86 +
  282.87 +            /* PROCESS COOKIE DATA */
  282.88 +            char *login, *password;
  282.89 +            INT i, c;
  282.90 +            login = password = NULL;
  282.91 +            c = 0;
  282.92 +            strcpy(cookie, getenv("HTTP_COOKIE"));
  282.93 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
  282.94 +              i = 0;
  282.95 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
  282.96 +                variableName[i] = cookie[c];
  282.97 +                ++c;
  282.98 +                ++i;
  282.99 +              }
 282.100 +              variableName[i] = '\0';
 282.101 +              ++c;
 282.102 +              i = 0;
 282.103 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
 282.104 +                variableValue[i] = cookie[c];
 282.105 +                ++c;
 282.106 +                ++i;
 282.107 +              }
 282.108 +              variableValue[i] = '\0';
 282.109 +              ++c;
 282.110 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
 282.111 +                ++c;
 282.112 +              }
 282.113 +              if (!login && !strcmp(variableName, "login")) {
 282.114 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
 282.115 +                  strcpy(login, variableValue);
 282.116 +                }
 282.117 +              } else if (!password && !strcmp(variableName, "password")) {
 282.118 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
 282.119 +                  strcpy(password, variableValue);
 282.120 +                }
 282.121 +              }
 282.122 +            }
 282.123 +
 282.124 +            /* IF LOGIN VALUE IS MISSING... */
 282.125 +            if (!login) {
 282.126 +              /** ERROR | LOGIN VALUE IS MISSING > OUTPUT ERROR XML */
 282.127 +              outputErrorXML("No login value was received.");
 282.128 +
 282.129 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
 282.130 +            } else {
 282.131 +
 282.132 +              /* VERIFY LOGIN AND PASSWORD */
 282.133 +              char *directory;
 282.134 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
 282.135 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > OUTPUT ERROR XML **/
 282.136 +                outputErrorXML("Sufficient memory could not be allocated on the server for the user's home directory name.");
 282.137 +              } else {
 282.138 +                char *systemDirectory;
 282.139 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
 282.140 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > OUTPUT ERROR XML **/
 282.141 +                  outputErrorXML("Sufficient memory could not be allocated on the server for the user's system directory name.");
 282.142 +                } else {
 282.143 +                  strcpy(directory, DIRECTORY);
 282.144 +                  strcat(directory, login);
 282.145 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
 282.146 +                  strcat(systemDirectory, login);
 282.147 +
 282.148 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
 282.149 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
 282.150 +                    /** ERROR | CANNOT ACCESS DIRECTORY > OUTPUT ERROR XML **/
 282.151 +                    outputErrorXML("The user's home directory on the server could not be accessed.");
 282.152 +
 282.153 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
 282.154 +                  } else {
 282.155 +
 282.156 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
 282.157 +                    char *passwordFileName;
 282.158 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
 282.159 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > OUTPUT ERROR XML **/
 282.160 +                      outputErrorXML("Sufficient memory could not be allocated on the server for the name of the user's password file.");
 282.161 +                    } else {
 282.162 +                      strcpy(passwordFileName, systemDirectory);
 282.163 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
 282.164 +
 282.165 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
 282.166 +                      if (access(passwordFileName, F_OK)) {
 282.167 +                        /** ERROR | CANNOT ACCESS FILE > OUTPUT ERROR XML **/
 282.168 +                        outputErrorXML("The user's password file on the server cannot be accessed.");
 282.169 +
 282.170 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
 282.171 +                      } else {
 282.172 +
 282.173 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
 282.174 +                        FILE *passwordFile;
 282.175 +
 282.176 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
 282.177 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
 282.178 +                          /** ERROR | CANNOT READ FILE > OUTPUT ERROR XML **/
 282.179 +                          outputErrorXML("The user's password file on the server cannot be opened for reading.");
 282.180 +
 282.181 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
 282.182 +                        } else {
 282.183 +                          char *filePassword;
 282.184 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
 282.185 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > OUTPUT ERROR XML **/
 282.186 +                            outputErrorXML("Sufficient memory could not be allocated on the server for reading the user's password.");
 282.187 +                          } else {
 282.188 +                            char c;
 282.189 +                            i = 0;
 282.190 +
 282.191 +                            /* READ PASSWORD FROM PASSWORD FILE */
 282.192 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
 282.193 +                              filePassword[i] = c;
 282.194 +                              ++i;
 282.195 +                            }
 282.196 +                            filePassword[i] = '\0';
 282.197 +                            fclose(passwordFile);
 282.198 +
 282.199 +                            /* IF PASSWORD FAILS COMPARISON... */
 282.200 +                            if (strcmp(filePassword, password)) {
 282.201 +                              /** ERROR | PASSWORD FAILED > OUTPUT ERROR XML **/
 282.202 +                              outputErrorXML("The password provided failed comparison with the password stored on the server.");
 282.203 +
 282.204 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
 282.205 +                            } else {
 282.206 +								username = login;
 282.207 +                            }
 282.208 +                            free(filePassword);
 282.209 +                          }
 282.210 +                        }
 282.211 +                      }
 282.212 +                      free(passwordFileName);
 282.213 +                    }
 282.214 +                  }
 282.215 +                  free(systemDirectory);
 282.216 +                }
 282.217 +                free(directory);
 282.218 +              }
 282.219 +			  if(!username && login)
 282.220 +				free(login);
 282.221 +
 282.222 +            }
 282.223 +            free(password);
 282.224 +            free(variableValue);
 282.225 +          }
 282.226 +          free(variableName);
 282.227 +        }
 282.228 +        free(cookie);
 282.229 +      }
 282.230 +    }
 282.231 +  return username;
 282.232 +}
   283.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   283.2 +++ b/xml/c/interos_interos.com_ssl.h	Sat May 01 16:19:36 2010 -0400
   283.3 @@ -0,0 +1,117 @@
   283.4 +/*************************************************************/
   283.5 +/*  interos Standard Document Header - CGI in C Header File  */
   283.6 +/*************************************************************/
   283.7 +/*              Source:  interos.h                           */
   283.8 +/*         Description:  FastCGI Header for interos          */
   283.9 +/*              Author:  Brent Angeline                      */
  283.10 +/*                 CGI:  FastCGI in ISO/ANSI C               */
  283.11 +/*************************************************************/
  283.12 +
  283.13 +/* PREPROCESSOR DIRECTIVES */
  283.14 +# ifndef INTEROS_H
  283.15 +
  283.16 +#   define INTEROS_H
  283.17 +
  283.18 +  /* HEADER FILES INCLUDED BY C SOURCE */
  283.19 +#   ifndef INTEROS_H
  283.20 +
  283.21 +#     include "fcgi_stdio.h"            /*  FCGI_Accept(), fclose(), fgetc(), fopen(), fread(), printf()  */
  283.22 +#     include <ctype.h>                 /*  tolower()                                                     */
  283.23 +#     include <stdlib.h>                /*  free(), getenv(), malloc(), strtoul()                         */
  283.24 +#     include <string.h>                /*  strcat(), strcmp(), strcpy(), strlen()                        */
  283.25 +#     include <unistd.h>                /*  F_OK, access()                                                */
  283.26 +
  283.27 +#   endif
  283.28 +
  283.29 +  /* DEFINITION DIRECTIVES */
  283.30 +#   define INT                          unsigned long
  283.31 +#   define STRING_TO_INT                strtoul
  283.32 +#   define DIRECTORY                    "/srv/https/interos.com/"
  283.33 +#   define SYSTEM_DIRECTORY             "/srv/data/interos/"
  283.34 +#   define PASSWORD_FILE_NAME           "/.htpasswd"
  283.35 +#   define MAX_PASSWORD_SIZE            16
  283.36 +
  283.37 +  /* NEW USER DEFINITION DIRECTIVES */
  283.38 +#   define SYSTEM_DIRECTORY_COMMAND     "cp -pRP /srv/data/interos/sys/data /srv/data/interos/"
  283.39 +#   define DIRECTORY_COMMAND            "cp -pRP /srv/data/interos/sys/user /srv/https/interos.com/"
  283.40 +#   define ECHO_COMMAND                 "echo "
  283.41 +#   define PASSWORD_OUT                 " > /srv/data/interos/"
  283.42 +
  283.43 +  /* TYPE DEFINITION */
  283.44 +  typedef struct {
  283.45 +    char *name;
  283.46 +    char *link;
  283.47 +    char *icon;
  283.48 +    struct MENU_ITEM *next;
  283.49 +  } MENU_ITEM;
  283.50 +
  283.51 +  /**
  283.52 +    Used by getPOSTData for storage of the POST data.
  283.53 +
  283.54 +
  283.55 +    length: The number of bytes allocated for postData.
  283.56 +
  283.57 +    postData: Allocated chunk of memory containing the POST data. The interpretation of that data
  283.58 +              depends on what the CGI program getting the data is expecting.
  283.59 +  */
  283.60 +  typedef struct{
  283.61 +      void *postData;
  283.62 +      INT length;
  283.63 +  }POSTDATA;
  283.64 +
  283.65 +  /**
  283.66 +    Obtains the POST data that was sent by the client connecting to the HTTP(S) server and stores it
  283.67 +    in POSTDATA struct. The POSTDATA->postData is a chunk of memory copied from the client. If the data
  283.68 +    is to be interpreted as a string, one should not expect it to be null terminated, which is why length
  283.69 +    is part of the POSTDATA struct.
  283.70 +
  283.71 +    One more byte of memory is allocated for POSTDATA->postData for conveniance. In the event that the
  283.72 +    POST data is interpreted as a string, one may set POSTDATA->postData[POSTDATA->length] = '\0' without
  283.73 +    having to use realloc.
  283.74 +
  283.75 +    @return An allocated struct POSTDATA with allocated postData of size length+1. If there is no POST data,
  283.76 +            it will return an allocated struct POSTDATA with length 0 and postData NULL. If there was an error
  283.77 +            getting the post data, it will call outputErrorXML() with the apropriate error and return NULL.
  283.78 +  */
  283.79 +  POSTDATA *getPOSTData();
  283.80 +
  283.81 +  /**
  283.82 +    Obtains cookie data from the HTTP header and validates it with the appropriate login.
  283.83 +    If the cookie data has the correct username and password, the function will return
  283.84 +    the username. If validation fails, it will automatically call outputErrorXML with
  283.85 +    the appropriate error information and return NULL.
  283.86 +
  283.87 +    @return An allocated string containing the username from the cookie data, or NULL
  283.88 +            if validation failed.
  283.89 +
  283.90 +  */
  283.91 +  char *validateCookie();
  283.92 +
  283.93 +  /**
  283.94 +    Prints an error XML.
  283.95 +
  283.96 +    @param errorMessage A string that contains the description of the error.
  283.97 +  */
  283.98 +  void outputErrorXML(const char *errorMessage);
  283.99 +
 283.100 +
 283.101 +# endif
 283.102 +
 283.103 +/***********************************************************************/
 283.104 +/*                  Copyright and Trademark Statement                  */
 283.105 +/***********************************************************************/
 283.106 +/*                                                                     */
 283.107 +/*          All original textual and graphical site content:           */
 283.108 +/*                                                                     */
 283.109 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
 283.110 +/*  reserved.  Reproduction in whole or in part without written        */
 283.111 +/*  permission is prohibited.  interos and the interos logos are       */
 283.112 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 283.113 +/*  product, and service names mentioned herein may be the properties  */
 283.114 +/*  of their respective owners.  Comments in the interos.org forums    */
 283.115 +/*  are the properties of their respective authors.  All software      */
 283.116 +/*  developed in the forums is open source and belongs to everyone.    */
 283.117 +/*                                                                     */
 283.118 +/***********************************************************************/
 283.119 +/*                      e-mail: info@interos.com                       */
 283.120 +/***********************************************************************/
   284.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   284.2 +++ b/xml/c/login_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
   284.3 @@ -0,0 +1,359 @@
   284.4 +/*************************************************/
   284.5 +/*  interos Standard Document Header - CGI in C  */
   284.6 +/*************************************************/
   284.7 +/*         URIs:  https://interos.com/login      */
   284.8 +/*                https://www.interos.com/login  */
   284.9 +/*       Source:  login.c                        */
  284.10 +/*  Description:  FastCGI for interos login      */
  284.11 +/*       Author:  Brent Angeline                 */
  284.12 +/*          CGI:  FastCGI in ISO/ANSI C          */
  284.13 +/*************************************************/
  284.14 +
  284.15 +/* PREPROCESSOR DIRECTIVES */
  284.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), fread(), printf()                            */
  284.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, PASSWORD_FILE_NAME, STRING_TO_INT, SYSTEM_DIRECTORY  */
  284.18 +#include <ctype.h>          /*  tolower()                                                                               */
  284.19 +#include <stdlib.h>         /*  free(), getenv(), malloc(), strtoul()                                                   */
  284.20 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                                  */
  284.21 +#include <unistd.h>         /*  F_OK, access()                                                                          */
  284.22 +
  284.23 +/* FUNCTION PROTOTYPE DECLARATION */
  284.24 +static void OutputLoginPanel(void);
  284.25 +
  284.26 +/* BEGIN MAIN PROGRAM */
  284.27 +int main(void) {
  284.28 +
  284.29 +  /* BEGIN FASTCGI */
  284.30 +  while (FCGI_Accept() >= 0) {
  284.31 +
  284.32 +    /* IF POST DATA DOESN'T EXIST OR IS TOO LONG... */
  284.33 +    if (!getenv("CONTENT_LENGTH") || (sizeof(STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10)) > sizeof(INT))) {
  284.34 +
  284.35 +      /* OUTPUT XHTML FOR LOGIN PANEL */
  284.36 +      OutputLoginPanel();
  284.37 +
  284.38 +    /* OTHERWISE, IF POST DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  284.39 +    } else {
  284.40 +
  284.41 +      /* ATTEMPT TO ALLOCATE MEMORY FOR POST VARIABLES */
  284.42 +      char *post;
  284.43 +      INT postLength = STRING_TO_INT(getenv("CONTENT_LENGTH"), (char **) NULL, 10);
  284.44 +      if ((postLength < 1) || !(post = malloc(postLength + 1))) {
  284.45 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR POST DATA! > OUTPUT XHTML FOR LOGIN PANEL **/
  284.46 +        OutputLoginPanel();
  284.47 +      } else {
  284.48 +        char *variableName;
  284.49 +        if (!(variableName = malloc(postLength + 1))) {
  284.50 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR POST VARIABLE NAME > OUTPUT XHTML FOR LOGIN PANEL **/
  284.51 +          OutputLoginPanel();
  284.52 +        } else {
  284.53 +          char *variableValue;
  284.54 +          if (!(variableValue = malloc(postLength + 1))) {
  284.55 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR POST VARIABLE VALUE > OUTPUT XHTML FOR LOGIN PANEL **/
  284.56 +            OutputLoginPanel();
  284.57 +
  284.58 +          /* IF SUFFICIENT MEMORY FOR POST VARIABLES... */
  284.59 +          } else {
  284.60 +
  284.61 +            /* PROCESS POST DATA */
  284.62 +            char *login, *password;
  284.63 +            INT p, i;
  284.64 +            login = password = NULL;
  284.65 +            p = 0;
  284.66 +            fread(post, postLength, 1, stdin);
  284.67 +            post[postLength] = '\0';
  284.68 +            while ((p < postLength) && (post[p] != '\0')) {
  284.69 +              i = 0;
  284.70 +              while ((p < postLength) && (post[p] != '=') && (post[p] != '\0')) {
  284.71 +                variableName[i] = post[p];
  284.72 +                ++p;
  284.73 +                ++i;
  284.74 +              }
  284.75 +              variableName[i] = '\0';
  284.76 +              ++p;
  284.77 +              i = 0;
  284.78 +              while ((p < postLength) && (post[p] != '&') && (post[p] != '\0')) {
  284.79 +                variableValue[i] = post[p];
  284.80 +                ++p;
  284.81 +                ++i;
  284.82 +              }
  284.83 +              variableValue[i] = '\0';
  284.84 +              if (post[p] != '\0') {
  284.85 +                ++p;
  284.86 +              }
  284.87 +              if (!login && !strcmp(variableName, "login")) {
  284.88 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
  284.89 +                  strcpy(login, variableValue);
  284.90 +                  for (i = 0; i < strlen(login); ++i) {
  284.91 +                    login[i] = tolower(login[i]);
  284.92 +                  }
  284.93 +                }
  284.94 +              } else if (!password && !strcmp(variableName, "password")) {
  284.95 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
  284.96 +                  strcpy(password, variableValue);
  284.97 +                }
  284.98 +              }
  284.99 +            }
 284.100 +
 284.101 +            /* IF LOGIN VALUE IS MISSING... */
 284.102 +            if (!login) {
 284.103 +              /** ERROR | LOGIN VALUE IS MISSING > OUTPUT XHTML FOR LOGIN PANEL **/
 284.104 +              OutputLoginPanel();
 284.105 +
 284.106 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
 284.107 +            } else {
 284.108 +
 284.109 +              /* VERIFY LOGIN AND PASSWORD */
 284.110 +              char *directory;
 284.111 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
 284.112 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > OUTPUT XHTML FOR LOGIN PANEL **/
 284.113 +                OutputLoginPanel();
 284.114 +              } else {
 284.115 +                char *systemDirectory;
 284.116 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
 284.117 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > OUTPUT XHTML FOR LOGIN PANEL **/
 284.118 +                  OutputLoginPanel();
 284.119 +                } else {
 284.120 +                  strcpy(directory, DIRECTORY);
 284.121 +                  strcat(directory, login);
 284.122 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
 284.123 +                  strcat(systemDirectory, login);
 284.124 +
 284.125 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
 284.126 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
 284.127 +                    /** ERROR | CANNOT ACCESS DIRECTORY > OUTPUT XHTML FOR LOGIN PANEL **/
 284.128 +                    OutputLoginPanel();
 284.129 +
 284.130 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
 284.131 +                  } else {
 284.132 +
 284.133 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
 284.134 +                    char *passwordFileName;
 284.135 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
 284.136 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > OUTPUT XHTML FOR LOGIN PANEL **/
 284.137 +                      OutputLoginPanel();
 284.138 +                    } else {
 284.139 +                      strcpy(passwordFileName, systemDirectory);
 284.140 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
 284.141 +
 284.142 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
 284.143 +                      if (access(passwordFileName, F_OK)) {
 284.144 +                        /** ERROR | CANNOT ACCESS FILE > OUTPUT XHTML FOR LOGIN PANEL **/
 284.145 +                        OutputLoginPanel();
 284.146 +
 284.147 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
 284.148 +                      } else {
 284.149 +
 284.150 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
 284.151 +                        FILE *passwordFile;
 284.152 +
 284.153 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
 284.154 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
 284.155 +                          /** ERROR | CANNOT READ FILE > OUTPUT XHTML FOR LOGIN PANEL **/
 284.156 +                          OutputLoginPanel();
 284.157 +
 284.158 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
 284.159 +                        } else {
 284.160 +                          char *filePassword;
 284.161 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
 284.162 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > OUTPUT XHTML FOR LOGIN PANEL **/
 284.163 +                            OutputLoginPanel();
 284.164 +                          } else {
 284.165 +                            char c;
 284.166 +                            i = 0;
 284.167 +
 284.168 +                            /* READ PASSWORD FROM PASSWORD FILE */
 284.169 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
 284.170 +                              filePassword[i] = c;
 284.171 +                              ++i;
 284.172 +                            }
 284.173 +                            filePassword[i] = '\0';
 284.174 +                            fclose(passwordFile);
 284.175 +
 284.176 +                            /* IF NO PASSWORD FROM POST VARIABLES... */
 284.177 +                            if (!password) {
 284.178 +                              password = malloc(1);
 284.179 +                              password[0] = '\0';
 284.180 +                            }
 284.181 +
 284.182 +                            /* IF PASSWORD FAILS COMPARISON... */
 284.183 +                            if (strcmp(filePassword, password)) {
 284.184 +                              /** ERROR | PASSWORD FAILED > OUTPUT XHTML FOR LOGIN PANEL **/
 284.185 +                              OutputLoginPanel();
 284.186 +
 284.187 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
 284.188 +                            } else {
 284.189 +
 284.190 +                              /* SET COOKIES */
 284.191 +                              printf("Set-Cookie: login=%s; path=/; secure\r\n", login);
 284.192 +                              printf("Set-Cookie: password=%s; path=/; secure\r\n", password);
 284.193 +
 284.194 +                              /* REDIRECT LOGGED INTO interos */
 284.195 +                              printf("Location: welcome\r\n\r\n");
 284.196 +                            }
 284.197 +                            free(filePassword);
 284.198 +                          }
 284.199 +                        }
 284.200 +                      }
 284.201 +                      free(passwordFileName);
 284.202 +                    }
 284.203 +                  }
 284.204 +                  free(systemDirectory);
 284.205 +                }
 284.206 +                free(directory);
 284.207 +              }
 284.208 +              free(login);
 284.209 +            }
 284.210 +            free(password);
 284.211 +            free(variableValue);
 284.212 +          }
 284.213 +          free(variableName);
 284.214 +        }
 284.215 +        free(post);
 284.216 +      }
 284.217 +    }
 284.218 +  }
 284.219 +  return 0;
 284.220 +}
 284.221 +
 284.222 +/* FUNCTION | OUTPUT XHTML FOR LOGIN PANEL */
 284.223 +static void OutputLoginPanel(void) {
 284.224 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
 284.225 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
 284.226 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/login.css\"?>\n");
 284.227 +  printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n");
 284.228 +  printf("                      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
 284.229 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
 284.230 +  printf("  <!--=================================================-->\n");
 284.231 +  printf("  <!--    interos Standard Document Header - Markup    -->\n");
 284.232 +  printf("  <!--=================================================-->\n");
 284.233 +  printf("  <!--    URIs:  https://interos.com/login             -->\n");
 284.234 +  printf("  <!--           https://www.interos.com/login         -->\n");
 284.235 +  printf("  <!--   Title:  interos login                         -->\n");
 284.236 +  printf("  <!--  Author:  Brent Angeline                        -->\n");
 284.237 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional  -->\n");
 284.238 +  printf("  <!--=================================================-->\n");
 284.239 +  printf("  <head>\n");
 284.240 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 284.241 +  printf("    <meta name=\"title\" content=\"interos login\" />\n");
 284.242 +  printf("    <meta name=\"description\" content=\"enter into interos\" />\n");
 284.243 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 284.244 +  printf("    <meta name=\"copyright\" \n");
 284.245 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
 284.246 +  printf("    <meta name=\"robots\" content=\"index, nofollow, noarchive\" />\n");
 284.247 +  printf("    <title>interos login</title>\n");
 284.248 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
 284.249 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
 284.250 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/login.css\" \n");
 284.251 +  printf("          media=\"screen, projection\" />\n");
 284.252 +  printf("    <script type=\"text/javascript\" src=\"/js/login.js\"></script>\n");
 284.253 +  printf("  </head>\n");
 284.254 +  printf("  <body id=\"body\">\n");
 284.255 +  printf("    <center>\n");
 284.256 +  printf("      <p id=\"navigation\">\n");
 284.257 +  printf("        <a href=\"/about\">about</a> | \n");
 284.258 +  printf("        <a href=\"/blog\">blog</a> | \n");
 284.259 +  printf("        <a href=\"/code\">code</a> | \n");
 284.260 +  printf("        <a href=\"https://interos.org/\">develop</a> | \n");
 284.261 +  printf("        <a href=\"/e-mail\">e-mail</a> | \n");
 284.262 +  printf("        <a href=\"/f.a.q.\">f.a.q.</a> | \n");
 284.263 +  printf("        <a href=\"/gear\">gear</a> | \n");
 284.264 +  printf("        <a href=\"/help\">help</a>\n");
 284.265 +  printf("      </p>\n");
 284.266 +  printf("      <form id=\"loginForm\" name=\"loginForm\" action=\"/login\" method=\"post\">\n");
 284.267 +  printf("        <table id=\"mainPanel\">\n");
 284.268 +  printf("          <thead>\n");
 284.269 +  printf("            <tr>\n");
 284.270 +  printf("              <th colspan=\"3\"><center>\n");
 284.271 +  printf("                                <div id=\"title\">\n");
 284.272 +  printf("                                  <h1>\n");
 284.273 +  printf("                                    <a href=\"/\">interos</a>\n");
 284.274 +  printf("                                  </h1>\n");
 284.275 +  printf("                                </div>\n");
 284.276 +  printf("                                <h2>\n");
 284.277 +  printf("                                  internet operating system\n");
 284.278 +  printf("                                </h2>\n");
 284.279 +  printf("                              </center></th>\n");
 284.280 +  printf("            </tr>\n");
 284.281 +  printf("          </thead>\n");
 284.282 +  printf("          <tfoot>\n");
 284.283 +  printf("            <tr>\n");
 284.284 +  printf("              <td colspan=\"3\"><br /></td>\n");
 284.285 +  printf("            </tr>\n");
 284.286 +  printf("          </tfoot>\n");
 284.287 +  printf("          <tbody>\n");
 284.288 +  printf("            <tr>\n");
 284.289 +  printf("              <td><label for=\"login\">login:</label>&nbsp;</td>\n");
 284.290 +  printf("              <td><input id=\"login\" name=\"login\" \n");
 284.291 +/*
 284.292 +  printf("                         value=\"guest\" readonly=\"readonly\" \n");
 284.293 +*/
 284.294 +  printf("                         value=\"guest\" \n");
 284.295 +  printf("                         size=\"16\" maxlength=\"16\" \n");
 284.296 +  printf("                         type=\"text\" /></td>\n");
 284.297 +  printf("            </tr>\n");
 284.298 +  printf("            <tr>\n");
 284.299 +  printf("              <td><label for=\"password\">password:</label>&nbsp;</td>\n");
 284.300 +  printf("              <td><input id=\"password\" name=\"password\" \n");
 284.301 +  printf("                         disabled=\"disabled\" \n");
 284.302 +  printf("                         size=\"16\" maxlength=\"16\" \n");
 284.303 +  printf("                         type=\"password\" /></td>\n");
 284.304 +  printf("              <td rowspan=\"2\"><div id=\"submitButton\">\n");
 284.305 +  printf("                                &nbsp;<input type=\"submit\" \n");
 284.306 +  printf("                                             value=\"login &raquo;\" />\n");
 284.307 +  printf("                              </div></td>\n");
 284.308 +  printf("            </tr>\n");
 284.309 +  printf("          </tbody>\n");
 284.310 +  printf("        </table>\n");
 284.311 +  printf("      </form>\n");
 284.312 +  printf("      <p id=\"newUser\">\n");
 284.313 +  printf("        <a href=\"/new_user\"><strong>new users click here</strong><br />\n");
 284.314 +  printf("        to create your login</a>\n");
 284.315 +  printf("      </p>\n");
 284.316 +  printf("      <p>\n");
 284.317 +  printf("        <br />\n");
 284.318 +  printf("      </p>\n");
 284.319 +  printf("      <p id=\"copyrightDates\">\n");
 284.320 +  printf("        &copy; 2001&#8211;2010 interos\n");
 284.321 +  printf("      </p>\n");
 284.322 +  printf("    </center>\n");
 284.323 +  printf("  </body>\n");
 284.324 +  printf("  <!--=====================================================================-->\n");
 284.325 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
 284.326 +  printf("  <!--=====================================================================-->\n");
 284.327 +  printf("  <!--                                                                     -->\n");
 284.328 +  printf("  <!--          All original textual and graphical site content:           -->\n");
 284.329 +  printf("  <!--                                                                     -->\n");
 284.330 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
 284.331 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
 284.332 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
 284.333 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
 284.334 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
 284.335 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
 284.336 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
 284.337 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
 284.338 +  printf("  <!--                                                                     -->\n");
 284.339 +  printf("  <!--=====================================================================-->\n");
 284.340 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
 284.341 +  printf("  <!--=====================================================================-->\n");
 284.342 +  printf("</html>");
 284.343 +}
 284.344 +
 284.345 +/***********************************************************************/
 284.346 +/*                  Copyright and Trademark Statement                  */
 284.347 +/***********************************************************************/
 284.348 +/*                                                                     */
 284.349 +/*          All original textual and graphical site content:           */
 284.350 +/*                                                                     */
 284.351 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
 284.352 +/*  reserved.  Reproduction in whole or in part without written        */
 284.353 +/*  permission is prohibited.  interos and the interos logos are       */
 284.354 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 284.355 +/*  product, and service names mentioned herein may be the properties  */
 284.356 +/*  of their respective owners.  Comments in the interos.org forums    */
 284.357 +/*  are the properties of their respective authors.  All software      */
 284.358 +/*  developed in the forums is open source and belongs to everyone.    */
 284.359 +/*                                                                     */
 284.360 +/***********************************************************************/
 284.361 +/*                      e-mail: info@interos.com                       */
 284.362 +/***********************************************************************/
   285.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   285.2 +++ b/xml/c/logout_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
   285.3 @@ -0,0 +1,48 @@
   285.4 +/**************************************************/
   285.5 +/*  interos Standard Document Header - CGI in C   */
   285.6 +/**************************************************/
   285.7 +/*         URIs:  https://interos.com/logout      */
   285.8 +/*                https://www.interos.com/logout  */
   285.9 +/*       Source:  logout.c                        */
  285.10 +/*  Description:  FastCGI for interos logout      */
  285.11 +/*       Author:  Brent Angeline                  */
  285.12 +/*          CGI:  FastCGI in ISO/ANSI C           */
  285.13 +/**************************************************/
  285.14 +
  285.15 +/* PREPROCESSOR DIRECTIVE */
  285.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), printf()  */
  285.17 +
  285.18 +/* BEGIN MAIN PROGRAM */
  285.19 +int main(void) {
  285.20 +
  285.21 +  /* BEGIN FASTCGI */
  285.22 +  while (FCGI_Accept() >= 0) {
  285.23 +
  285.24 +    /* SET COOKIES */
  285.25 +    printf("Set-Cookie: login=; path=/; secure\r\n");
  285.26 +    printf("Set-Cookie: password=; path=/; secure\r\n");
  285.27 +
  285.28 +    /* REDIRECT TO LOGIN PANEL */
  285.29 +    printf("Location: login\r\n\r\n");
  285.30 +  }
  285.31 +  return 0;
  285.32 +}
  285.33 +
  285.34 +/***********************************************************************/
  285.35 +/*                  Copyright and Trademark Statement                  */
  285.36 +/***********************************************************************/
  285.37 +/*                                                                     */
  285.38 +/*          All original textual and graphical site content:           */
  285.39 +/*                                                                     */
  285.40 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
  285.41 +/*  reserved.  Reproduction in whole or in part without written        */
  285.42 +/*  permission is prohibited.  interos and the interos logos are       */
  285.43 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
  285.44 +/*  product, and service names mentioned herein may be the properties  */
  285.45 +/*  of their respective owners.  Comments in the interos.org forums    */
  285.46 +/*  are the properties of their respective authors.  All software      */
  285.47 +/*  developed in the forums is open source and belongs to everyone.    */
  285.48 +/*                                                                     */
  285.49 +/***********************************************************************/
  285.50 +/*                      e-mail: info@interos.com                       */
  285.51 +/***********************************************************************/
   286.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   286.2 +++ b/xml/c/main_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
   286.3 @@ -0,0 +1,724 @@
   286.4 +/*************************************************/
   286.5 +/*  interos Standard Document Header - CGI in C  */
   286.6 +/*************************************************/
   286.7 +/*         URIs:  https://interos.com/           */
   286.8 +/*                https://interos.com/main       */
   286.9 +/*                https://www.interos.com/       */
  286.10 +/*                https://www.interos.com/main   */
  286.11 +/*       Source:  main.c                         */
  286.12 +/*  Description:  FastCGI for interos main       */
  286.13 +/*       Author:  Brent Angeline                 */
  286.14 +/*          CGI:  FastCGI in ISO/ANSI C          */
  286.15 +/*************************************************/
  286.16 +
  286.17 +/* PREPROCESSOR DIRECTIVES */
  286.18 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                                 */
  286.19 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, MENU_ITEM, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
  286.20 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                                          */
  286.21 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                              */
  286.22 +#include <unistd.h>         /*  F_OK, access()                                                                      */
  286.23 +
  286.24 +#ifndef INTEROS_H
  286.25 +
  286.26 +  /* TYPE DEFINITION */
  286.27 +  typedef struct {
  286.28 +    char *name;
  286.29 +    char *link;
  286.30 +    char *icon;
  286.31 +    struct MENU_ITEM *next;
  286.32 +  } MENU_ITEM;
  286.33 +
  286.34 +#endif
  286.35 +
  286.36 +/* FUNCTION PROTOTYPE DECLARATIONS */
  286.37 +static void RedirectToLoginPanel(void);
  286.38 +static void OutputGUI(const char *variableName, char *variableValue);
  286.39 +static void OutputNewMenu(void);
  286.40 +static void OutputOpenMenu(char *open);
  286.41 +static void OutputNextMenu(char *next);
  286.42 +static void OutputSettingsMenu(char *settings);
  286.43 +static void BeginXHTMLOutput(void);
  286.44 +static void FinishXHTMLOutput(void);
  286.45 +
  286.46 +/* BEGIN MAIN PROGRAM */
  286.47 +int main(void) {
  286.48 +
  286.49 +  /* BEGIN FASTCGI */
  286.50 +  while (FCGI_Accept() >= 0) {
  286.51 +
  286.52 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
  286.53 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
  286.54 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
  286.55 +      RedirectToLoginPanel();
  286.56 +
  286.57 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  286.58 +    } else {
  286.59 +
  286.60 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
  286.61 +      char *cookie;
  286.62 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
  286.63 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
  286.64 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
  286.65 +        RedirectToLoginPanel();
  286.66 +      } else {
  286.67 +        char *variableName;
  286.68 +        if (!(variableName = malloc(cookieLength + 1))) {
  286.69 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
  286.70 +          RedirectToLoginPanel();
  286.71 +        } else {
  286.72 +          char *variableValue;
  286.73 +          if (!(variableValue = malloc(cookieLength + 1))) {
  286.74 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
  286.75 +            RedirectToLoginPanel();
  286.76 +
  286.77 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
  286.78 +          } else {
  286.79 +
  286.80 +            /* PROCESS COOKIE DATA */
  286.81 +            char *login, *password;
  286.82 +            INT c, i;
  286.83 +            login = password = NULL;
  286.84 +            c = 0;
  286.85 +            strcpy(cookie, getenv("HTTP_COOKIE"));
  286.86 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
  286.87 +              i = 0;
  286.88 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
  286.89 +                variableName[i] = cookie[c];
  286.90 +                ++c;
  286.91 +                ++i;
  286.92 +              }
  286.93 +              variableName[i] = '\0';
  286.94 +              ++c;
  286.95 +              i = 0;
  286.96 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
  286.97 +                variableValue[i] = cookie[c];
  286.98 +                ++c;
  286.99 +                ++i;
 286.100 +              }
 286.101 +              variableValue[i] = '\0';
 286.102 +              ++c;
 286.103 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
 286.104 +                ++c;
 286.105 +              }
 286.106 +              if (!login && !strcmp(variableName, "login")) {
 286.107 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
 286.108 +                  strcpy(login, variableValue);
 286.109 +                }
 286.110 +              } else if (!password && !strcmp(variableName, "password")) {
 286.111 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
 286.112 +                  strcpy(password, variableValue);
 286.113 +                }
 286.114 +              }
 286.115 +            }
 286.116 +
 286.117 +            /* IF LOGIN VALUE IS MISSING... */
 286.118 +            if (!login) {
 286.119 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
 286.120 +              RedirectToLoginPanel();
 286.121 +
 286.122 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
 286.123 +            } else {
 286.124 +
 286.125 +              /* VERIFY LOGIN AND PASSWORD */
 286.126 +              char *directory;
 286.127 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
 286.128 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
 286.129 +                RedirectToLoginPanel();
 286.130 +              } else {
 286.131 +                char *systemDirectory;
 286.132 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
 286.133 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
 286.134 +                  RedirectToLoginPanel();
 286.135 +                } else {
 286.136 +                  strcpy(directory, DIRECTORY);
 286.137 +                  strcat(directory, login);
 286.138 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
 286.139 +                  strcat(systemDirectory, login);
 286.140 +
 286.141 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
 286.142 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
 286.143 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
 286.144 +                    RedirectToLoginPanel();
 286.145 +
 286.146 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
 286.147 +                  } else {
 286.148 +
 286.149 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
 286.150 +                    char *passwordFileName;
 286.151 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 1))) {
 286.152 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
 286.153 +                      RedirectToLoginPanel();
 286.154 +                    } else {
 286.155 +                      strcpy(passwordFileName, systemDirectory);
 286.156 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
 286.157 +
 286.158 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
 286.159 +                      if (access(passwordFileName, F_OK)) {
 286.160 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
 286.161 +                        RedirectToLoginPanel();
 286.162 +
 286.163 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
 286.164 +                      } else {
 286.165 +
 286.166 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
 286.167 +                        FILE *passwordFile;
 286.168 +
 286.169 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
 286.170 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
 286.171 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
 286.172 +                          RedirectToLoginPanel();
 286.173 +
 286.174 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
 286.175 +                        } else {
 286.176 +                          char *filePassword;
 286.177 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
 286.178 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
 286.179 +                            RedirectToLoginPanel();
 286.180 +                          } else {
 286.181 +                            char c;
 286.182 +                            i = 0;
 286.183 +
 286.184 +                            /* READ PASSWORD FROM PASSWORD FILE */
 286.185 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
 286.186 +                              filePassword[i] = c;
 286.187 +                              ++i;
 286.188 +                            }
 286.189 +                            filePassword[i] = '\0';
 286.190 +                            fclose(passwordFile);
 286.191 +
 286.192 +                            /* IF PASSWORD FAILS COMPARISON... */
 286.193 +                            if (strcmp(filePassword, password)) {
 286.194 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
 286.195 +                              RedirectToLoginPanel();
 286.196 +
 286.197 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
 286.198 +                            } else {
 286.199 +
 286.200 +                              /* LOAD SETTINGS VALUES FROM FILE(S) */
 286.201 +
 286.202 +                              /* LOAD MENU ITEMS FROM FILES */
 286.203 +
 286.204 +                              /* READ NEW MENU FILE */
 286.205 +
 286.206 +                              /* READ OPEN MENU FILE */
 286.207 +
 286.208 +                              /* READ NEXT MENU FILE */
 286.209 +
 286.210 +                              /* READ SETTINGS MENU FILE */
 286.211 +
 286.212 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
 286.213 +                              char *menu, *new, *open, *next, *settings, *text_file, *status;
 286.214 +                              menu = new = open = next = settings = text_file = status = NULL;
 286.215 +
 286.216 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
 286.217 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
 286.218 +                                char *query;
 286.219 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
 286.220 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
 286.221 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
 286.222 +                                } else {
 286.223 +                                  free(variableName);
 286.224 +                                  strcpy(query, getenv("QUERY_STRING"));
 286.225 +                                  if (!(variableName = malloc(queryLength + 1))) {
 286.226 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
 286.227 +                                  } else {
 286.228 +                                    free(variableValue);
 286.229 +                                    if (!(variableValue = malloc(queryLength + 1))) {
 286.230 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
 286.231 +
 286.232 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
 286.233 +                                    } else {
 286.234 +
 286.235 +                                      /* PROCESS QUERY DATA */
 286.236 +                                      INT q = 0;
 286.237 +                                      i = 0;
 286.238 +                                      while ((q < queryLength) && (query[q] != '\0')) {
 286.239 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
 286.240 +                                          variableName[i] = query[q];
 286.241 +                                          ++q;
 286.242 +                                          ++i;
 286.243 +                                        }
 286.244 +                                        variableName[i] = '\0';
 286.245 +                                        ++q;
 286.246 +                                        i = 0;
 286.247 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
 286.248 +                                          variableValue[i] = query[q];
 286.249 +                                          ++q;
 286.250 +                                          ++i;
 286.251 +                                        }
 286.252 +                                        variableValue[i] = '\0';
 286.253 +                                        if (query[q] != '\0') {
 286.254 +                                          ++q;
 286.255 +                                        }
 286.256 +                                        if (!menu && !strcmp(variableName, "menu")) {
 286.257 +                                          if ((menu = malloc(strlen(variableValue) + 1)) != 0) {
 286.258 +                                            strcpy(menu, variableValue);
 286.259 +                                          }
 286.260 +                                        } else if (!new && !strcmp(variableName, "new")) {
 286.261 +                                          if ((new = malloc(strlen(variableValue) + 1)) != 0) {
 286.262 +                                            strcpy(new, variableValue);
 286.263 +                                          }
 286.264 +                                        } else if (!open && !strcmp(variableName, "open")) {
 286.265 +                                          if ((open = malloc(strlen(variableValue) + 1)) != 0) {
 286.266 +                                            strcpy(open, variableValue);
 286.267 +                                          }
 286.268 +                                        } else if (!next && !strcmp(variableName, "next")) {
 286.269 +                                          if ((next = malloc(strlen(variableValue) + 1)) != 0) {
 286.270 +                                            strcpy(next, variableValue);
 286.271 +                                          }
 286.272 +                                        } else if (!settings && !strcmp(variableName, "settings")) {
 286.273 +                                          if ((settings = malloc(strlen(variableValue) + 1)) != 0) {
 286.274 +                                            strcpy(settings, variableValue);
 286.275 +                                          }
 286.276 +                                        } else if (!text_file && !strcmp(variableName, "text_file")) {
 286.277 +                                          if ((text_file = malloc(strlen(variableValue) + 1)) != 0) {
 286.278 +                                            strcpy(text_file, variableValue);
 286.279 +                                          }
 286.280 +                                        } else if (!status && !strcmp(variableName, "says")) {
 286.281 +                                          if ((status = malloc(strlen(variableValue) + 1)) != 0) {
 286.282 +                                            strcpy(status, variableValue);
 286.283 +                                          }
 286.284 +                                        }
 286.285 +                                      }
 286.286 +                                      free(variableValue);
 286.287 +                                      variableValue = NULL;
 286.288 +                                    }
 286.289 +                                    free(variableName);
 286.290 +                                    variableName = NULL;
 286.291 +                                  }
 286.292 +                                  free(query);
 286.293 +                                }
 286.294 +                              }
 286.295 +
 286.296 +                              /* IF THIS IS A CONTINUED SESSION... */
 286.297 +
 286.298 +                                /* LOAD SESSION FROM FILE */
 286.299 +
 286.300 +                              /* OUTPUT GUI COMPONENT(S) BASED ON VARIABLES */
 286.301 +                              if (settings) {
 286.302 +                                OutputSettingsMenu(settings);
 286.303 +                              } else if (new) {
 286.304 +                                if (!strcmp(new, "text_file")) {
 286.305 +                                  OutputGUI("new", new);
 286.306 +                                } else {
 286.307 +                                  OutputNewMenu();
 286.308 +                                }
 286.309 +                              } else if (open) {
 286.310 +                                OutputOpenMenu(open);
 286.311 +                              } else if (next) {
 286.312 +                                if (!strcmp(next, "save_as")) {
 286.313 +
 286.314 +                                } else if (!strcmp(next, "save")) {
 286.315 +
 286.316 +                                } else if (!strcmp(next, "close")) {
 286.317 +
 286.318 +                                } else if (!strcmp(next, "bookmark")) {
 286.319 +
 286.320 +                                } else if (!strcmp(next, "logout")) {
 286.321 +
 286.322 +                                  /* SET COOKIES */
 286.323 +                                  printf("Set-Cookie: login=; path=/; secure\r\n");
 286.324 +                                  printf("Set-Cookie: password=; path=/; secure\r\n");
 286.325 +
 286.326 +                                  /* REDIRECT TO LOGIN PANEL */
 286.327 +                                  printf("Location: login\r\n\r\n");
 286.328 +                                } else if (status) {
 286.329 +                                  OutputGUI("status", status);
 286.330 +                                } else {
 286.331 +                                  OutputGUI(NULL, NULL);
 286.332 +                                }
 286.333 +                              } else if (menu) {
 286.334 +                                if (!strcmp(menu, "settings")) {
 286.335 +                                  OutputSettingsMenu(settings);
 286.336 +                                } else if (!strcmp(menu, "new")) {
 286.337 +                                  OutputNewMenu();
 286.338 +                                } else if (!strcmp(menu, "open")) {
 286.339 +                                  OutputOpenMenu(open);
 286.340 +                                } else if (!strcmp(menu, "next")) {
 286.341 +                                  OutputNextMenu(next);
 286.342 +                                } else if (status) {
 286.343 +                                  OutputGUI("status", status);
 286.344 +                                } else {
 286.345 +                                  OutputGUI(NULL, NULL);
 286.346 +                                }
 286.347 +                              } else if (text_file) {
 286.348 +                                OutputGUI("text_file", text_file);
 286.349 +                              } else {
 286.350 +                                if (status) {
 286.351 +                                  OutputGUI("status", status);
 286.352 +                                } else {
 286.353 +                                  OutputGUI(NULL, NULL);
 286.354 +                                }
 286.355 +                              }
 286.356 +                              free(status);
 286.357 +                              free(text_file);
 286.358 +                              free(settings);
 286.359 +                              free(next);
 286.360 +                              free(open);
 286.361 +                              free(new);
 286.362 +                              free(menu);
 286.363 +                            }
 286.364 +                            free(filePassword);
 286.365 +                          }
 286.366 +                        }
 286.367 +                      }
 286.368 +                      free(passwordFileName);
 286.369 +                    }
 286.370 +                  }
 286.371 +                  free(systemDirectory);
 286.372 +                }
 286.373 +                free(directory);
 286.374 +              }
 286.375 +              free(login);
 286.376 +            }
 286.377 +            free(password);
 286.378 +            free(variableValue);
 286.379 +          }
 286.380 +          free(variableName);
 286.381 +        }
 286.382 +        free(cookie);
 286.383 +      }
 286.384 +    }
 286.385 +  }
 286.386 +  return 0;
 286.387 +}
 286.388 +
 286.389 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
 286.390 +static void RedirectToLoginPanel(void) {
 286.391 +  printf("Location: login\r\n\r\n");
 286.392 +}
 286.393 +
 286.394 +/* FUNCTION | OUTPUT XHTML FOR interos GRAPHICAL USER INTERFACE */
 286.395 +static void OutputGUI(const char *variableName, char *variableValue) {
 286.396 +  BeginXHTMLOutput();
 286.397 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
 286.398 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
 286.399 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
 286.400 +  printf("  <!--========================================================-->\n");
 286.401 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
 286.402 +  printf("  <!--========================================================-->\n");
 286.403 +  printf("  <!--    URIs:  https://interos.com/                         -->\n");
 286.404 +  printf("  <!--           https://interos.com/main                     -->\n");
 286.405 +  printf("  <!--           https://www.interos.com/                     -->\n");
 286.406 +  printf("  <!--           https://www.interos.com/main                 -->\n");
 286.407 +  printf("  <!--   Title:  interos                                      -->\n");
 286.408 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
 286.409 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
 286.410 +  printf("  <!--========================================================-->\n");
 286.411 +  printf("  <head>\n");
 286.412 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 286.413 +  printf("    <meta name=\"title\" content=\"interos\" />\n");
 286.414 +  printf("    <meta name=\"description\" content=\"internet operating system\" />\n");
 286.415 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 286.416 +  printf("    <meta name=\"copyright\" \n");
 286.417 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
 286.418 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
 286.419 +  printf("    <title>interos</title>\n");
 286.420 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
 286.421 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
 286.422 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
 286.423 +  printf("          media=\"screen, projection\" />\n");
 286.424 +  printf("    <script type=\"text/javascript\" src=\"/js/interos.js\"></script>\n");
 286.425 +  printf("  </head>\n");
 286.426 +  printf("  <frameset rows=\"72,*,72\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
 286.427 +  printf("    <frame name=\"top\" src=\"/top\" \n");
 286.428 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.429 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.430 +  if (variableName && variableValue) {
 286.431 +    printf("    <frame name=\"content\" src=\"/content?%s=%s\" \n", variableName, variableValue);
 286.432 +    printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.433 +    printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.434 +  } else {
 286.435 +    printf("    <frame name=\"content\" src=\"/content\" \n");
 286.436 +    printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.437 +    printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.438 +  }
 286.439 +  printf("    <frame name=\"bottom\" src=\"/bottom\" \n");
 286.440 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.441 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.442 +  printf("    <noframes>\n");
 286.443 +  printf("      <body id=\"body\">\n");
 286.444 +  printf("        <h3>\n");
 286.445 +  printf("          menu\n");
 286.446 +  printf("        </h3>\n");
 286.447 +  printf("        <p>\n");
 286.448 +  printf("          <a id=\"newLink\" href=\"/main?menu=new\">new</a>\n");
 286.449 +  printf("        </p>\n");
 286.450 +  printf("        <p>\n");
 286.451 +  printf("          <a id=\"openLink\" href=\"/main?menu=open\">open</a>\n");
 286.452 +  printf("        </p>\n");
 286.453 +  printf("        <p>\n");
 286.454 +  printf("          <a id=\"nextLink\" href=\"/main?menu=next\">next</a>\n");
 286.455 +  printf("        </p>\n");
 286.456 +  printf("        <p>\n");
 286.457 +  printf("          <a id=\"settingsLink\" href=\"/main?menu=settings\">settings</a>");
 286.458 +  printf("        </p>\n");
 286.459 +  printf("      </body>\n");
 286.460 +  printf("    </noframes>\n");
 286.461 +  printf("  </frameset>\n");
 286.462 +  FinishXHTMLOutput();
 286.463 +}
 286.464 +
 286.465 +/* FUNCTION | OUTPUT XHTML FOR NEW MENU */
 286.466 +static void OutputNewMenu(void) {
 286.467 +  BeginXHTMLOutput();
 286.468 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
 286.469 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
 286.470 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
 286.471 +  printf("  <!--========================================================-->\n");
 286.472 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
 286.473 +  printf("  <!--========================================================-->\n");
 286.474 +  printf("  <!--    URIs:  https://interos.com/main?menu=new            -->\n");
 286.475 +  printf("  <!--           https://interos.com/interos?menu=new         -->\n");
 286.476 +  printf("  <!--           https://www.interos.com/main?menu=new        -->\n");
 286.477 +  printf("  <!--           https://www.interos.com/interos?menu=new     -->\n");
 286.478 +  printf("  <!--   Title:  interos new                                  -->\n");
 286.479 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
 286.480 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
 286.481 +  printf("  <!--========================================================-->\n");
 286.482 +  printf("  <head>\n");
 286.483 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 286.484 +  printf("    <meta name=\"title\" content=\"interos new\" />\n");
 286.485 +  printf("    <meta name=\"description\" content=\"new menu for interos\" />\n");
 286.486 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 286.487 +  printf("    <meta name=\"copyright\" \n");
 286.488 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
 286.489 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
 286.490 +  printf("    <title>interos new</title>\n");
 286.491 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
 286.492 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
 286.493 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
 286.494 +  printf("          media=\"screen, projection\" />\n");
 286.495 +  printf("    <script type=\"text/javascript\" src=\"/js/interos_new.js\"></script>\n");
 286.496 +  printf("  </head>\n");
 286.497 +  printf("  <frameset rows=\"*,72\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
 286.498 +  printf("    <frame name=\"menu\" src=\"/menu?name=new\" \n");
 286.499 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.500 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.501 +  printf("    <frame name=\"button\" src=\"/bottom?button=new\" \n");
 286.502 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.503 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.504 +  printf("    <noframes>\n");
 286.505 +  printf("      <body id=\"body\">\n");
 286.506 +  printf("        <div id=\"newEntries\">\n");
 286.507 +  printf("          <p>\n");
 286.508 +  printf("            <a href=\"/main?new=text_file\">text file</a>\n");
 286.509 +  printf("          </p>\n");
 286.510 +  printf("        </div>\n");
 286.511 +  printf("        <div id=\"newLink\"><a href=\"/main\">new</a></div>\n");
 286.512 +  printf("      </body>\n");
 286.513 +  printf("    </noframes>\n");
 286.514 +  printf("  </frameset>\n");
 286.515 +  FinishXHTMLOutput();
 286.516 +}
 286.517 +
 286.518 +/* FUNCTION | OUTPUT XHTML FOR OPEN MENU */
 286.519 +static void OutputOpenMenu(char *open) {
 286.520 +  BeginXHTMLOutput();
 286.521 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
 286.522 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
 286.523 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
 286.524 +  printf("  <!--========================================================-->\n");
 286.525 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
 286.526 +  printf("  <!--========================================================-->\n");
 286.527 +  printf("  <!--    URIs:  https://interos.com/main?menu=open           -->\n");
 286.528 +  printf("  <!--           https://interos.com/interos?menu=open        -->\n");
 286.529 +  printf("  <!--           https://www.interos.com/main?menu=open       -->\n");
 286.530 +  printf("  <!--           https://www.interos.com/interos?menu=open    -->\n");
 286.531 +  printf("  <!--   Title:  interos open                                 -->\n");
 286.532 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
 286.533 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
 286.534 +  printf("  <!--========================================================-->\n");
 286.535 +  printf("  <head>\n");
 286.536 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 286.537 +  printf("    <meta name=\"title\" content=\"interos open\" />\n");
 286.538 +  printf("    <meta name=\"description\" content=\"open menu for interos\" />\n");
 286.539 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 286.540 +  printf("    <meta name=\"copyright\" \n");
 286.541 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
 286.542 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
 286.543 +  printf("    <title>interos open</title>\n");
 286.544 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
 286.545 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
 286.546 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
 286.547 +  printf("          media=\"screen, projection\" />\n");
 286.548 +  printf("    <script type=\"text/javascript\" src=\"/js/interos_open.js\"></script>\n");
 286.549 +  printf("  </head>\n");
 286.550 +  printf("  <frameset rows=\"72,*\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
 286.551 +  printf("    <frame name=\"button\" src=\"/top?button=open\" \n");
 286.552 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.553 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.554 +  if (open) {
 286.555 +    if (!strcmp(open, "text_file")) {
 286.556 +      printf("    <frame name=\"menu\" src=\"/menu?open=text_file\" \n");
 286.557 +      printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.558 +      printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.559 +    } else {
 286.560 +      printf("    <frame name=\"menu\" src=\"/menu?name=open\" \n");
 286.561 +      printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.562 +      printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.563 +    }
 286.564 +  } else {
 286.565 +    printf("    <frame name=\"menu\" src=\"/menu?name=open\" \n");
 286.566 +    printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.567 +    printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.568 +  }
 286.569 +  printf("    <noframes>\n");
 286.570 +  printf("      <body id=\"body\">\n");
 286.571 +  printf("        <div id=\"openLink\"><a href=\"/main\">open</a></div>\n");
 286.572 +  printf("        <div id=\"openEntries\">\n");
 286.573 +  printf("          <p><a href=\"/main?open=text_file\">text file</a></p>\n");
 286.574 +  printf("        </div>\n");
 286.575 +  printf("      </body>\n");
 286.576 +  printf("    </noframes>\n");
 286.577 +  printf("  </frameset>\n");
 286.578 +  FinishXHTMLOutput();
 286.579 +}
 286.580 +
 286.581 +/* FUNCTION | OUTPUT XHTML FOR NEXT MENU */
 286.582 +static void OutputNextMenu(char *next) {
 286.583 +  BeginXHTMLOutput();
 286.584 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
 286.585 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
 286.586 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
 286.587 +  printf("  <!--========================================================-->\n");
 286.588 +  printf("  <!--       interos Standard Document Header - Markup        -->\n");
 286.589 +  printf("  <!--========================================================-->\n");
 286.590 +  printf("  <!--    URIs:  https://interos.com/main?menu=next           -->\n");
 286.591 +  printf("  <!--           https://interos.com/interos?menu=next        -->\n");
 286.592 +  printf("  <!--           https://www.interos.com/main?menu=next       -->\n");
 286.593 +  printf("  <!--           https://www.interos.com/interos?menu=next    -->\n");
 286.594 +  printf("  <!--   Title:  interos next                                 -->\n");
 286.595 +  printf("  <!--  Author:  Brent Angeline                               -->\n");
 286.596 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset  -->\n");
 286.597 +  printf("  <!--========================================================-->\n");
 286.598 +  printf("  <head>\n");
 286.599 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 286.600 +  printf("    <meta name=\"title\" content=\"interos next\" />\n");
 286.601 +  printf("    <meta name=\"description\" content=\"next menu for interos\" />\n");
 286.602 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 286.603 +  printf("    <meta name=\"copyright\" \n");
 286.604 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
 286.605 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
 286.606 +  printf("    <title>interos next</title>\n");
 286.607 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
 286.608 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
 286.609 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
 286.610 +  printf("          media=\"screen, projection\" />\n");
 286.611 +  printf("    <script type=\"text/javascript\" src=\"/js/interos_next.js\"></script>\n");
 286.612 +  printf("  </head>\n");
 286.613 +  printf("  <frameset rows=\"72,*\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
 286.614 +  printf("    <frame name=\"button\" src=\"/top?button=next\" \n");
 286.615 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.616 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.617 +  printf("    <frame name=\"menu\" src=\"/menu?name=next\" \n");
 286.618 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.619 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.620 +  printf("    <noframes>\n");
 286.621 +  printf("      <body id=\"body\">\n");
 286.622 +  printf("        <div id=\"nextLink\"><a href=\"/main\">next</a></div>\n");
 286.623 +  printf("        <div id=\"nextEntries\">\n");
 286.624 +  printf("          <p><a href=\"/logout\">logout</a></p>\n");
 286.625 +  printf("        </div>\n");
 286.626 +  printf("      </body>\n");
 286.627 +  printf("    </noframes>\n");
 286.628 +  printf("  </frameset>\n");
 286.629 +  FinishXHTMLOutput();
 286.630 +}
 286.631 +
 286.632 +/* FUNCTION | OUTPUT XHTML FOR SETTINGS MENU */
 286.633 +void OutputSettingsMenu(char *settings) {
 286.634 +  BeginXHTMLOutput();
 286.635 +  printf("<?xml-stylesheet type=\"text/css\" href=\"/style/main.css\"?>\n");
 286.636 +  printf("<!DOCTYPE html SYSTEM \"http://interos.org/dtd/xhtml1-borderless-frameset.dtd\">\n");
 286.637 +  printf("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n");
 286.638 +  printf("  <!--==========================================================-->\n");
 286.639 +  printf("  <!--        interos Standard Document Header - Markup         -->\n");
 286.640 +  printf("  <!--==========================================================-->\n");
 286.641 +  printf("  <!--    URIs:  https://interos.com/main?menu=settings         -->\n");
 286.642 +  printf("  <!--           https://interos.com/interos?menu=settings      -->\n");
 286.643 +  printf("  <!--           https://www.interos.com/menu?menu=settings     -->\n");
 286.644 +  printf("  <!--           https://www.interos.com/interos?menu=settings  -->\n");
 286.645 +  printf("  <!--   Title:  interos settings                               -->\n");
 286.646 +  printf("  <!--  Author:  Brent Angeline                                 -->\n");
 286.647 +  printf("  <!--  Markup:  WDG-Validated XHTML 1.0 Borderless Frameset    -->\n");
 286.648 +  printf("  <!--==========================================================-->\n");
 286.649 +  printf("  <head>\n");
 286.650 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 286.651 +  printf("    <meta name=\"title\" content=\"interos - settings\" />\n");
 286.652 +  printf("    <meta name=\"description\" content=\"interos settings menu\" />\n");
 286.653 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 286.654 +  printf("    <meta name=\"copyright\" \n");
 286.655 +  printf("          content=\"Copyright &copy; 2001-2010 Brent Angeline and interos LLC\" />\n");
 286.656 +  printf("    <meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n");
 286.657 +  printf("    <title>interos settings</title>\n");
 286.658 +  printf("    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n");
 286.659 +  printf("    <link rel=\"icon\" type=\"image/gif\" href=\"/images/favicon.gif\" />\n");
 286.660 +  printf("    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style/main.css\" \n");
 286.661 +  printf("          media=\"screen, projection\" />\n");
 286.662 +  printf("    <script type=\"text/javascript\" src=\"/js/interos_settings.js\"></script>\n");
 286.663 +  printf("  </head>\n");
 286.664 +  printf("  <frameset rows=\"*,72\" border=\"0\" frameborder=\"0\" framespacing=\"0\">\n");
 286.665 +  printf("    <frame name=\"menu\" src=\"/menu?name=settings\" \n");
 286.666 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.667 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.668 +  printf("    <frame name=\"button\" src=\"/bottom?button=settings\" \n");
 286.669 +  printf("           frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" \n");
 286.670 +  printf("           noresize=\"noresize\" scrolling=\"auto\" />\n");
 286.671 +  printf("    <noframes>\n");
 286.672 +  printf("      <body id=\"body\">\n");
 286.673 +  printf("        <div id=\"settingsEntries\">\n");
 286.674 +  printf("          <p><a href=\"/main?settings=button_size\">button size</a></p>\n");
 286.675 +  printf("        </div>\n");
 286.676 +  printf("        <div id=\"settingsLink\"><a href=\"/main\">settings</a></div>\n");
 286.677 +  printf("      </body>\n");
 286.678 +  printf("    </noframes>\n");
 286.679 +  printf("  </frameset>\n");
 286.680 +  FinishXHTMLOutput();
 286.681 +}
 286.682 +
 286.683 +static void BeginXHTMLOutput(void) {
 286.684 +  printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
 286.685 +  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
 286.686 +}
 286.687 +
 286.688 +static void FinishXHTMLOutput(void) {
 286.689 +  printf("  <!--=====================================================================-->\n");
 286.690 +  printf("  <!--                  Copyright and Trademark Statement                  -->\n");
 286.691 +  printf("  <!--=====================================================================-->\n");
 286.692 +  printf("  <!--                                                                     -->\n");
 286.693 +  printf("  <!--          All original textual and graphical site content:           -->\n");
 286.694 +  printf("  <!--                                                                     -->\n");
 286.695 +  printf("  <!--  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    -->\n");
 286.696 +  printf("  <!--  reserved.  Reproduction in whole or in part without written        -->\n");
 286.697 +  printf("  <!--  permission is prohibited.  interos and the interos logos are       -->\n");
 286.698 +  printf("  <!--  trademarks of Brent Angeline and interos LLC.  All other company,  -->\n");
 286.699 +  printf("  <!--  product, and service names mentioned herein may be the properties  -->\n");
 286.700 +  printf("  <!--  of their respective owners.  Comments in the interos.org forums    -->\n");
 286.701 +  printf("  <!--  are the properties of their respective authors.  All software      -->\n");
 286.702 +  printf("  <!--  developed in the forums is open source and belongs to everyone.    -->\n");
 286.703 +  printf("  <!--                                                                     -->\n");
 286.704 +  printf("  <!--=====================================================================-->\n");
 286.705 +  printf("  <!--                      e-mail: info@interos.com                       -->\n");
 286.706 +  printf("  <!--=====================================================================-->\n");
 286.707 +  printf("</html>");
 286.708 +}
 286.709 +
 286.710 +/***********************************************************************/
 286.711 +/*                  Copyright and Trademark Statement                  */
 286.712 +/***********************************************************************/
 286.713 +/*                                                                     */
 286.714 +/*          All original textual and graphical site content:           */
 286.715 +/*                                                                     */
 286.716 +/*  Copyright 2001-2010 Brent Angeline and interos LLC.  All rights    */
 286.717 +/*  reserved.  Reproduction in whole or in part without written        */
 286.718 +/*  permission is prohibited.  interos and the interos logos are       */
 286.719 +/*  trademarks of Brent Angeline and interos LLC.  All other company,  */
 286.720 +/*  product, and service names mentioned herein may be the properties  */
 286.721 +/*  of their respective owners.  Comments in the interos.org forums    */
 286.722 +/*  are the properties of their respective authors.  All software      */
 286.723 +/*  developed in the forums is open source and belongs to everyone.    */
 286.724 +/*                                                                     */
 286.725 +/***********************************************************************/
 286.726 +/*                      e-mail: info@interos.com                       */
 286.727 +/***********************************************************************/
   287.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   287.2 +++ b/xml/c/menu_interos.com_ssl.c	Sat May 01 16:19:36 2010 -0400
   287.3 @@ -0,0 +1,812 @@
   287.4 +/*************************************************/
   287.5 +/*  interos Standard Document Header - CGI in C  */
   287.6 +/*************************************************/
   287.7 +/*         URIs:  https://interos.com/menu       */
   287.8 +/*                https://www.interos.com/menu   */
   287.9 +/*       Source:  menu.c                         */
  287.10 +/*  Description:  FastCGI for interos menu       */
  287.11 +/*       Author:  Brent Angeline                 */
  287.12 +/*          CGI:  FastCGI in ISO/ANSI C          */
  287.13 +/*************************************************/
  287.14 +
  287.15 +/* PREPROCESSOR DIRECTIVES */
  287.16 +#include "fcgi_stdio.h"     /*  FCGI_Accept(), fclose(), fgetc(), fopen(), printf()                                 */
  287.17 +#include "interos.h"        /*  DIRECTORY, INT, MAX_PASSWORD_SIZE, MENU_ITEM, PASSWORD_FILE_NAME, SYSTEM_DIRECTORY  */
  287.18 +#include <stdlib.h>         /*  free(), getenv(), malloc()                                                          */
  287.19 +#include <string.h>         /*  strcat(), strcmp(), strcpy(), strlen()                                              */
  287.20 +#include <unistd.h>         /*  F_OK, access()                                                                      */
  287.21 +
  287.22 +#ifndef INTEROS_H
  287.23 +
  287.24 +  /* TYPE DEFINITION */
  287.25 +  typedef struct {
  287.26 +    char *name;
  287.27 +    char *link;
  287.28 +    char *icon;
  287.29 +    struct MENU_ITEM *next;
  287.30 +  } MENU_ITEM;
  287.31 +
  287.32 +#endif
  287.33 +
  287.34 +/* FUNCTION PROTOTYPE DECLARATIONS */
  287.35 +static void RedirectToLoginPanel(void);
  287.36 +static void OutputNewMenu(void);
  287.37 +static void OutputOpenMenu(char *open);
  287.38 +static void OutputNextMenu(char *next);
  287.39 +static void OutputSettingsMenu(char *settings);
  287.40 +static void BeginXHTMLOutput(void);
  287.41 +static void FinishXHTMLOutput(void);
  287.42 +
  287.43 +/* BEGIN MAIN PROGRAM */
  287.44 +int main(void) {
  287.45 +
  287.46 +  /* BEGIN FASTCGI */
  287.47 +  while (FCGI_Accept() >= 0) {
  287.48 +
  287.49 +    /* IF COOKIE DATA DOESN'T EXIST OR IS TOO LONG... */
  287.50 +    if (!getenv("HTTP_COOKIE") || (sizeof(strlen(getenv("HTTP_COOKIE"))) > sizeof(INT))) {
  287.51 +      /** ERROR | COOKIE DATA DOES NOT EXIST OR IS TOO LONG > REDIRECT TO LOGIN PANEL **/
  287.52 +      RedirectToLoginPanel();
  287.53 +
  287.54 +    /* OTHERWISE, IF COOKIE DATA DOES EXIST AND IS OF ACCEPTABLE LENGTH... */
  287.55 +    } else {
  287.56 +
  287.57 +      /* ATTEMPT TO ALLOCATE MEMORY FOR COOKIE VARIABLES */
  287.58 +      char *cookie;
  287.59 +      INT cookieLength = strlen(getenv("HTTP_COOKIE"));
  287.60 +      if ((cookieLength < 1) || !(cookie = malloc(cookieLength + 1))) {
  287.61 +        /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR COOKIE DATA! > REDIRECT TO LOGIN PANEL **/
  287.62 +        RedirectToLoginPanel();
  287.63 +      } else {
  287.64 +        char *variableName;
  287.65 +        if (!(variableName = malloc(cookieLength + 1))) {
  287.66 +          /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE NAME > REDIRECT TO LOGIN PANEL **/
  287.67 +          RedirectToLoginPanel();
  287.68 +        } else {
  287.69 +          char *variableValue;
  287.70 +          if (!(variableValue = malloc(cookieLength + 1))) {
  287.71 +            /** ERROR | CANNOT ALLOCATE MEMORY FOR COOKIE VARIABLE VALUE > REDIRECT TO LOGIN PANEL **/
  287.72 +            RedirectToLoginPanel();
  287.73 +
  287.74 +          /* IF SUFFICIENT MEMORY FOR COOKIE VARIABLES... */
  287.75 +          } else {
  287.76 +
  287.77 +            /* PROCESS COOKIE DATA */
  287.78 +            char *login, *password;
  287.79 +            INT c, i;
  287.80 +            login = password = NULL;
  287.81 +            c = 0;
  287.82 +            strcpy(cookie, getenv("HTTP_COOKIE"));
  287.83 +            while ((c < cookieLength) && (cookie[c] != '\0')) {
  287.84 +              i = 0;
  287.85 +              while ((c < cookieLength) && (cookie[c] != '=') && (cookie[c] != '\0')) {
  287.86 +                variableName[i] = cookie[c];
  287.87 +                ++c;
  287.88 +                ++i;
  287.89 +              }
  287.90 +              variableName[i] = '\0';
  287.91 +              ++c;
  287.92 +              i = 0;
  287.93 +              while ((c < cookieLength) && (cookie[c] != ';') && (cookie[c] != '\0')) {
  287.94 +                variableValue[i] = cookie[c];
  287.95 +                ++c;
  287.96 +                ++i;
  287.97 +              }
  287.98 +              variableValue[i] = '\0';
  287.99 +              ++c;
 287.100 +              while ((c < cookieLength) && (cookie[c] == ' ')) {
 287.101 +                ++c;
 287.102 +              }
 287.103 +              if (!login && !strcmp(variableName, "login")) {
 287.104 +                if ((login = malloc(strlen(variableValue) + 1)) != 0) {
 287.105 +                  strcpy(login, variableValue);
 287.106 +                }
 287.107 +              } else if (!password && !strcmp(variableName, "password")) {
 287.108 +                if ((password = malloc(strlen(variableValue) + 1)) != 0) {
 287.109 +                  strcpy(password, variableValue);
 287.110 +                }
 287.111 +              }
 287.112 +            }
 287.113 +
 287.114 +            /* IF LOGIN VALUE IS MISSING... */
 287.115 +            if (!login) {
 287.116 +              /** ERROR | LOGIN VALUE IS MISSING > REDIRECT TO LOGIN PANEL **/
 287.117 +              RedirectToLoginPanel();
 287.118 +
 287.119 +            /* OTHERWISE, IF LOGIN VALUE EXISTS... */
 287.120 +            } else {
 287.121 +
 287.122 +              /* VERIFY LOGIN AND PASSWORD */
 287.123 +              char *directory;
 287.124 +              if (!(directory = malloc(strlen(login) + strlen(DIRECTORY) + 1))) {
 287.125 +                /** ERROR | CANNOT ALLOCATE MEMORY FOR DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
 287.126 +                RedirectToLoginPanel();
 287.127 +              } else {
 287.128 +                char *systemDirectory;
 287.129 +                if (!(systemDirectory = malloc(strlen(login) + strlen(SYSTEM_DIRECTORY) + 1))) {
 287.130 +                  /** ERROR | CANNOT ALLOCATE MEMORY FOR SYSTEM DIRECTORY NAME > REDIRECT TO LOGIN PANEL **/
 287.131 +                  RedirectToLoginPanel();
 287.132 +                } else {
 287.133 +                  strcpy(directory, DIRECTORY);
 287.134 +                  strcat(directory, login);
 287.135 +                  strcpy(systemDirectory, SYSTEM_DIRECTORY);
 287.136 +                  strcat(systemDirectory, login);
 287.137 +
 287.138 +                  /* IF DIRECTORY CAN'T BE ACCESSED... */
 287.139 +                  if (access(directory, F_OK) || access(systemDirectory, F_OK)) {
 287.140 +                    /** ERROR | CANNOT ACCESS DIRECTORY > REDIRECT TO LOGIN PANEL **/
 287.141 +                    RedirectToLoginPanel();
 287.142 +
 287.143 +                  /* OTHERWISE, IF DIRECTORY CAN BE ACCESSED... */
 287.144 +                  } else {
 287.145 +
 287.146 +                    /* ATTEMPT TO ACCESS PASSWORD FILE */
 287.147 +                    char *passwordFileName;
 287.148 +                    if (!(passwordFileName = malloc(strlen(systemDirectory) + strlen(PASSWORD_FILE_NAME) + 11))) {
 287.149 +                      /** ERROR | CANNOT ALLOCATE MEMORY FOR FILE NAME > REDIRECT TO LOGIN PANEL **/
 287.150 +                      RedirectToLoginPanel();
 287.151 +                    } else {
 287.152 +                      strcpy(passwordFileName, systemDirectory);
 287.153 +                      strcat(passwordFileName, PASSWORD_FILE_NAME);
 287.154 +
 287.155 +                      /* IF PASSWORD FILE CAN'T BE ACCESSED... */
 287.156 +                      if (access(passwordFileName, F_OK)) {
 287.157 +                        /** ERROR | CANNOT ACCESS FILE > REDIRECT TO LOGIN PANEL **/
 287.158 +                        RedirectToLoginPanel();
 287.159 +
 287.160 +                      /* OTHERWISE, IF PASSWORD FILE CAN BE ACCESSED... */
 287.161 +                      } else {
 287.162 +
 287.163 +                        /* ATTEMPT TO OPEN PASSWORD FILE FOR READING */
 287.164 +                        FILE *passwordFile;
 287.165 +
 287.166 +                        /* IF PASSWORD FILE CAN'T BE OPENED FOR READING... */
 287.167 +                        if (!(passwordFile = fopen(passwordFileName, "r"))) {
 287.168 +                          /** ERROR | CANNOT READ FILE > REDIRECT TO LOGIN PANEL **/
 287.169 +                          RedirectToLoginPanel();
 287.170 +
 287.171 +                        /* OTHERWISE, IF PASSWORD FILE CAN BE OPENED FOR READING... */
 287.172 +                        } else {
 287.173 +                          char *filePassword;
 287.174 +                          if (!(filePassword = malloc(MAX_PASSWORD_SIZE + 1))) {
 287.175 +                            /** ERROR | CANNOT ALLOCATE MEMORY FOR PASSWORD FROM FILE > REDIRECT TO LOGIN PANEL **/
 287.176 +                            RedirectToLoginPanel();
 287.177 +                          } else {
 287.178 +                            char c;
 287.179 +                            i = 0;
 287.180 +
 287.181 +                            /* READ PASSWORD FROM PASSWORD FILE */
 287.182 +                            while (((c = fgetc(passwordFile)) != '\n') && (i < MAX_PASSWORD_SIZE)) {
 287.183 +                              filePassword[i] = c;
 287.184 +                              ++i;
 287.185 +                            }
 287.186 +                            filePassword[i] = '\0';
 287.187 +                            fclose(passwordFile);
 287.188 +
 287.189 +                            /* IF PASSWORD FAILS COMPARISON... */
 287.190 +                            if (strcmp(filePassword, password)) {
 287.191 +                              /** ERROR | PASSWORD FAILED > REDIRECT TO LOGIN PANEL **/
 287.192 +                              RedirectToLoginPanel();
 287.193 +
 287.194 +                            /* OTHERWISE, IF PASSWORD PASSES COMPARISON... */
 287.195 +                            } else {
 287.196 +
 287.197 +                              /* LOAD SETTINGS VALUES FROM FILES */
 287.198 +
 287.199 +                              /* LOAD COMPONENTS FROM FILES */
 287.200 +
 287.201 +                              /* DECLARE AND INITIALIZE QUERY VARIABLES */
 287.202 +                              char *name, *open;
 287.203 +                              name = open = NULL;
 287.204 +
 287.205 +                              /* IF QUERY DATA EXISTS AND IS OF ACCEPTABLE LENGTH... */
 287.206 +                              if (getenv("QUERY_STRING") && (sizeof(strlen(getenv("QUERY_STRING"))) <= sizeof(INT))) {
 287.207 +                                char *query;
 287.208 +                                INT queryLength = strlen(getenv("QUERY_STRING"));
 287.209 +                                if ((queryLength < 1) || !(query = malloc(queryLength + 1))) {
 287.210 +                                  /** ERROR | CRUCIAL MEMORY ALLOCATION ERROR FOR QUERY DATA! > CONTINUE WITHOUT QUERY **/
 287.211 +                                } else {
 287.212 +                                  strcpy(query, getenv("QUERY_STRING"));
 287.213 +                                  free(variableName);
 287.214 +                                  if (!(variableName = malloc(queryLength + 1))) {
 287.215 +                                    /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE NAME > CONTINUE WITHOUT QUERY **/
 287.216 +                                  } else {
 287.217 +                                    free(variableValue);
 287.218 +                                    if (!(variableValue = malloc(queryLength + 1))) {
 287.219 +                                      /** ERROR | CANNOT ALLOCATE MEMORY FOR VARIABLE VALUE > CONTINUE WITHOUT QUERY **/
 287.220 +
 287.221 +                                    /* IF SUFFICIENT MEMORY FOR QUERY VARIABLES... */
 287.222 +                                    } else {
 287.223 +
 287.224 +                                      /* PROCESS QUERY DATA */
 287.225 +                                      INT q = 0;
 287.226 +                                      i = 0;
 287.227 +                                      while ((q < queryLength) && (query[q] != '\0')) {
 287.228 +                                        while ((q < queryLength) && (query[q] != '=') && (query[q] != '\0')) {
 287.229 +                                          variableName[i] = query[q];
 287.230 +                                          ++q;
 287.231 +                                          ++i;
 287.232 +                                        }
 287.233 +                                        variableName[i] = '\0';
 287.234 +                                        ++q;
 287.235 +                                        i = 0;
 287.236 +                                        while ((query[q] != '&') && (query[q] != '\0')) {
 287.237 +                                          variableValue[i] = query[q];
 287.238 +                                          ++q;
 287.239 +                                          ++i;
 287.240 +                                        }
 287.241 +                                        variableValue[i] = '\0';
 287.242 +                                        if (query[q] != '\0') {
 287.243 +                                          ++q;
 287.244 +                                        }
 287.245 +                                        if (!name && !strcmp(variableName, "name")) {
 287.246 +                                          if ((name = malloc(strlen(variableValue) + 1)) != 0) {
 287.247 +                                            strcpy(name, variableValue);
 287.248 +                                          }
 287.249 +                                        } else if (!open && !strcmp(variableName, "open")) {
 287.250 +                                          if ((open = malloc(strlen(variableValue) + 1)) != 0) {
 287.251 +                                            strcpy(open, variableValue);
 287.252 +                                          }
 287.253 +                                        }
 287.254 +                                      }
 287.255 +                                      free(variableValue);
 287.256 +                                      variableValue = NULL;
 287.257 +                                    }
 287.258 +                                    free(variableName);
 287.259 +                                    variableName = NULL;
 287.260 +                                  }
 287.261 +                                  free(query);
 287.262 +                                }
 287.263 +                              }
 287.264 +
 287.265 +                              /* OUTPUT GUI COMPONENT(S) BASED ON VARIABLES */
 287.266 +                              if (name) {
 287.267 +                                if (!strcmp(name, "settings")) {
 287.268 +                                  OutputSettingsMenu(NULL);
 287.269 +                                } else if (!strcmp(name, "new")) {
 287.270 +                                  OutputNewMenu();
 287.271 +                                } else if (!strcmp(name, "open")) {
 287.272 +                                  OutputOpenMenu(NULL);
 287.273 +                                } else if (!strcmp(name, "next")) {
 287.274 +                                  OutputNextMenu(NULL);
 287.275 +                                } else {
 287.276 +                                  RedirectToLoginPanel();
 287.277 +                                }
 287.278 +                              } else if (open) {
 287.279 +                                if (!strcmp(open, "text_file")) {
 287.280 +                                  OutputOpenMenu(open);
 287.281 +                                } else {
 287.282 +                                  OutputOpenMenu(NULL);
 287.283 +                                }
 287.284 +                              } else {
 287.285 +                                RedirectToLoginPanel();
 287.286 +                              }
 287.287 +                              free(name);
 287.288 +                              free(open);
 287.289 +                            }
 287.290 +                            free(filePassword);
 287.291 +                          }
 287.292 +                        }
 287.293 +                      }
 287.294 +                      free(passwordFileName);
 287.295 +                    }
 287.296 +                  }
 287.297 +                  free(systemDirectory);
 287.298 +                }
 287.299 +                free(directory);
 287.300 +              }
 287.301 +              free(login);
 287.302 +            }
 287.303 +            free(password);
 287.304 +            free(variableValue);
 287.305 +          }
 287.306 +          free(variableName);
 287.307 +        }
 287.308 +        free(cookie);
 287.309 +      }
 287.310 +    }
 287.311 +  }
 287.312 +  return 0;
 287.313 +}
 287.314 +
 287.315 +/* FUNCTION | REDIRECT TO LOGIN PANEL */
 287.316 +static void RedirectToLoginPanel(void) {
 287.317 +  printf("Location: login\r\n\r\n");
 287.318 +}
 287.319 +
 287.320 +static void OutputNewMenu(void) {
 287.321 +  BeginXHTMLOutput();
 287.322 +  printf("      class=\"newMenu\">\n");
 287.323 +  printf("  <!--==================================================-->\n");
 287.324 +  printf("  <!--    interos Standard Document Header - Markup     -->\n");
 287.325 +  printf("  <!--==================================================-->\n");
 287.326 +  printf("  <!--    URIs:  https://interos.com/menu?name=new      -->\n");
 287.327 +  printf("  <!--           https://www.interos.com/menu?name=new  -->\n");
 287.328 +  printf("  <!--   Title:  interos new menu                       -->\n");
 287.329 +  printf("  <!--  Author:  Brent Angeline                         -->\n");
 287.330 +  printf("  <!--  Markup:  W3C-Validated XHTML 1.0 Transitional   -->\n");
 287.331 +  printf("  <!--==================================================-->\n");
 287.332 +  printf("  <head>\n");
 287.333 +  printf("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n");
 287.334 +  printf("    <meta name=\"title\" content=\"interos new menu\" />\n");
 287.335 +  printf("    <meta name=\"description\" content=\"new menu for interos\" />\n");
 287.336 +  printf("    <meta name=\"author\" content=\"Brent Angeline\" />\n");
 287.337 +  printf("    <meta name=\"copyright