blob: 57303e642475c51d93b02f0d1ab18bdaafb4cc2b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
/* cvs_sync
* Written by Scott Ullrich
* (C)2005-2007 Scott Ullrich
* Part of the pfSense project pfSsh.php subsystem
*/
function create_supfile($branch) {
if($branch == "HEAD")
$BRANCHTAG = ".";
else
$BRANCHTAG = $branch;
$supfile = "
*default host=cvs.pfsense.com
*default base=/home/pfsense/$branch
*default release=cvs tag=$BRANCHTAG
*default delete use-rel-suffix
pfSense
*default compress
";
file_put_contents("/var/etc/pfSense-supfile", $supfile);
}
unlink_if_exists("/tmp/config.cache");
if(!file_exists("/usr/local/bin/cvsup")) {
echo "Cannot find cvsup, pkg_add in progress...";
system("/usr/sbin/pkg_add -r cvsup-without-gui");
}
if(!file_exists("/usr/bin/cvs")) {
echo "Cannot find cvs, fetching static cvs...";
system("fetch -o /usr/bin/cvs http://files.pfsense.org/extras/7/cvs");
system("chmod a+rx /usr/bin/cvs");
}
if(!file_exists("/usr/bin/cvs") or !file_exists("/usr/local/bin/cvsup")) {
echo "Could not fetch cvs or cvsup. exiting.";
exit;
}
global $argv;
global $command_split;
/* NOTE: Set branches here */
$branches = array("HEAD" => "Main development branch",
"RELENG_1" => "1.3 development branch",
"RELENG_1_2" => "1.2 release branch");
if($command_split[2]) {
$branch = $command_split[2];
} else {
if(!$argv[3]) {
echo "\nPlease select which branch you would like:\n\n";
foreach($branches as $branchname => $branchdesc) {
echo "{$branchname} - {$branchdesc}\n";
}
$branch = readline("\n> ");
echo "\n";
} else {
$branch = $argv[3];
}
}
create_supfile($branch);
$CODIR = "/home/pfsense/$branch";
exec("mkdir -p /home/pfsense/$BRANCHTAG");
$found = false;
foreach($branches as $branchname => $branchdesc) {
if($branchname == $branch)
$found = true;
}
if(!$found) {
echo "\nInvalid branch.\n";
exit;
}
echo "===> Checking out $branch\n";
exec("mkdir -p /home/pfsense/$branch");
system("cvsup /var/etc/pfSense-supfile");
exec("rm -rf /usr/local/www/includes/*");
exec("rm -rf /usr/local/www/javascript/*");
exec("find /usr/local/www -name \"*.js\" -exec rm {} \;");
exec("mkdir -p /tmp/lighttpd/cache/compress/");
exec("cd ${CODIR}/ && find . -name CVS -exec rm -rf {} \; 2>/dev/null");
exec("cd ${CODIR}/ && find . -name pfSense.tgz -exec rm {} \; 2>/dev/null");
exec("rm -rf ${CODIR}/conf*");
exec("rm ${CODIR}/pfSense/usr/local/www/trigger_initial_wizard 2>/dev/null");
exec("rm ${CODIR}/pfSense/etc/crontab 2>/dev/null");
exec("rm ${CODIR}/pfSense/etc/master.passwd 2>/dev/null");
exec("rm ${CODIR}/pfSense/etc/passwd 2>/dev/null");
exec("rm ${CODIR}/pfSense/etc/fstab 2>/dev/null");
exec("rm ${CODIR}/pfSense/etc/ttys 2>/dev/null");
exec("rm ${CODIR}/pfSense/etc/group 2>/dev/null");
exec("rm ${CODIR}/pfSense/etc/fstab 2>/dev/null");
exec("rm ${CODIR}/pfSense/boot/device.hints 2>/dev/null");
exec("rm ${CODIR}/pfSense/boot/loader.conf 2>/dev/null");
exec("rm ${CODIR}/pfSense/boot/loader.rc 2>/dev/null");
exec("rm -rf ${CODIR}/pfSense/conf/ 2>/dev/null");
exec("rm -rf ${CODIR}/pfSense/cf/ 2>/dev/null");
exec("rm -rf ${CODIR}/pfSense/root/.shrc");
exec("rm -rf ${CODIR}/pfSense/root/.tcshrc");
exec("rm -f ${CODIR}/pfSense/etc/syslog.conf 2>/dev/null");
echo "Installing new files...\n";
exec("cd $CODIR/pfSense ; tar -cpf - . | (cd / ; tar -Uxpf -)");
echo "CVS Sync Complete\n";
echo "Removing FAST-CGI temporary files...\n";
exec("find /tmp -name \"*php*\" -exec rm -rf {} \;");
exec("rm -rf /tmp/xcache/* 2>/dev/null");
echo "Upgrading configuration...\n";
convert_config();
sync_webgui_passwords();
echo "Restarting check_reload_status...\n";
exec("killall check_reload_status");
mwexec_bg("nohup /usr/bin/nice -n20 /usr/local/sbin/check_reload_status");
echo "Configuring filter...";
exec("/etc/rc.filter_configure_sync");
exec("pfctl -f /tmp/rules.debug");
echo "\n";
echo "===> Checkout complete. Your system is now sync'd. Scripting terminating.\n";
touch("/tmp/restart_webgui");
exec("killall php");
|