Assumptions
- You have telnet and SSH enabled on your router. See Telnet/SSH_and_the_Command_Line.
- You can send files via SSH to and from your desktop (e.g with WinSCP)
- You have jffs enabled and enough free space to store your files or you have working mmc mod.
- I will assume you are installing to the jffs partition. If you are not, replace jffs with mmc or some other folder
- You have the "Enable Info Site" enabled (Administration -> Management -> WEB Access)
- Optional: you have the "Wireless GUI Access" enabled (Wireless -> Advanced Settings)
- You MUST name your index file Info.htm (note upper case "I", thus "Info.htm" and NOT "info.htm")
How will this work?
- We will move the router's web admin to port 81
- We will start your WEB server at port 80
- Optional: we will open port 80 to the world
Procedure
1) Copy your files to the router, i.e. to the /jffs folder
2) Open web admin Administration -> Diagnostics, press "Run"
3) Enter these lines to the Commands field:
killall httpd4) Press "Save Startup", the router will reboot or reboot it manually.
cd /www
httpd -p 81 -h /www
cd /jffs
httpd -h /jffs
Optional: open to the world
1) Open web admin Administration -> Diagnostics, press "Run"
2) Enter this line to the Commands field:
/usr/sbin/iptables -I INPUT 1 -p tcp --dport 80 -j logaccept3) Press "Save Firewall", the router will reboot or reboot it manually.
Congratulations!!!, you have your own web server running.
Please remember your router's config pages are now at 192.168.1.1:81
This method of changing the admin port will make remote web admin inoperable. A better way is to set the http_lanport nvram variable instead.
How to cancel this?
Telnet to the router and type:
nvram set rc_startup=""
nvram set rc_firewall=""
nvram commit
reboot
How to access/edit pages
I.
You can add your own pages to /tmp/www folder and then access them with http://192.168.1.1/user/Yourpage.asp
Only static html pages, but if you need dynamic pages you can use CGI scripts (sh scripts or some binary file)
Create the directory /tmp/www/cgi-bin
Then create a script like:
#!/bin/shSave your script as script.cgi and
echo "<html><body>hello world</body></html>"
chmod +x /tmp/www/cgi-bin/script.cgiYou can execute the page going to http://192.168.1.1/user/cgi-bin/script.cgi
Reference: this thread
II.
Shellscripts with .sh will work in folder /tmp/www/cgi-bin as well...
example would be:
#!/bin/shsave this as
echo '<HTML><HEAD><TITLE>Custom Script Test</TITLE></HEAD>'
echo '<BODY>'
nvram get router_name
echo ' sample custom script:<br>'
NOW=`date +%s`
echo "Unix-Time here on this device is ${NOW}. Nothing usefull...<br>"
echo "Just a test..."
/tmp/www/cgi-bin/custom.sh
and make it executable:
chmod +x /tmp/www/cgi-bin/custom.shand point your browser to it:
http://ROUTER.IP.HERE/user/cgi-bin/custom.sh
and you should see the generated output...
This is tested with
DD-WRT v24-sp2 (10/22/08) mega - build 10564M NEWD Eko
Note: In these examples, we created scripts in the /tmp directory which is actually pointing to SDRAM. Any pages or scripts in this directory will be lost upon router reboot and/or power loss, unless you back them up first in jffs2/mmc/nvram.


0 comments:
Post a Comment