Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpnSense
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kulya
OpnSense
Commits
03434f0b
Commit
03434f0b
authored
Mar 02, 2015
by
Franco Fichtner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
src: remove the unused phpshellsessions developer tools
parent
10002c22
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
0 additions
and
1173 deletions
+0
-1173
changepassword
src/etc/phpshellsessions/changepassword
+0
-79
disablecarp
src/etc/phpshellsessions/disablecarp
+0
-17
disabledhcpd
src/etc/phpshellsessions/disabledhcpd
+0
-13
disablereferercheck
src/etc/phpshellsessions/disablereferercheck
+0
-11
enableallowallwan
src/etc/phpshellsessions/enableallowallwan
+0
-34
enablecarp
src/etc/phpshellsessions/enablecarp
+0
-18
enablesshd
src/etc/phpshellsessions/enablesshd
+0
-12
gitsync
src/etc/phpshellsessions/gitsync
+0
-423
installpkg
src/etc/phpshellsessions/installpkg
+0
-39
listpkg
src/etc/phpshellsessions/listpkg
+0
-15
removepkgconfig
src/etc/phpshellsessions/removepkgconfig
+0
-8
removeshaper
src/etc/phpshellsessions/removeshaper
+0
-24
restartdhcpd
src/etc/phpshellsessions/restartdhcpd
+0
-4
restartipsec
src/etc/phpshellsessions/restartipsec
+0
-5
svc
src/etc/phpshellsessions/svc
+0
-98
uninstallpkg
src/etc/phpshellsessions/uninstallpkg
+0
-35
pfSsh.php
src/sbin/pfSsh.php
+0
-338
No files found.
src/etc/phpshellsessions/changepassword
deleted
100644 → 0
View file @
10002c22
require_once("config.inc");
require("auth.inc");
require_once("functions.inc");
global $g, $config, $argv, $userindex;
$userindex = index_users();
$args = array_slice($argv, 3);
$password = "";
$confpassword = "";
$username = "";
$fp = fopen('php://stdin', 'r');
// If the first parameter is empty, ask for username
if (empty($args[0])) {
echo gettext("Enter username: ");
$username = fgets($fp);
} else {
$username = $args[0];
}
$username = trim($username);
// If the user does not exist, bail
$user =& getUserEntry($username);
if ($user == NULL) {
printf(gettext("User '%s' does not exist.\n"), $username);
exit(-1);
} else {
printf(gettext("Changing password for '%s'.\n"), $username);
}
// If the user does exist, prompt for password
while (empty($password)) {
echo gettext("New Password") . ": ";
exec('/bin/stty -echo');
$password = trim(fgets($fp));
exec('/bin/stty echo');
echo "\n";
}
// Confirm password
while (empty($confpassword)) {
echo gettext("Confirm New Password") . ": ";
exec('/bin/stty -echo');
$confpassword = trim(fgets($fp));
exec('/bin/stty echo');
echo "\n";
}
// Check if user is disabled
if (is_account_disabled($username)) {
echo gettext("Account is disabled, would you like to re-enable? [y|n]") . ": ";
if (strcasecmp(chop(fgets($fp)), "y") == 0) {
unset($user['disabled']);
}
}
// Check if user is expired
if (is_account_expired($username)) {
echo gettext("Account is expired, would you like to clear the expiration date? [y|n]") . ": ";
if (strcasecmp(chop(fgets($fp)), "y") == 0) {
unset($user['expires']);
}
}
fclose($fp);
// Compare password and confirm
if ($password == $confpassword) {
//Reset password
local_user_set_password($user, $password);
local_user_set($user);
write_config(sprintf(gettext("password changed for user '%s' from console."), $username));
exit(0);
} else {
echo gettext("New and Confirm passwords did not match.") . "\n";
exit(-1);
}
src/etc/phpshellsessions/disablecarp
deleted
100644 → 0
View file @
10002c22
! echo "Disabling CARP..."
require_once("config.inc");
require_once("interfaces.inc");
require_once("util.inc");
set_single_sysctl("net.inet.carp.allow", "0");
if(is_array($config['virtualip']['vip'])) {
$viparr = &$config['virtualip']['vip'];
foreach ($viparr as $vip) {
switch ($vip['mode']) {
case "carp":
interface_vip_bring_down($vip);
sleep(1);
break;
}
}
}
src/etc/phpshellsessions/disabledhcpd
deleted
100644 → 0
View file @
10002c22
global $config;
$config = parse_config(true);
unset($config['dhcpd']);
echo "Disabling DHCP Server on all interfaces...";
write_config("pfSsh.php disabled dhcp on all interfaces");
services_dhcpd_configure();
echo "done.\n";
src/etc/phpshellsessions/disablereferercheck
deleted
100644 → 0
View file @
10002c22
global $config;
$config = parse_config(true);
$config['system']['webgui']['nohttpreferercheck'] = true;
echo "Disabling HTTP referer check...";
write_config("PHP shell disabled HTTP referer check");
echo "done.\n";
src/etc/phpshellsessions/enableallowallwan
deleted
100644 → 0
View file @
10002c22
global $config;
require_once("filter.inc");
require("shaper.inc");
$config = parse_config(true);
echo "Adding allow all rule...\n";
$filterent = array();
$filterent["type"] = "pass";
$filterent["interface"] = "wan";
$filterent["source"]["any"] = "";
$filterent["destination"]["any"] = "";
$filterent["statetype"] = "keep state";
$filterent["os"] = "";
$filterent["descr"] = "Allow all ipv4 via pfSsh.php";
$config["filter"]["rule"][] = $filterent;
$filterent = array();
$filterent["type"] = "pass";
$filterent["ipprotocol"] = "inet6";
$filterent["interface"] = "wan";
$filterent["source"]["any"] = "";
$filterent["destination"]["any"] = "";
$filterent["statetype"] = "keep state";
$filterent["os"] = "";
$filterent["descr"] = "Allow all ipv6 via pfSsh.php";
$config["filter"]["rule"][] = $filterent;
echo "Turning off block private networks (if on)...\n";
unset($config["interfaces"]["wan"]["blockpriv"]);
unlink_if_exists("/tmp/config.cache");
write_config("pfSsh.php added allow all wan rule");
unlink_if_exists("/tmp/config.cache");
unset($config['interfaces']['wan']['blockbogons']);
$config = parse_config(true);
echo "Reloading the filter configuration...";
filter_configure_sync();
echo "\n\n";
src/etc/phpshellsessions/enablecarp
deleted
100644 → 0
View file @
10002c22
! echo "Enabling CARP..."
require_once("config.inc");
require_once("interfaces.inc");
require_once("util.inc");
if(is_array($config['virtualip']['vip'])) {
$viparr = &$config['virtualip']['vip'];
foreach ($viparr as $vip) {
switch ($vip['mode']) {
case "carp":
interface_carp_configure($vip);
sleep(1);
break;
}
}
}
interfaces_carp_setup();
set_single_sysctl("net.inet.carp.allow", "1");
src/etc/phpshellsessions/enablesshd
deleted
100644 → 0
View file @
10002c22
global $config;
echo "Starting enablesshd...";
require("config.inc");
echo ".";
$config = parse_config(true);
echo ".";
$config['system']['enablesshd'] = true;
echo ".";
write_config("pfSsh.php enabled sshd");
echo "\nEnabling SSHD, please wait...";
send_event("service reload sshd");
echo "\n\n";
src/etc/phpshellsessions/gitsync
deleted
100644 → 0
View file @
10002c22
This diff is collapsed.
Click to expand it.
src/etc/phpshellsessions/installpkg
deleted
100644 → 0
View file @
10002c22
require_once("config.inc");
require_once("util.inc");
require_once("pkg-utils.inc");
global $g, $config, $argv, $command_split;
if(is_array($command_split))
$args = array_slice($command_split, 2);
else
$args = array_slice($argv, 3);
$pkg_name = $args[0];
$install_type = empty($args[1]) ? "normal" : $args[1];
echo "Installing package \"{$pkg_name}\"...\n";
echo "Trying to fetch package info...";
$pkg_info = get_pkg_info();
if ($pkg_info) {
echo " Done.\n";
} else {
$xmlrpc_base_url = get_active_xml_rpc_base_url();
echo "\n" . sprintf(gettext(' >>> Unable to communicate with %1$s. Please verify DNS and interface configuration, and that %2$s has functional Internet connectivity.'), $xmlrpc_base_url, $g['product_name']) . "\n";
return;
}
$static_output = "";
$pkg_interface = "console";
if (empty($pkg_info[$pkg_name]))
echo "\nPackage not found.\n";
elseif ($install_type == "normal")
install_package($pkg_name, $pkg_info[$pkg_name], true);
elseif ($install_type == "xmlonly")
install_package_xml($pkg_name);
else
echo "Invalid install type. Valid values are: normal, xmlonly.\n";
echo "\nDone.\n";
src/etc/phpshellsessions/listpkg
deleted
100644 → 0
View file @
10002c22
require_once("config.inc");
require_once("util.inc");
global $g, $config;
echo "Installed packages:\n";
foreach($config['installedpackages']['package'] as $package) {
$name = str_pad("{$package['name']}-{$package['version']}", 30);
$descr = $package['descr'];
$line = "{$name} {$descr}";
if (strlen($line) > 80)
$line = substr($line, 0, 77) . "...";
echo "{$line}\n";
}
src/etc/phpshellsessions/removepkgconfig
deleted
100644 → 0
View file @
10002c22
global $config;
$config = parse_config(true);
unset($config['installedpackages']);
echo "Clearing package configuration information...\n";
write_config("pfSsh.php cleared package configuration data.");
$config = parse_config(true);
echo "Removing startup files from /usr/local/etc/rc.d/...\n";
exec("rm /usr/local/etc/rc.d/*");
src/etc/phpshellsessions/removeshaper
deleted
100644 → 0
View file @
10002c22
require("config.inc");
require_once("functions.inc");
require_once("filter.inc");
require_once("shaper.inc");
require_once("rrd.inc");
/* Much of this borrowed from firewall_shaper.php */
echo gettext("Removing shaper settings...\n");
unset($config['shaper']['queue']);
unset($queue);
unset($altq);
foreach ($config['filter']['rule'] as $key => $rule) {
if (isset($rule['wizard']) && $rule['wizard'] == "yes")
unset($config['filter']['rule'][$key]);
}
if (write_config()) {
echo gettext("Shaper Successfully Removed.\n");
} else {
echo gettext("Unable to write config.xml (Access Denied?)\n");
}
filter_configure();
src/etc/phpshellsessions/restartdhcpd
deleted
100644 → 0
View file @
10002c22
! echo "Killing dhcp server..."
! killall dhcpd
! echo "Restarting dhcp server..."
services_dhcpd_configure();
src/etc/phpshellsessions/restartipsec
deleted
100644 → 0
View file @
10002c22
! echo "Restarting ipsec..."
require_once("config.inc");
require_once("ipsec.inc");
require_once("vpn.inc");
vpn_ipsec_configure();
src/etc/phpshellsessions/svc
deleted
100644 → 0
View file @
10002c22
require_once("config.inc");
require_once("util.inc");
require_once("service-utils.inc");
function usage() {
echo "Usage: playback svc <action> <service name> [service-specific options]\n\n";
echo "Examples:\n";
echo "playback svc stop dhcpd\n";
echo "playback svc restart openvpn client 2\n";
echo "playback svc stop captiveportal zone1\n";
echo "\n";
}
global $g, $config, $argv, $command_split;
if(is_array($command_split))
$args = array_slice($command_split, 2);
else
$args = array_slice($argv, 3);
if (empty($args[0])) {
usage();
}
$extras = array();
// start, stop, restart
$action = $args[0];
// dhcpd, openvpn, etc.
$svc_name = $args[1];
// Handle servive-specific options.
switch ($svc_name) {
case "openvpn":
if (in_array($args[2], array("server", "client"))) {
$extras['vpnmode'] = $args[2];
} else {
echo "Invalid OpenVPN mode (server, client)\n";
return;
}
if (is_numeric($args[3])) {
$extras['id'] = $args[3];
} else {
echo "Invalid OpenVPN ID, must be numeric\n";
return;
}
$vpnsvc = find_service_by_openvpn_vpnid($extras['id']);
if (empty($vpnsvc)) {
echo "No OpenVPN client or server found with that ID.\n";
return;
}
break;
case "captiveportal":
if (is_validaliasname($args[2])) {
$extras['zone'] = $args[2];
} else {
echo "Invalid Captive Portal Zone.\n";
return;
}
$cpzone = find_service_by_cp_zone($extras['zone']);
if (empty($cpzone)) {
echo "No Captive Portal Zone found with that name.\n";
return;
}
break;
}
switch ($action) {
case "restart":
echo "Attempting to issue {$action} to {$svc_name} service...\n";
$savemsg = service_control_restart($svc_name, $extras);
break;
case "start":
echo "Attempting to issue {$action} to {$svc_name} service...\n";
$savemsg = service_control_start($svc_name, $extras);
break;
case "stop":
echo "Attempting to issue {$action} to {$svc_name} service...\n";
$savemsg = service_control_stop($svc_name, $extras);
break;
case "status":
switch ($svc_name) {
case "openvpn":
$service = $vpnsvc;
break;
case "captiveportal":
$service = $cpzone;
break;
default:
$service = find_service_by_name($svc_name);
break;
}
$savemsg = get_service_status($service) ? "Service {$svc_name} is running." : "Service {$svc_name} is stopped.";
break;
}
echo "\n{$savemsg}\n";
src/etc/phpshellsessions/uninstallpkg
deleted
100644 → 0
View file @
10002c22
require_once("config.inc");
require_once("util.inc");
require_once("pkg-utils.inc");
global $g, $config, $argv, $command_split;
if(is_array($command_split))
$args = array_slice($command_split, 2);
else
$args = array_slice($argv, 3);
$pkg_name = $args[0];
$remove_type = empty($args[1]) ? "normal" : $args[1];
$pkg_info = array();
echo "Removing package \"{$pkg_name}\"...\n";
foreach($config['installedpackages']['package'] as $package) {
if ($pkg_name == $package['name'])
$pkg_info = $package;
}
$static_output = "";
$pkg_interface = "console";
if (empty($pkg_info))
echo "\nPackage not installed.\n";
elseif ($remove_type == "normal")
uninstall_package($pkg_name);
elseif ($remove_type == "xmlonly")
delete_package_xml($pkg_name);
else
echo "Invalid removal type. Valid values are: normal, xmlonly.\n";
echo "\nDone.\n";
src/sbin/pfSsh.php
deleted
100755 → 0
View file @
10002c22
#!/usr/local/bin/php -f
<?php
require_once
(
"globals.inc"
);
echo
"Starting the
{
$g
[
'product_name'
]
}
shell system"
;
require_once
(
"functions.inc"
);
echo
"."
;
require_once
(
"config.inc"
);
echo
"."
;
require_once
(
"util.inc"
);
echo
"."
;
$shell_cmds
=
array
(
"alias"
,
"alloc"
,
"bg"
,
"bind"
,
"bindkey"
,
"break"
,
"breaksw"
,
"builtins"
,
"case"
,
"cd"
,
"chdir"
,
"command"
,
"complete"
,
"continue"
,
"default"
,
"dirs"
,
"do"
,
"done"
,
"echo"
,
"echotc"
,
"elif"
,
"else"
,
"end"
,
"endif"
,
"endsw"
,
"esac"
,
"eval"
,
"exec"
,
"exit"
,
"export"
,
"false"
,
"fc"
,
"fg"
,
"filetest"
,
"fi"
,
"for"
,
"foreach"
,
"getopts"
,
"glob"
,
"goto"
,
"hash"
,
"hashstat"
,
"history"
,
"hup"
,
"if"
,
"jobid"
,
"jobs"
,
"kill"
,
"limit"
,
"local"
,
"log"
,
"login"
,
"logout"
,
"ls-F"
,
"nice"
,
"nohup"
,
"notify"
,
"onintr"
,
"popd"
,
"printenv"
,
"pushd"
,
"pwd"
,
"read"
,
"readonly"
,
"rehash"
,
"repeat"
,
"return"
,
"sched"
,
"set"
,
"setenv"
,
"settc"
,
"setty"
,
"setvar"
,
"shift"
,
"source"
,
"stop"
,
"suspend"
,
"switch"
,
"telltc"
,
"test"
,
"then"
,
"time"
,
"trap"
,
"true"
,
"type"
,
"ulimit"
,
"umask"
,
"unalias"
,
"uncomplete"
,
"unhash"
,
"unlimit"
,
"unset"
,
"unsetenv"
,
"until"
,
"wait"
,
"where"
,
"which"
,
"while"
);
function
pipe_cmd
(
$command
,
$text_to_pipe
)
{
$descriptorspec
=
array
(
0
=>
array
(
"pipe"
,
"r"
),
// stdin
1
=>
array
(
"pipe"
,
"w"
),
// stdout
2
=>
array
(
"pipe"
,
"w"
));
// stderr ?? instead of a file
$fd
=
proc_open
(
"
$command
"
,
$descriptorspec
,
$pipes
);
if
(
is_resource
(
$fd
))
{
fwrite
(
$pipes
[
0
],
"
{
$text_to_pipe
}
"
);
fclose
(
$pipes
[
0
]);
while
(
$s
=
fgets
(
$pipes
[
1
],
1024
))
{
// read from the pipe
$buffer
.=
$s
;
}
fclose
(
$pipes
[
1
]);
fclose
(
$pipes
[
2
]);
}
return
$buffer
;
}
if
(
!
function_exists
(
"readline"
))
{
function
readline
()
{
$fp
=
fopen
(
'php://stdin'
,
'r'
);
$textinput
=
chop
(
fgets
(
$fp
));
fclose
(
$fp
);
}
return
$textinput
;
}
function
more
(
$text
,
$count
=
24
)
{
$counter
=
0
;
$lines
=
explode
(
"
\n
"
,
$text
);
foreach
(
$lines
as
$line
)
{
if
(
$counter
>
$count
)
{
echo
"Press RETURN to continue ..."
;
$fp
=
fopen
(
'php://stdin'
,
'r'
);
$pressreturn
=
chop
(
fgets
(
$fp
));
if
(
$pressreturn
==
"q"
||
$pressreturn
==
"quit"
)
return
;
fclose
(
$fp
);
$counter
=
0
;
}
echo
"
{
$line
}
\n
"
;
$counter
++
;
}
}
function
show_help
()
{
$show_help_text
=
<<<EOF
Enter a series of commands and then execute the set with "exec".
For example:
echo "foo"; // php command
echo "foo2"; // php command
! echo "heh" # shell command
exec
Example commands:
startrecording <recordingfilename>
stoprecording <recordingfilename>
showrecordings
parse_config(true); # reloads the \$config array
\$temp = print_r(\$config, true);
more(\$temp);
/* to output a configuration array */
print_r(\$config);
/* to output the interfaces configuration portion of config.xml */
print_r(\$config['interfaces']);
/* to output the dhcp server configuration */
print_r(\$config['dhcpd']);
/* to exit the php {$g['product_name']} shell */
exit
/* to output supported wireless modes for an interface */
print_r(get_wireless_modes(\"ath0\"));
/* to enable SSH */
\$config['system']['enablesshd'] = true;
/* change OPTX to the OPT interface name such as BACKHAUL */
\$config['interfaces']['optx']['wireless']['standard'] = "11a";
\$config['interfaces']['optx']['wireless']['mode'] = "hostap";
\$config['interfaces']['optx']['wireless']['channel'] = "6";
/* to enable dhcp server for an optx interface */
\$config['dhcpd']['optx']['enable'] = true;
\$config['dhcpd']['optx']['range']['from'] = "192.168.31.100";
\$config['dhcpd']['optx']['range']['to'] = "192.168.31.150";
/* to disable the firewall filter */
\$config['system']['disablefilter'] = true;
/* to enable an interface and set it for dhcp */
\$config['interfaces']['optx']['disabled'] = false;
\$config['interfaces']['optx']['ipaddr'] = "dhcp";
/* to enable an interface and set a static ip address */
\$config['interfaces']['wan']['disabled'] = false;
\$config['interfaces']['wan']['ipaddr'] = "192.168.100.1";
\$config['interfaces']['wan']['subnet'] = "24";
/* to save out the new configuration (config.xml) */
write_config();
/* to reboot the system after saving */
system_reboot_sync();
EOF;
more
(
$show_help_text
);
}
$fp
=
fopen
(
'php://stdin'
,
'r'
);
echo
".
\n\n
"
;
$pkg_interface
=
'console'
;
$shell_active
=
true
;
$tccommands
=
array
();
function
completion
(
$string
,
$index
)
{
global
$tccommands
;
return
$tccommands
;
}
readline_completion_function
(
"completion"
);
if
(
$argc
<
2
)
{
echo
"Welcome to the
{
$g
[
'product_name'
]
}
php shell system
\n
"
;
echo
"Written by Scott Ullrich (sullrich@gmail.com)
\n
"
;
echo
"
\n
Type
\"
help
\"
to show common usage scenarios.
\n
"
;
echo
"
\n
Available playback commands:
\n
"
;
$files
=
scandir
(
"/usr/local/etc/phpshellsessions/"
);
$tccommands
[]
=
"playback"
;
foreach
(
$files
as
$file
)
{
if
(
$file
<>
"."
and
$file
<>
".."
)
{
echo
$file
.
" "
;
if
(
function_exists
(
"readline_add_history"
))
{
readline_add_history
(
"playback
$file
"
);
$tccommands
[]
=
"
$file
"
;
}
}
}
echo
"
\n\n
"
;
}
$recording
=
false
;
$playback_file_split
=
array
();
$playbackbuffer
=
""
;
if
(
$argv
[
1
]
==
"playback"
or
$argv
[
1
]
==
"run"
)
{
if
(
!
file_exists
(
"/usr/local/etc/phpshellsessions/
{
$argv
[
2
]
}
"
))
{
echo
"Could not locate playback file."
;
exit
;
}
playback_file
(
$argv
[
2
]);
exit
;
}
// Define more commands
$tccommands
[]
=
"exit"
;
$tccommands
[]
=
"quit"
;
$tccommands
[]
=
"?"
;
$tccommands
[]
=
"exec"
;
$tccommands
[]
=
"startrecording"
;
$tccommands
[]
=
"stoprecording"
;
$tccommands
[]
=
"showrecordings"
;
$tccommands
[]
=
"record"
;
$tccommands
[]
=
"reset"
;
$tccommands
[]
=
"master"
;
$tccommands
[]
=
"RELENG_1_2"
;
while
(
$shell_active
==
true
)
{
$command
=
readline
(
"
{
$g
[
'product_name'
]
}
shell: "
);
readline_add_history
(
$command
);
$command_split
=
explode
(
" "
,
$command
);
$first_command
=
$command_split
[
0
];
if
(
$first_command
==
"playback"
||
$first_command
==
"run"
)
{
$playback_file
=
$command_split
[
1
];
if
(
!
$playback_file
||
!
file_exists
(
"/usr/local/etc/phpshellsessions/
{
$playback_file
}
"
))
{
$command
=
""
;
echo
"Could not locate playback file.
\n
"
;
}
else
{
$command
=
""
;
echo
"
\n
Playback of file
{
$command_split
[
1
]
}
started.
\n\n
"
;
playback_file
(
"
{
$playback_file
}
"
);
continue
;
}
}
if
(
$first_command
==
"exit"
or
$first_command
==
"quit"
)
die
;
if
(
$first_command
==
"help"
or
$first_command
==
"?"
)
{
show_help
();
$playbackbuffer
=
""
;
continue
;
}
if
(
$first_command
==
"exec"
or
$first_command
==
"exec;"
)
{
playback_text
(
$playbackbuffer
);
$playbackbuffer
=
""
;
continue
;
}
if
(
$first_command
==
"stoprecording"
||
$first_command
==
"stoprecord"
||
$first_command
==
"stop"
)
{
if
(
$recording
)
{
fwrite
(
$recording_fd
,
$playbackbuffer
);
fclose
(
$recording_fd
);
$command
=
""
;
conf_mount_ro
();
echo
"Recording stopped.
\n
"
;
$recording
=
false
;
}
else
{
echo
"No recording session in progress.
\n
"
;
$command
=
""
;
}
}
if
(
$first_command
==
"showrecordings"
)
{
show_recordings
();
$command
=
""
;
}
if
(
$first_command
==
"reset"
)
{
$playbackbuffer
=
""
;
echo
"
\n
Buffer reset.
\n\n
"
;
continue
;
}
if
(
$first_command
==
"record"
)
{
if
(
!
$command_split
[
1
])
{
echo
"usage: record playbackname
\n
"
;
$command
=
""
;
}
else
{
/* time to record */
conf_mount_rw
();
safe_mkdir
(
"/usr/local/etc/phpshellsessions"
);
$recording_fd
=
fopen
(
"/usr/local/etc/phpshellsessions/
{
$command_split
[
1
]
}
"
,
"w"
);
if
(
!
$recording_fd
)
{
echo
"Could not start recording session.
\n
"
;
$command
=
""
;
}
else
{
$recording
=
true
;
echo
"Recording of
{
$command_split
[
1
]
}
started.
\n
"
;
$command
=
""
;
}
}
}
$playbackbuffer
.=
$command
.
"
\n
"
;
}
function
show_recordings
()
{
conf_mount_rw
();
safe_mkdir
(
"/usr/local/etc/phpshellsessions"
);
if
(
$recording
)
conf_mount_ro
();
echo
"==> Sessions available for playback are:
\n
"
;
system
(
"cd /usr/local/etc/phpshellsessions && ls /usr/local/etc/phpshellsessions"
);
echo
"==> end of list.
\n
"
;
}
function
returnlastchar
(
$command
)
{
$commandlen
=
strlen
(
$command
);
$endofstring
=
substr
(
$command
,
(
$commandlen
-
1
));
return
$endofstring
;
}
function
returnfirstchar
(
$command
)
{
$commandlen
=
strlen
(
$command
);
$endofstring
=
substr
(
$command
,
0
,
1
);
return
$endofstring
;
}
function
str_replace_all
(
$search
,
$replace
,
$subject
)
{
while
(
strpos
(
$subject
,
$search
)
!==
false
)
$subject
=
str_replace
(
$search
,
$replace
,
$subject
);
return
$subject
;
}
function
playback_text
(
$playback_file_contents
)
{
$playback_file_split
=
explode
(
"
\n
"
,
$playback_file_contents
);
$playback_text
=
"require_once('functions.inc');
\n
"
;
$playback_text
.=
"require_once('globals.inc');
\n
"
;
$playback_text
.=
"require_once('config.inc');
\n
"
;
$toquote
=
'"'
;
$toquotereplace
=
'\\"'
;
foreach
(
$playback_file_split
as
$pfs
)
{
$firstchar
=
returnfirstchar
(
$pfs
);
$currentline
=
$pfs
;
if
(
$firstchar
==
"!"
)
{
/* XXX: encode " in $pfs */
$pfsa
=
str_replace
(
$toquote
,
$toquotereplace
,
$currentline
);
$playback_text
.=
str_replace
(
"!"
,
"system(
\"
"
,
$pfsa
)
.
"
\"
);
\n
"
;
}
else
if
(
$firstchar
==
"="
)
{
/* XXX: encode " in $pfs */
$pfsa
=
str_replace
(
$toquote
,
$toquotereplace
,
$currentline
);
$currentline
.=
str_replace
(
"!"
,
"system(
\"
"
,
$pfsa
)
.
"
\"
);
\n
"
;
}
else
{
$playback_text
.=
$pfs
.
"
\n
"
;
}
}
global
$config
;
eval
(
$playback_text
);
}
function
playback_file
(
$playback_file
)
{
$playback_file_contents
=
file_get_contents
(
"/usr/local/etc/phpshellsessions/
{
$playback_file
}
"
);
playback_text
(
$playback_file_contents
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment