472,961 Members | 1,730 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,961 software developers and data experts.

Is this a PHP script?? BASH?? Please review!

Hi

I've been given what I am told is a PHP script to be used on my server. I
do not know any PHP.

I am trying to use a feature of a program called ArchiCAD. This feauture
allows CAD drawing files to be published on a webpage, and viewed and
commented on using a java applet.

The problem is that with ArchiCAD v10, it now makes spaces and uses other
URL unfriendly characters in the filenames, making this feature not
properly.

This is an example of the faulty output:
http://test404.damnserver.com
Following is what I have been told is a PHP script. It is meant for a
freebsd or MacOS server. It apparently unpacks a zip file, deletes some
temp files that MacOS makes, and renames the files to make them URL
friendly. It then edits the Content.xml file with the filename changes.

First of all, is this actually a PHP script? I need it to run on a Windows
server running IIS. But someone that I gave it to look at has said that he
thinks that it does some strange functions, and he thinks it's actually a
BASH file, and I have no hope of getting it to run on Windows.

I need something that does the same thing for a Windows server running the
website linked earlier. I also do not want the unzip function, and it needs
to be taken out.

I would be grateful for any thoughts or opinion on this.

Cheers.

__________________________________________________ ___________________

function process_gpr($zip_file, $record_folder_location) #opens the zip,
makes it web safe
{
if(!ini_get('upload_tmp_dir')) #check php's upload_tmp_dir
{ #if it's not in the ini set it to this value
$upload_tmp_dir = '/var/tmp/';
}
else
{ #otherwise use the ini value
$upload_tmp_dir = ini_get('upload_tmp_dir');
}

$upload_tmp_dir = $upload_tmp_dir . "php/"; #make our own little folder for
unzipping
if(!file_exists($upload_tmp_dir)) { shell_exec("mkdir " .
$upload_tmp_dir); }
if(!shell_exec("rm -Rf " . $upload_tmp_dir . "*")) #clean it out; if that
went smoothly
{ #unzip the zip file
shell_exec("unzip -d " . $upload_tmp_dir . " " . $zip_file);

#zip's from osx's finder create this metadata folder
$macosx_only1 = $upload_tmp_dir . "__MACOSX"; #delete it if present
if(file_exists($macosx_only1)) { if(is_dir($macosx_only1)) {
shell_exec("rm -Rf " .
$macosx_only1); } }
$macosx_only2 = $upload_tmp_dir . ".DS_Store"; #and this file too
if(file_exists($macosx_only2)) { if(is_file($macosx_only2)) {
shell_exec("rm -Rf " .
$macosx_only2); } }

#find the Reviewer folder in the expanded tree
if(preg_match('/(\/.*\/)Reviewer/i', shell_exec("find " . $upload_tmp_dir .
" -type d -name
Reviewer"), $matches))
{ #find the enclosing folder
$gpr['path'] = $enclosing_folder = $matches[1];

if($dh = opendir($enclosing_folder)) #open the enclosing folder
{
while(($file = readdir($dh)) !== false) #read it out
{
if((filetype($enclosing_folder . $file) == "dir") && ($file !== "Reviewer")
&& ($file !==
".") && ($file !== ".."))
{ #find the data folder
$gprf = $file . "/";
}
if((filetype($enclosing_folder . $file) == "file") && (substr($file, -5) ==
".html") &&
($file !== ".") && ($file !== ".."))
{ #find the html file and rename it
preg_match("/(.+)\..*?$/i", $file, $name);
$gpr['title'] = $name[1]; #save that title for later
rename($enclosing_folder . $file, $enclosing_folder . 'gpr.html');
}
}
closedir($dh); #close the enclosing folder

#create the folder name
$gpr['file_name'] = $gpr['title'] . "-" . date("Y-m-d") . ".gpr";
#find the real filepath leading up to where we're placing it
preg_match("/(\/.*\/)rianachd\/.+\..+/i", $_SERVER['PATH_TRANSLATED'],
$project_folder_full_path);
$project_folder_full_path = $project_folder_full_path[1] .
substr($record_folder_location, 3)
.. "/" . $gpr['file_name'] . "/" . $gpr['title'] . "/";
#echo "<h6>project_folder_full_path: $project_folder_full_path</h6>";
$gprf = $enclosing_folder . $gprf; #set this to data folder
$catalog = $gprf . "Catalog.xml"; #path to catalog file
if($handle = fopen($catalog, "r"))
{ #read out contents of the catalog file
$contents = fread($handle, filesize($catalog));
#replace stupid characters in set, path, title and layout links & titles
#$contents = gpr_replacer($content, $regex, $character, $replacement);
$contents = gpr_replacer($contents, "/\<Set\>(.*?)\<\/Set\>/i", "", "_");
$contents = gpr_replacer($contents, "/\<Set\>(.*?)\<\/Set\>/i", "", "_");
$contents = preg_replace('/path="(.*?)"/i', 'path="' .
$project_folder_full_path . '"',
$contents);
# $contents = gpr_replacer($contents, "/title=\"(.*?)\"/i", "", "_");
$contents = gpr_replacer($contents, "/href=\"(.*?)\"/i", "", "_");
$contents = gpr_replacer($contents, "/\<Set\>(.*?)\<\/Set\>/i", "&amp;",
"AND");
# $contents = gpr_replacer($contents, "/title=\"(.*?)\"/i", "&amp;", "AND");
$contents = gpr_replacer($contents, "/href=\"(.*?)\"/i", "&amp;", "AND");

if($handle = fopen($catalog, "w+"))
{ #write out contents and close file
fwrite($handle, $contents);
fclose($handle);

if($handle = opendir($gprf))
{ #open the data folder
#shell_exec("mkdir " . $gprf . "/redline");
while (($file = readdir($handle)) !== false)
{
if (($file !== ".") && ($file !== "..") && (substr($file, 0, 1) !== '.') &&
(substr($file,
-4) == '.DWF'))
{ #change the characters of .DWF's here too
$newfile = gpr_replacer($file, "/(.*)/i", "", "_");
#newfile is necessary, because the name has been changed after the first
rename
rename($gprf . $file, $gprf . $newfile);
rename($gprf . $newfile, $gprf . gpr_replacer($newfile, "/(.*)/i", "&",
"AND"));
#once everything has been done, add a value to the success var
$success++;
}
} #close the data folder
closedir($handle);
}
}
}
}
}
}
#return array of file_name, title, and path
if($success) { return $gpr; } else { return false; }
}

function gpr_replacer($contents, $regex, $character, $replacement) #
{ #if no replacement string is passed, use these
if(!$character) { $character = array("'", '"', ",", "=", "/", " "); }
#match the regular expression
preg_match_all ($regex, $contents, $contents_matches, PREG_SET_ORDER);
$contents_matches_cnt = count($contents_matches);
if($contents_matches_cnt) #if matches 0
{
for($i=0; $i<$contents_matches_cnt; $i++) #do for each match
{ #replace the found string
$insert = str_replace($character, $replacement, $contents_matches[$i][1]);
$contents = str_replace($contents_matches[$i][1], $insert, $contents);
}
}
#return results
return $contents;
}

Oct 26 '06 #1
9 1951
"Synapse Syndrome" <sy*****@NOSPAMgomez404.elitemail.orgwrote in message
news:wL********************@bt.com...
Hi

I've been given what I am told is a PHP script to be used on my server. I
do not know any PHP.
Based on reading the script you provided, it appears to be PHP.

You can find more information about PHP, including function definitions,
language syntax, etc. at:

http://www.php.net

I've left many questions unanswered. I'll leave that for other posters.

Dave.

Oct 26 '06 #2
"Synapse Syndrome" <sy*****@NOSPAMgomez404.elitemail.orgwrote in message
news:wL********************@bt.com...
Hi

I've been given what I am told is a PHP script to be used on my server. I
do not know any PHP.
As I mentioned in my previous post, it appears to be PHP.
This is an example of the faulty output:
http://test404.damnserver.com

Following is what I have been told is a PHP script. It is meant for a
freebsd or MacOS server. It apparently unpacks a zip file, deletes some
temp files that MacOS makes, and renames the files to make them URL
friendly. It then edits the Content.xml file with the filename changes.

First of all, is this actually a PHP script?
Yes.
I need it to run on a Windows server running IIS.
You should be able to do this. The script isn't that complicated. You
should be able to reimplement it using a M$-friendly language, such as .ASP.

PHP does run under Windows, but it might be easier to go with the M$ tool
chain.
But someone that I gave it to look at has said that he thinks that it does
some strange functions.
At first glance, the script looks rather standard. I'm not seeing any
"strange functions".
and he thinks it's actually a BASH file.
It is not a BASH file. This is guaranteed PHP. I see many PHP functions in
the script ... it is PHP.
>and I have no hope of getting it to run on Windows.
The script is not that complicated. Just go through it line-by-line, look
up all the functions at http://www.php.net, and see what you can do on
Windows. You can either use PHP under Windows or reimplement some other
way, perhaps .ASP.
I need something that does the same thing for a Windows server running the
website linked earlier. I also do not want the unzip function, and it
needs to be taken out.

I would be grateful for any thoughts or opinion on this.
Reverse-engineer and reimplement.

Oct 26 '06 #3
Rik
David T. Ashley wrote:
"Synapse Syndrome" <sy*****@NOSPAMgomez404.elitemail.orgwrote in
message news:wL********************@bt.com...
>Hi

I've been given what I am told is a PHP script to be used on my
server. I do not know any PHP.

As I mentioned in my previous post, it appears to be PHP.
It is indeed.
>I need it to run on a Windows server running IIS.

You should be able to do this. The script isn't that complicated.
You should be able to reimplement it using a M$-friendly language,
such as .ASP.

PHP does run under Windows, but it might be easier to go with the M$
tool chain.
Well, in PHP it's just that easy.
The problem here is the script highly relies on shell_exec() for some
things (that needn't be shell functions, and mostly can be handled by
native PHP functions.
>But someone that I gave it to look at has said that he thinks that
it does some strange functions.

At first glance, the script looks rather standard. I'm not seeing any
"strange functions".
I think he's talking about the shell_exec()'s.
>and I have no hope of getting it to run on Windows.

The script is not that complicated. Just go through it line-by-line,
look up all the functions at http://www.php.net, and see what you can
do on Windows. You can either use PHP under Windows or reimplement
some other way, perhaps .ASP.
Yup, it's a fairly easy script. I wouldn't do it for free though :-).
--
Rik Wasmus
Oct 26 '06 #4
Hmmmm...well, as everyone has already pointed out, it is a PHP script.
But as written, it will NOT run under Windows, because the shell
commands are Linux/Unix commands. You will need to replace these
commands with their DOS equivalents. If, however, you have Cygwin or
something similar installed on your Windows machine, it may run just
fine as-is.

Given that someone else wrote this script and gave it to you under the
pretense of trustworthiness, my only advice would be to pay close
attention to the shell commands. Although they might turn out to be
totally innocuous, I'm suspicious of anything that performs "rm -rf"
and wouldn't be so quick to install it on my production systems without
knowing for sure what the consequences are.

Just my two cents. :)

Geoffrey

Oct 26 '06 #5

"David T. Ashley" <dt*@e3ft.comwrote in message
news:k2********************@fe38.usenetserver.com. ..
"Synapse Syndrome" <sy*****@NOSPAMgomez404.elitemail.orgwrote in message
news:wL********************@bt.com...
>Hi

I've been given what I am told is a PHP script to be used on my server.
I do not know any PHP.

As I mentioned in my previous post, it appears to be PHP.
>This is an example of the faulty output:
http://test404.damnserver.com

Following is what I have been told is a PHP script. It is meant for a
freebsd or MacOS server. It apparently unpacks a zip file, deletes some
temp files that MacOS makes, and renames the files to make them URL
friendly. It then edits the Content.xml file with the filename changes.

First of all, is this actually a PHP script?

Yes.
>I need it to run on a Windows server running IIS.

You should be able to do this. The script isn't that complicated. You
should be able to reimplement it using a M$-friendly language, such as
.ASP.

PHP does run under Windows, but it might be easier to go with the M$ tool
chain.
>But someone that I gave it to look at has said that he thinks that it
does some strange functions.

At first glance, the script looks rather standard. I'm not seeing any
"strange functions".
>and he thinks it's actually a BASH file.

It is not a BASH file. This is guaranteed PHP. I see many PHP functions
in the script ... it is PHP.
>>and I have no hope of getting it to run on Windows.

The script is not that complicated. Just go through it line-by-line, look
up all the functions at http://www.php.net, and see what you can do on
Windows. You can either use PHP under Windows or reimplement some other
way, perhaps .ASP.
>I need something that does the same thing for a Windows server running
the website linked earlier. I also do not want the unzip function, and
it needs to be taken out.

I would be grateful for any thoughts or opinion on this.

Reverse-engineer and reimplement.
Thanks for your comments. The only problem is that I have no real
programming skill. I just know some HTML/CSS coding, so adjusting this code
to run on Windows looks pretty difficult to me, let alone translating to
..ASP.

But, ideally, I wouild like it to run on .ASP, as my webserver is already
running that.

How long do you think it would take a beginner to go through this script and
get it running on Windows as PHP?

Cheers.

ss.
Oct 27 '06 #6

"Rik" <lu************@hotmail.comwrote in message
news:28**************************@news2.tudelft.nl ...
>
Yup, it's a fairly easy script. I wouldn't do it for free though :-).

Thanks for you comments. Do you think it it wouldn't take that long for a
beginner to get it running on Windows with PHP?

ss.
Oct 27 '06 #7

"Geoffrey" <go***********@yahoo.comwrote in message
news:11**********************@e3g2000cwe.googlegro ups.com...
Hmmmm...well, as everyone has already pointed out, it is a PHP script.
But as written, it will NOT run under Windows, because the shell
commands are Linux/Unix commands. You will need to replace these
commands with their DOS equivalents. If, however, you have Cygwin or
something similar installed on your Windows machine, it may run just
fine as-is.

Given that someone else wrote this script and gave it to you under the
pretense of trustworthiness, my only advice would be to pay close
attention to the shell commands. Although they might turn out to be
totally innocuous, I'm suspicious of anything that performs "rm -rf"
and wouldn't be so quick to install it on my production systems without
knowing for sure what the consequences are.

Thanks. Just as a quick pointer, what would be the command to replace teh
shell_exec() commands, so I can read about it? I know DOS pretty well.

ss.
Oct 27 '06 #8
As a person that was a beginner at this not that long ago, I think you
should expect it to take quite a bit of time, like days, for instance.
These are the difficulties I have found in starting out in php:

1. Getting a sense of the internal logic of php and the internal logic
of coding if you haven't done this before takes some time. For me, it
was not always instinctual or obvious how things worked. Things are
also not necessarily consistent and I find that there seem to be things
that experience programmers think are obvious that it is really hard
for me to get. There is a lot of stuff carried over from C or java
that people familiar with other languages understand that can seem
crazy to the unititiated.

2. Finding out what is possible and how to do it is often a challenge
and is related to the last comment. My experience is that php.net is
more useful once you understand php than when you are starting. It is
not always obvious to me how to even formulate the question I want
answered. And php seems to search and index around functions.
Operators and conventions are often hard to find.

3. Debugging, e.g. finding the missing period or quotation mark or
curly brace can take hours or even days. It is always startling to me
how the simplest synatactical error can completely break a script. I
would say the biggest leap forward for me in php programming was
learning how to troubleshoot a script in a finite amount of time. You
could be right on target with a minor syntactical error or you could
have missed the mark a mile with your script and in either case, it
won't work at all. In html it breaks or works wrong, giving you some
clues. In php, you just get a rejection.

4. Ask other people for help, but only after you have tried to come up
with a solution yourself. I have found people on this list and others
to be very supportive. It is important to formulate your questions
clearly and specifically and to have done some work yourself first to
solve your problem. It can be helpful as well, when you are starting
out on something to see if people can point you in the right direction.
Then try to implement it yourself and if it doesn't work, ask more
questions.

5. I think doing what you want to do would be a challenge for someone
with no experince with php. And this script also seems to require an
understanding of unix and DOS and the way they relate to each other and
to php. And anything that has to do with Windows or Microsoft seems to
me to amplify any kind of interface issue with other systems, as
Microsoft seems to have an anti-body against interfacing with anything
not Microsoft. I avoid Microsoft like the plague.

6. Get a MAC! They talk with everyone.

Good luck,

--Kenoli
Synapse Syndrome wrote:
>
How long do you think it would take a beginner to go through this script and
get it running on Windows as PHP?

Cheers.

ss.
Oct 27 '06 #9
Rik
Synapse Syndrome wrote:
"Rik" <lu************@hotmail.comwrote in message
news:28**************************@news2.tudelft.nl ...
>>
Yup, it's a fairly easy script. I wouldn't do it for free though :-).


Thanks for you comments. Do you think it it wouldn't take that long
for a beginner to get it running on Windows with PHP?
Well, this particular script? In my early starting days, it would have
taken me a couple of days perhaps. Certainly if you want the skip in
unzipping option, which is most of the work, it could even be done in a day
by a beginner. 'Beginner' in this is someone who is mildly familiar with
PHP, but hasn't really used it yet. If beginner ment 'never coded and never
looked at PHP code', it highly depends on who it is/how fast he/she picks
up things etc...
--
Rik Wasmus
Oct 28 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Bernhard Kuemel | last post by:
Hi! To relief the problems of accessing a unix machine from behind a restrictive firewall or from an internet cafe I started to make a PHP web interface to bash. I'd like to hear your opinions...
5
by: Phil Powell | last post by:
I'm sorry but I can't figure out how to explain this any better than this. In PHP we have a command "require()" that obtains a file and logically places it into another file. I cannot figure...
2
by: john | last post by:
Newbie about this stuff. I want to run some php scripts from a shell script(bash?) the php script i want to run is this: test.php and it's path is this:...
4
by: Tom Purl | last post by:
I just wrote a Python script that is going to be called from bash script. If the Python script fails, I want the bash script to also stop running. Unfortunately, I can't seem to get that to work. ...
11
by: Magnus Jonneryd | last post by:
Hi, I'm planning on writing a program that interactively is fed input via a shell (bash). I also want to be able to write a shell script that executes various commands related to my program. In...
6
by: Ishpeck | last post by:
I'm using Python to automate testing software for my company. I wanted the computers in my testing lab to automatically fetch the latest version of the python scripts from a CVS repository and...
4
by: melmack3 | last post by:
Hello My PHP script executes many bash/cmd commands. Functions like "exec()" or "system()" cause that new bash/cmd session is started, the command is executed and the session is closed....
1
by: Gros Bedo | last post by:
Yes I've seen that each python script calls its own instance of Python. Buthow to know which is the good one in bash ? Is there a command that gets the parameters of process, so I could use grep to...
0
by: norseman | last post by:
Gros Bedo wrote: ============================== Yes. man ps explains try ps -AFL | grep then kill -9 found (check it more than twice) 1) If your script is known to hang use what...
2
by: DJRhino | last post by:
Was curious if anyone else was having this same issue or not.... I was just Up/Down graded to windows 11 and now my access combo boxes are not acting right. With win 10 I could start typing...
2
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 4 Oct 2023 starting at 18:00 UK time (6PM UTC+1) and finishing at about 19:15 (7.15PM) The start time is equivalent to 19:00 (7PM) in Central...
0
tracyyun
by: tracyyun | last post by:
Hello everyone, I have a question and would like some advice on network connectivity. I have one computer connected to my router via WiFi, but I have two other computers that I want to be able to...
2
by: giovanniandrean | last post by:
The energy model is structured as follows and uses excel sheets to give input data: 1-Utility.py contains all the functions needed to calculate the variables and other minor things (mentions...
3
NeoPa
by: NeoPa | last post by:
Introduction For this article I'll be using a very simple database which has Form (clsForm) & Report (clsReport) classes that simply handle making the calling Form invisible until the Form, or all...
1
by: Teri B | last post by:
Hi, I have created a sub-form Roles. In my course form the user selects the roles assigned to the course. 0ne-to-many. One course many roles. Then I created a report based on the Course form and...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 1 Nov 2023 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM) Please note that the UK and Europe revert to winter time on...
3
by: nia12 | last post by:
Hi there, I am very new to Access so apologies if any of this is obvious/not clear. I am creating a data collection tool for health care employees to complete. It consists of a number of...
0
isladogs
by: isladogs | last post by:
The next online meeting of the Access Europe User Group will be on Wednesday 6 Dec 2023 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, Mike...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.