BBC BASIC for Windows
Programming >> BBC BASIC language >> Online program
http://bb4w.conforums.com/index.cgi?board=language&action=display&num=1379844095

Online program
Post by bartmunting on Sep 22nd, 2013, 10:01am

Can I make a program in BB4W that can be put on a website and there it will run and people can work with it?
If it can be done would some one have an example (simple!)

Bart Munting
Re: Online program
Post by JGHarston on Sep 22nd, 2013, 1:39pm

on Sep 22nd, 2013, 10:01am, bartmunting wrote:
Can I make a program in BB4W that can be put on a website and there it will run and people can work with it?
If it can be done would some one have an example (simple!)
Yes. Just compile it and upload the executable.
For example: http://mdfs.net/temp/hello.exe will run, IF the user has configured their browser to execute downloaded binaries AND they answer 'yes' to any download checks AND it isn't terminated as a suspicious process AND the users chooses to run it instead of saving it.

Re: Online program
Post by admin on Sep 22nd, 2013, 2:20pm

on Sep 22nd, 2013, 10:01am, bartmunting wrote:
Can I make a program in BB4W that can be put on a website and there it will run and people can work with it?

Yes, but bear in mind that the program will end up running on the user's computer so it will only work if he is using a Windows PC, not a Mac, or a tablet, or a smartphone etc. Depending on your application that could be a significant limitation.

Quote:
If it can be done would some one have an example (simple!)

Basically all you need to do is compile your program to a standalone EXE, upload it to your web space, and put a link to it on your web site.

However in these security-conscious days you need to ensure that your program will be considered 'safe to run' and not blocked by the browser/PC. I would strongly advise you to purchase a code-signing certificate and sign your EXEs; I appreciate that the expense involved is significant (although there are some good deals to be had if you shop around) but really it's the only way to ensure that your program won't be flagged as dangerous (and even then the user will probably be warned that it is 'infrequently downloaded' and should be treated with caution).

Before embarking on this endeavour I would suggest you try running some of the EXEs on my site (which are mostly signed) and some of those on the BB4Wgames site (which are mostly unsigned) just to get a feel for how your particular browser/PC reacts:

http://www.rtrussell.co.uk/bbcwin/examples/
http://www.bb4wgames.com/

Richard.
Re: Online program
Post by admin on Sep 22nd, 2013, 2:58pm

Oh dear, just as I encourage people to use this forum instead of the Yahoo group we acquire a troll (the first ever, I think)!

Needless to say, this is a group where I expect BB4W enthusiasts to hang out, not people who do not appreciate its virtues. That's not to say that criticism is unwelcome (I have many criticisms of BBC BASIC myself) but please make it constructive and appropriate.

Richard.
Re: Online program
Post by Troll on Sep 22nd, 2013, 3:19pm

Yeh right, "criticism is welcome", you simply delete the posts and the user.
Great going Mr Russell very adult of you.

Kind regards
The resident troll.

Re: Online program
Post by admin on Sep 22nd, 2013, 3:38pm

Sigh. I suppose we should be grateful that the BB4W forums have generally been amazingly free from this kind of hassle; I know others haven't been so lucky.

It's noteworthy that in the twelve years (almost to the day) of BBC BASIC for Windows existing I have never banned anybody from the BB4W Yahoo group, and only one person has ever been banned from here - apart from advertising robots.

I reiterate that I welcome criticism of BB4W, so long as it is accurate and constructive. Plenty of it can be found in the archives of this forum and the group.

Richard.
Re: Online program
Post by bartmunting on Sep 23rd, 2013, 11:09am

I think i have made not the good question.
I was meaning to make a web based program. There is no need for download but think of a booking program is a website. Normally they are made with a language like PHP.
Is that possible with a BB4W program?
I have made a program which uses SQLite, where can i upload this to get comments?

Bart
Re: Online program
Post by JGHarston on Sep 24th, 2013, 10:08pm

on Sep 23rd, 2013, 11:09am, bartmunting wrote:
I was meaning to make a web based program.
...
Is that possible with a BB4W program?
I have made a program which uses SQLite, where can i upload this to get comments?

Ahhh! You mean run a BBC BASIC program on your server that responds to requests from a web client and supplies data back.

I recall Jon Ripley did some experiments with configuring Apache to include BB4W binaries as CGI programs (Common Gateway Interface - a method of a web server asking another program to do a task for it).

The code needs to attach the input and output to certain streams and be careful about flushing them on completion. There may be something in the Yahoo messages conversations archive from (IIRC) about five years ago.

Re: Online program
Post by JGHarston on Sep 27th, 2013, 01:41am

on Sep 24th, 2013, 10:08pm, JGHarston wrote:
I recall Jon Ripley did some experiments with configuring Apache to include BB4W binaries as CGI programs ...

Ah, here we are.

Re: Online program
Post by bartmunting on Sep 27th, 2013, 08:15am

Thanks so much.
I read it and it totally beyond my knowledge!
I have now decided to make a program and store the data on the internet. The program then can be distributed to the people who are going to use it and the data they will get them from the internet.
I am now trying to figure out how to store the data.
Maybe any idea?

Bart
Re: Online program
Post by admin on Sep 27th, 2013, 10:41am

on Sep 27th, 2013, 08:15am, bartmunting wrote:
I read it and it totally beyond my knowledge!

Try this: http://www.jmarshall.com/easy/cgi/

I'm a little puzzled by Jon's comment in the Wiki article that STDOUT must be closed before quitting, because what he actually does is call SetEndOfFile rather than closing the file.

Richard.
Re: Online program
Post by JGHarston on Sep 27th, 2013, 5:49pm

I think the biggest problem you are going to find is getting your server to run a Windows .exe file.
Almost all ISP servers run on a Unix platform, so you'd need their Unix server to be able to run Wine (WINdows Environment) or equivalent. A bigger problem is that almost all ISP servers will not allow you to run an arbitary .exe file as it opens huge security holes.

So, practically, you would need to run your own server on your own physical Windows PC running Windows. Then you have control over potentially harmful .exes being run. You would need a Web Server running on your Windows PC, such as Apache. You would then configure it to run .exe files - to be safest, you'd register the specific .exe files that you want to run rather than any random .exe

So, unless you have your own Windows PC that you have a Web Server running on 24 hours a day you will need to investigate other options. It might be worth you fleshing out a bit more what you want to accomplish.

Re: Online program
Post by MrX on Oct 1st, 2013, 09:39am

JGHarston is correct and that is why we have CGI and server side scripting.

For the average person to expose an exe to the WWW is sheer lunacy.
Even scripts can sometimes have attack vectors if it does not "sanitize" potentially harmful characters such as \ and ~ let alone an exe compile by someone with no knowledge of online threats and vulnerabilities.

Simple concept, if it can't be done with a server side script, rethink your application.
Re: Online program
Post by admin on Oct 1st, 2013, 10:16am

on Oct 1st, 2013, 09:39am, MrX wrote:
For the average person to expose an exe to the WWW is sheer lunacy.

I disagree. You only need to look at the various BB4W support sites, such as http://www.bbcbasic.co.uk/bbcwin/examples/ and http://www.bb4wgames.com/ to find many compiled BB4W EXEs which are available to be run directly from the web by a single-click. This is an extremely useful facility, and something that BB4W is well suited for.

There is fundamentally no difference between running such an EXE and running the installer for a piece of freeware. It is the responsibility of the end-user to be careful to run only EXEs which he is confident are safe. Ideally they should be digitally signed for added security, and BB4W has that capability.

Indeed the principal reason for Code Signing certificates existing is to support running EXEs which have been downloaded from the web! If you take the view that you should never put EXEs on a web site they would be largely unnecessary!

The whole basis of the World Wide Web is freedom; there are very few restrictions on what can be placed on a web site and that is how it should be. The responsibility lies with the user to use the web safely, and that means that he should use due caution when running an EXE. But it does not mean that such EXEs should not be made available.

There are many situations when a BB4W EXE is not an appropriate solution, not least if the application needs to run on a non-Windows client. In such cases a server side solution such as a CGI script (or even a BBC BASIC program serving HTML code) is obviously more appropriate.

Richard.

Re: Online program
Post by MrX on Oct 1st, 2013, 10:31am

Richard

I suspect you misunderstood me.
What I meant is that the exe runs on the server as opposed to a person clicking on it and it's run on the users machine.

The way I understood the OP when he wrote:
Quote:
Can I make a program in BB4W that can be put on a website and there it will run and people can work with it?

and
Quote:
I was meaning to make a web based program. There is no need for download but think of a booking program is a website. Normally they are made with a language like PHP.


Is that the exe is run server side and interacts with the user via a web browser as opposed to just hosting the exe which people can click on, it will be downloaded to their computer and run.

For the exact reasons I mentioned in my previous post, you will be very hard pressed to find a hosting provider that will allow you to run an exe server side even if the server is running Windows which 99% don't.



Re: Online program
Post by admin on Oct 1st, 2013, 10:55am

on Oct 1st, 2013, 10:31am, MrX wrote:
you will be very hard pressed to find a hosting provider that will allow you to run an exe server side even if the server is running Windows which 99% don't.

Major hosting providers will sometimes offer a choice of a Linux or Windows server (mine used to, but when I last looked they seemed to have discontinued the Windows product). But of course you can run BBC BASIC under Linux (e.g. by using Brandy or Wine) so that isn't necessarily an issue.

This Microsoft article explains how to write CGI applications in Visual BASIC; how is that any different from writing them in BBC BASIC?

http://support.microsoft.com/kb/239588

Richard.


Re: Online program
Post by MrX on Oct 1st, 2013, 11:10am

I think you are still not understanding the differences between running an exe on a server versus a client.

Quote:
But of course you can run BBC BASIC under Linux (e.g. by using Brandy or Wine) so that isn't necessarily an issue.


Are you seriously suggesting that one loads Wine onto a server so it can run an exe?

Quote:
This Microsoft article explains how to write CGI applications in Visual BASIC; how is that any different from writing them in BBC BASIC?

http://support.microsoft.com/kb/239588


No difference and I certainly was not trying to single out BBC BASIC.
The problem with compiling your own exe for running on a server (assuming that the server actually runs Windows) is the vulnerabilities associated with them such as buffer overflows and the like.
There have been many reports about this.
Furthermore, script interpreters such as Perl PHP and so on are actually sandboxed and run as separate user (with decreased authority) especially to decrease the chances of hacks if the proverbial hits the fan and the exe is compromised.
This is something that is not that easy to achieve with an exe and Microsoft should know better, actually they do but their security track record is not exactly an illustrious one.

My intention is not to try and say that Linux is better than Windows.
All I'm trying to point out is that running a Windows exe directly on a server is not a good idea like wise with a Linux ELF binary.

Re: Online program
Post by admin on Oct 1st, 2013, 11:36am

on Oct 1st, 2013, 11:10am, MrX wrote:
Are you seriously suggesting that one loads Wine onto a server so it can run an exe?

If I had a personal web server - and I didn't want it to run Windows - I would be prepared to do that; Wine is not a major overhead at run-time. But Brandy or Owl Basic (if and when it's ever finished) might be better choices, since they are more lightweight.

Given that support for graphics and GUI widgets would be irrelevant in a CGI application, another possibility would be recompiling BB4W as a Linux console application. That is something that has been on my wish list for a long time.

Until quite recently Jon Ripley ran a personal web server and I'm almost certain he had CGI programs written in BB4W. He was the author of the relevant Wiki article:

http://bb4w.wikispaces.com/Writing+console+mode+programs+that+will+also+run+in+the+IDE

Quote:
The problem with compiling your own exe for running on a server (assuming that the server actually runs Windows) is the vulnerabilities associated with them such as buffer overflows and the like.

In that case writing a CGI application in an obscure language like BBC BASIC, which is unlikely to be targetted by hackers, sounds like a good idea! wink

Richard.
Re: Online program
Post by MrX on Oct 1st, 2013, 11:43am

on Oct 1st, 2013, 11:36am, Richard Russell wrote:
If I had a personal web server - and I didn't want it to run Windows - I would be prepared to do that; Wine is not a major overhead at run-time. But Brandy or Owl Basic (if and when it's ever finished) might be better choices, since they are more lightweight.


Richard, it has very little to do with the load it may put on a server but more to do with security loop holes associated with them.

on Oct 1st, 2013, 11:36am, Richard Russell wrote:
Given that support for graphics and GUI widgets would be irrelevant in a CGI application, another possibility would be recompiling BB4W as a Linux console application. That is something that has been on my wish list for a long time.


Then why not use FASM? and simply include the BBC BASIC syntax as macros?

on Oct 1st, 2013, 11:36am, Richard Russell wrote:
In that case writing a CGI application in an obscure language like BBC BASIC, which is unlikely to be targetted by hackers, sounds like a good idea! wink

Richard.


It has nothing to do with the obscurity of a language as once it's compiled, it's all much of a muchness.
It's how the Windows Kernel treats apps that have crashed that open ups security flaws.
Re: Online program
Post by admin on Oct 1st, 2013, 12:00pm

on Oct 1st, 2013, 11:43am, MrX wrote:
Then why not use FASM? and simply include the BBC BASIC syntax as macros?

Clearly you don't know very much about BBC BASIC if you think that would be "simple", or indeed even practical.

Quote:
It has nothing to do with the obscurity of a language as once it's compiled, it's all much of a muchness.

A buffer overflow attack relies on knowledge of the code being targetted (e.g. by disassembling), so obscurity is beneficial. It's user-mode code (not the kernel) which is vulnerable.

This has drifted off-topic now, and I have better things to do, so I am locking the thread.

Richard.