[XAP][Source] Root Webserver - v2.3.1 (supports Full or Root Tools unlock)

Search This thread

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
UPDATE: Still working on a newer version of the webserver, but I've been distrcted by a number of other projects lately (including getting a new job). The most important news is that the Root Webserver works great with WP7 Root Tools; you don't need a full-unlocked ROM or HtcRoot compatibility anymore! Just mark the app as Trusted in the WP7 Root Tools policy pivot, and you're good to go.

Sorry for the long delay, I've been working on many different things. One of them is re-write of a substantial part of this app, to make it more modular and extensible and also to add more features. That re-write is far from done, any may end up being broken into a few smaller pieces once any of the new or re-written features reach release-quality without the whole app being unusably broken.

This project started out as a child of the HtcRoot project. It no longer requires HtcRoot; full-unlock or WP7 Root Tools work fine. It's also a child of the Functional Webserver / WebServer (Mango) projects, and builds on their open-source foundations. Its goal is to allow unfettered access to your phone through the convenience of a web browser.

Fifth release (v2.3.1)
Platform release, minor feature release, minor library update, bugfixes
Should now be compatible with fully unlocked custom ROMs, even if they can't use the HtcRoot project.
This release does not include NativeIO_Mango source, as it was not changed. If you need the source for this library, extract it from the 2.2.0 download.

Homebrew library (v1.6.3)
Better detection and reporting of exceptions due to not being root.
Should be safe to use the HtcRoot functionality on fully-unlocked ROMs.

Please see the changelog in the app for details and history

Note that this app requires a slight update to NativeIO_Mango from @fiinix's version. There were some bugs in the library that were making things difficult, so I fixed them. I also changed the return values of a couple functions (though the signatures are unchanged) to give the ability to return error codes from COM. Source code for both the managed Homebrew and COM NativeIO_Mango libraries is included, along with compiled binaries. Source code for the HtcUtility library can be downloaded from the HtcRoot proect.

Features:
View folder and ROM Module last-modified dates. (NEW 2.3.1)
File attribute info now presented better. (NEW 2.3.1)
Upload files anywhere. (2.2.0)
Create and delete directories anywhere. (2.2.0)
Delete writable files.
Add or Remove readonly attribute from files. (2.2.0)
See file size and attributes for any file.
Browse the entire filesystem.
Download any file (still not ROM modules, though).
Static HTML files in a "Content" folder for easier editing.
Easy link to browse (and add your own files) to Content folder (2.2.0)
All features of previous WebServer versions (IsoStore uploading, authentication, etc.)
Changelog

Bugfixes:
Fixed a case where setting file attributes or uploading a file would fail due to lacking permissions.
Fixed the potential for infinite loops on fully-unlocked ROMs compatibel with the HtcRoot project.
More effort to eliminate RootException / Error 1260.

Upcoming:
Access the registry as well as the filesystem.
Better access to installed application info and folders.
View, edit, move, and rename files.
Rename and move directories.
Server-side commands (process provxml, for example)?
Filesystem/Registry/Application search?

Known Bugs:
App may take several seconds to close; don't re-launch it immediately or weird things may happen.
Touching the screen while the app is in "root" mode appears to cause a crash, and posible resource leak.
Error 1260 (Least Privileged Chamber) may still occasionally appear on first access attempt or two... really wish I knew why.

Requirements:
Developer-unlocked phone (if you remove ID_CAP_INTEROPSERVICES it will work without root access, cutting off most of the filesystem).
For root access, you need *EITHER*
* A fully-unlocked ROM
* An interop-unlocked HTC phone with working HtcUtility driver
If your phone is compatible with the HtcRoot project, you're OK.

Thanks To:
Davux (original author of the "Functional Webserver" app)
Fiinix (Ported the NativeIO library and Webserver app to Mango)
MarysFetus (designed icons and graphics for the webserver app - site http://klaus-widraw.de)
Everybody who helped make the HtcRoot project possible.


Have fun!
 

Attachments

  • HtcRootWebserver202.zip
    1.5 MB · Views: 1,616
  • HtcRootWebServer_202.xap
    339.7 KB · Views: 933
  • HtcRootWebServer_210.xap
    339.4 KB · Views: 290
  • HtcRootWebServer_210.zip
    1.5 MB · Views: 275
  • HtcRootWebServer_220.xap
    340.8 KB · Views: 615
  • HtcRootWebServer_220.zip
    1.5 MB · Views: 337
  • HtcRootWebServer_231.xap
    528.7 KB · Views: 3,433
  • HtcRootWebServer_231.zip
    1.1 MB · Views: 2,430
Last edited:

voluptuary

Senior Member
Dec 29, 2010
960
753
Mukwonago
I'm not by my HTC HD2 but anybody know if will this work on it under the B.t.t.F ROM?

Awesome work GDTD!

EDIT: Doesn't work on a HTC HD2 on B.t.t.F v2.1 @ 8107 (no SP1) I get the following error when trying to connect from my PC:
Code:
Exception while getting the listing for /!
Homebrew.InteropException: Error listing subdirectories of ! GetLastError: 1260 at Homebrew.IO.DirectoryInfo.GetDirectories(String filter) at Homebrew.IO.DirectoryInfo.GetDirectories() at WebServer.MainPage.handler.BuildDirectoryListing(String dirPath) at WebServer.MainPage.handler.Process(RequestContext context) at HttpServer.Server.ProcessModules(RequestContext context) at HttpServer.Server.HandleRequest(RequestEventArgs e) at HttpServer.Server.OnRequest(Object sender, RequestEventArgs e) at HttpServer.HttpListener.OnRequest(Object sender, RequestEventArgs e) at HttpServer.HttpContext.OnRequest(Object sender, FactoryRequestEventArgs e) at HttpServer.Messages.MessageFactoryContext.OnMessageComplete(Object sender, EventArgs e) at HttpServer.Messages.Parser.HttpParser.OnComplete() at HttpServer.Messages.Parser.HttpParser.GetHeaderName() at HttpServer.Messages.Parser.HttpParser.Parse(Byte[] buffer, Int32 offset, Int32 count) at HttpServer.Messages.MessageFactoryContext.Parse(Byte[] buffer, Int32 offset, Int32 length) at HttpServer.HttpContext.ParseBuffer(Int32 bytesLeft) at HttpServer.HttpContext.OnReceive(Int32 bytesLeft) at HttpServer.HttpContext.b__a() at System.Threading.ThreadHelper.ThreadStartHelper(ThreadHelper t) at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStartHelper()

It is interop unlocked so I don't get the error.
 
Last edited:

dragonide

Senior Member
Jul 9, 2010
284
67
Rome
NOOOO I AM CRYING !!! THIS IS WHAT I WANTED AND I CAN'T EVEN TRY IT !!

Kill me now ;_; sigh sob sigh

EDIT : good work and good luck ;)
 
Last edited:

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
@voluptuary: If you can run the HtcUtilityTest app successfully (from the HtcRoot page) then yes, this will work.

On that thread, I have the following listed as compatible:
HD2 (BttF [XBmod-Yuki] v2 SP1)

That your ROM?
 
  • Like
Reactions: voluptuary

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
@Voluptuary:
To quote from the Known Bugs section:
First attempt to access the filesystem will often fail or take too long; hit refresh a couple times and it should work.

I don't know why it does this. I built in some delays and some automatic retries, and that improved things dramatically - it will *almost* always work on the first freresh attempt (or second click on the Filesystem link) now - but didn't eliminate the problem. I'm not sure what it is; on the test app the switch to SYSTEM token is effectively instant. Maybe it has to do with the number of threads or something?

Anyhow, give it another shot and it should work. I contemplated just putting in a 5-second auto-refresh on the error page...
 
  • Like
Reactions: voluptuary

voluptuary

Senior Member
Dec 29, 2010
960
753
Mukwonago
@Voluptuary:
To quote from the Known Bugs section:
First attempt to access the filesystem will often fail or take too long; hit refresh a couple times and it should work.

I don't know why it does this. I built in some delays and some automatic retries, and that improved things dramatically - it will *almost* always work on the first freresh attempt (or second click on the Filesystem link) now - but didn't eliminate the problem. I'm not sure what it is; on the test app the switch to SYSTEM token is effectively instant. Maybe it has to do with the number of threads or something?

Anyhow, give it another shot and it should work. I contemplated just putting in a 5-second auto-refresh on the error page...

Sorry, I should have read your post better. I hate when people do that to me in my threads, I should know better.

Anyways I got it working, kinda. It still gave the error at the top of the page but then it listed the directories anyways, then navigating to Windows always fails, just times out or stays loading forever. This is over Wifi, I guess it could be a latency problem but everything else on my network runs fine.
 

Ttblondey

Senior Member
Jan 1, 2008
1,690
103
I install but it does nothing.It shows serial on usb, softwareloopback interface1,bcmsddhd1
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
I'm looking into ways to resolve the read error issue. Once it decides to work, I can leave the app running for hours (on USB power, idle detection disabled of course) and browse with no trouble, but when I first open the app it's ornery for a few minutes. Very weird (and annoying). I'm guessing it's due to a threading issue, which would technically be a bug in the HtcRoot library, but I'll need to explore more.

By the way, the Windows folder takes a moment to load (it's huge). It should work pretty reliably though (you can open it for reading without having root at all, actually) and it opens a lot faster on my version than it did on the earlier ones (StringBuilder + half as many FileSystem calls + eliminated one of the slowest calls).

@Ttblondey: Dude, it's a W E B S E R V E R app. It runs a web server on your phone. You browse it through a web browser. I literally don't know what else to tell you, except to go read the threads on the other web server apps.
 
Last edited:

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
New version uploaded!

This contains some bigfixes - in particular, the Error 1260 bug (failure to elevate to root before trying to access the filesystem) has been mitigated to the point where it shouldn't be a problem.

It also uses a new version of the Homebrew library, 1.6.0, which incorporates access to the HtcRoot project under the Homebrew.HtcRoot namespace. Previously, the HtcRoot project was tacked onto the webserver directly, which meant the Homebrew library was unaware of its existence.

Requirements and major features have not changes in this update. Source code is included.
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
@Briefcase: Thanks! I wish I could support more phones. Heathcliff74 may be able to enable something for Samsung (gen1 at least) but he hasn't released a library for doing so yet.

FEATURE RELEASE 2.1.0 is out.
Major changes: File attributes information, file deletion.
 

Pr0xiMUS

Senior Member
Jul 29, 2008
72
31
You should talk with ROM chefs here to include read/write enabled HtcUtility in their roms because all recent ROMs unfortunately doesn't support your findings.
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
@Pr0xiMUS: That's a good point. This tool is potentially more powerful that TouchXplorer or Registry Editor from TouchXperience, but those are the primarily-targeted apps in custom ROMs.

I wonder if adding registry support will be as straighforward (and simultaneously frustrating, due to bugs) as filesystem support...
 
  • Like
Reactions: Briefcase

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
New version (2.2.0).

Some bugfixes, more file operations (uploading any file anywhere, adding and removing directories). Add your own files to the Content folder so you can serve them directly, if you want.
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
If anybody knows of a ready-made and Mango compatible registry COM library (that's open source, thanks a ton @schaps), this would save me some time. If not, I can either ports one from NoDo or write my own well enough.
 
  • Like
Reactions: Briefcase

Kr3i0s

Senior Member
Jun 30, 2011
107
28
I am not able to browse the File System getting the following error.

Exception while getting the listing for /!


System.Runtime.InteropServices.COMException (0x8007001F): A device attached to the system is not functioning.

Using DFT V3 rom on Htc 7 Pro (Gold)
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
@Kr3i0s: Your ROM is not compatible with the HtcRoot project, due to it having a crippled HtcUtility driver. If the ROM is updatable, it might be possible to downgrade the HtcUtility driver using a custom CAB. Otherwise, you'll need to wait for (or switch to) a ROM that has a working HtcUtility driver.

EDIT: Actually, a fully-unlocked ROM can probably use this app even without HtcRoot compatibility. I'll modify the app so that it detects Error 31 and tries to fall back on whatever permissions it already has.
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 25
    UPDATE: Still working on a newer version of the webserver, but I've been distrcted by a number of other projects lately (including getting a new job). The most important news is that the Root Webserver works great with WP7 Root Tools; you don't need a full-unlocked ROM or HtcRoot compatibility anymore! Just mark the app as Trusted in the WP7 Root Tools policy pivot, and you're good to go.

    Sorry for the long delay, I've been working on many different things. One of them is re-write of a substantial part of this app, to make it more modular and extensible and also to add more features. That re-write is far from done, any may end up being broken into a few smaller pieces once any of the new or re-written features reach release-quality without the whole app being unusably broken.

    This project started out as a child of the HtcRoot project. It no longer requires HtcRoot; full-unlock or WP7 Root Tools work fine. It's also a child of the Functional Webserver / WebServer (Mango) projects, and builds on their open-source foundations. Its goal is to allow unfettered access to your phone through the convenience of a web browser.

    Fifth release (v2.3.1)
    Platform release, minor feature release, minor library update, bugfixes
    Should now be compatible with fully unlocked custom ROMs, even if they can't use the HtcRoot project.
    This release does not include NativeIO_Mango source, as it was not changed. If you need the source for this library, extract it from the 2.2.0 download.

    Homebrew library (v1.6.3)
    Better detection and reporting of exceptions due to not being root.
    Should be safe to use the HtcRoot functionality on fully-unlocked ROMs.

    Please see the changelog in the app for details and history

    Note that this app requires a slight update to NativeIO_Mango from @fiinix's version. There were some bugs in the library that were making things difficult, so I fixed them. I also changed the return values of a couple functions (though the signatures are unchanged) to give the ability to return error codes from COM. Source code for both the managed Homebrew and COM NativeIO_Mango libraries is included, along with compiled binaries. Source code for the HtcUtility library can be downloaded from the HtcRoot proect.

    Features:
    View folder and ROM Module last-modified dates. (NEW 2.3.1)
    File attribute info now presented better. (NEW 2.3.1)
    Upload files anywhere. (2.2.0)
    Create and delete directories anywhere. (2.2.0)
    Delete writable files.
    Add or Remove readonly attribute from files. (2.2.0)
    See file size and attributes for any file.
    Browse the entire filesystem.
    Download any file (still not ROM modules, though).
    Static HTML files in a "Content" folder for easier editing.
    Easy link to browse (and add your own files) to Content folder (2.2.0)
    All features of previous WebServer versions (IsoStore uploading, authentication, etc.)
    Changelog

    Bugfixes:
    Fixed a case where setting file attributes or uploading a file would fail due to lacking permissions.
    Fixed the potential for infinite loops on fully-unlocked ROMs compatibel with the HtcRoot project.
    More effort to eliminate RootException / Error 1260.

    Upcoming:
    Access the registry as well as the filesystem.
    Better access to installed application info and folders.
    View, edit, move, and rename files.
    Rename and move directories.
    Server-side commands (process provxml, for example)?
    Filesystem/Registry/Application search?

    Known Bugs:
    App may take several seconds to close; don't re-launch it immediately or weird things may happen.
    Touching the screen while the app is in "root" mode appears to cause a crash, and posible resource leak.
    Error 1260 (Least Privileged Chamber) may still occasionally appear on first access attempt or two... really wish I knew why.

    Requirements:
    Developer-unlocked phone (if you remove ID_CAP_INTEROPSERVICES it will work without root access, cutting off most of the filesystem).
    For root access, you need *EITHER*
    * A fully-unlocked ROM
    * An interop-unlocked HTC phone with working HtcUtility driver
    If your phone is compatible with the HtcRoot project, you're OK.

    Thanks To:
    Davux (original author of the "Functional Webserver" app)
    Fiinix (Ported the NativeIO library and Webserver app to Mango)
    MarysFetus (designed icons and graphics for the webserver app - site http://klaus-widraw.de)
    Everybody who helped make the HtcRoot project possible.


    Have fun!
    7
    Metro HTML-design for HtcRootWebServer

    First of all, i want thank GoodDayToDie for developing this xap.
    it's really nice and simple to use. the filesystem/explorer is really much faster than touchexperience or touchexplorer. moreover now you have access to your device at any time and anywhere. for example, you can use your device as external storage, like a usb-stick.

    You only need the xap, deploy it to your device, choose name and password and connect via internetbrowser to the ip is showing in app.

    Secondly i write new html-files for the index-site and all other sites, that you can change in content folder or easily install the xap. I think this is important to get a nice design and simple using of the app. :rolleyes:

    What is to do!
    method a)
    Download the rar-file and extract it to a folder of your choice! than connect to your device, choose the content folder in web-browser and delete the included files index.htm, about.htm, changelog.htm and error.htm. after that you have to upload the files in the attached rar-file directly. (important is to delete first and upload after) if you get a error at upload, restart the app, refresh the browser and try it again.

    method b)
    Easily install the created xap.
    I have only change the files in content folder, no other files!
    Now, you can change the backgroundimage (htchd7.jpg) in content folder.
    But notice, if you upload/change your image, it must be 1000x1000pixel and named htchd7.jpg

    I have test it with my Htc HD7 (nextgen+ 2.6, nextgen+ 3.0, intrinsic) and with Htc Mozart (dft v3). Both works fine with firefox, google chrome, safari and InternetExplorer. With InternetExplorer you get some designbugs that i don't know why. (ver_1.1 fixed the bugs, works with IneternetExplorer now)

    With the new xx.htm- or xap-files you will get a better design. :)

    a) rar-files
    ver_0
    - support Firefox, Google Chrome and Safari
    - backgroundimage HTC included
    ver_1.1
    - support Internet Explorer and also Firefox, Google Chrome & Safari
    - backgroundimage HTC included
    - correct some bugs in html-code

    b) xap-files
    ver_231_Design_01
    - support Firefox, Google Chrome, Safari and also Internet Explorer
    - metro design
    - html-files included in xap
    - slightly modified backgroundimage HTC
    - backgroundimage (1000x1000pixel) can be changed now

    ver_231_Design_02
    - completely restructured HTML-Code
    - support all browser like MF, GC, S, IE
    - metro design
    - html-files included in xap
    - backgroundimage (1000x1000pixel) can be changed now
    - css-file inside img-folder can be edit, if you want
    - possibility to change the livetile color to gray (HTC HD7 theme)
    - possibility to change the theme

    ver_231_Design_03
    - update the LiveTile and Splashscreen
    - possibility to open second browser window
    - possibility to make notes in current session
    - otherwise the same version like design_02
    - support wp root tools (install root tools and the webserver app will work)

    - with the second brower window you can upload two files at the same time. i test it with my hd7 and i was able to upload two files simultaneously.
    - notes are prepared for the next update, then registry editing can be easily changed.


    Sorry, my english is not the best one, but i hope you understand what i mean and think about. great project, looking forwards for updates hopefully with registry access! :)
    4
    After a long delay, version 2.3.1 is out. The major new thing is that it should now run on fully-unlocked custom ROMs, and will probably work if elevated using WP7 Root Tools v0.9 or later as well!

    This is really just an interim release. It has some minor feature improvements and bugfixes, but is not the big re-write I've been working on. However, with the advent of custom ROMs for Samsung and for gen1.5 HTC phones, I felt it was important release this version now. This is even more important with the (presumably) imminent release of WP7 Root Tools v0.9, which will allow elevating other apps (different from the way that HtcRoot elevates them, but with similar effect). Since it was relatively simple to make the neccessary changes to run on such ROMs, I chose to do so prior to the next major release.
    2
    2
    I'm looking into ways to resolve the read error issue. Once it decides to work, I can leave the app running for hours (on USB power, idle detection disabled of course) and browse with no trouble, but when I first open the app it's ornery for a few minutes. Very weird (and annoying). I'm guessing it's due to a threading issue, which would technically be a bug in the HtcRoot library, but I'll need to explore more.

    By the way, the Windows folder takes a moment to load (it's huge). It should work pretty reliably though (you can open it for reading without having root at all, actually) and it opens a lot faster on my version than it did on the earlier ones (StringBuilder + half as many FileSystem calls + eliminated one of the slowest calls).

    @Ttblondey: Dude, it's a W E B S E R V E R app. It runs a web server on your phone. You browse it through a web browser. I literally don't know what else to tell you, except to go read the threads on the other web server apps.