By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,882 Members | 2,465 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,882 IT Pros & Developers. It's quick & easy.

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

P: n/a
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
Share this Question
Share on Google+
9 Replies


P: n/a
"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

P: n/a
"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

P: n/a
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

P: n/a
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

P: n/a

"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

P: n/a

"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

P: n/a

"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

P: n/a
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

P: n/a
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 discussion thread is closed

Replies have been disabled for this discussion.