Rev 76 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 76 | Rev 77 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | <?php /* <ViaThinkSoftSignature> |
1 | <?php /* <ViaThinkSoftSignature> |
2 | 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 |
23 | Q== |
23 | A== |
24 | </ViaThinkSoftSignature> */ ?> |
24 | </ViaThinkSoftSignature> */ ?> |
25 | <?php |
25 | <?php |
26 | 26 | ||
27 | /* |
27 | /* |
28 | * VNag - Nagios Framework for PHP |
28 | * VNag - Nagios Framework for PHP |
Line 55... | Line 55... | ||
55 | 55 | ||
56 | protected function get_versions($local_path) { |
56 | protected function get_versions($local_path) { |
57 | $local_path = realpath($local_path) === false ? $local_path : realpath($local_path); |
57 | $local_path = realpath($local_path) === false ? $local_path : realpath($local_path); |
58 | 58 | ||
59 | if (!file_exists($local_path . '/version.php')) { |
59 | if (!file_exists($local_path . '/version.php')) { |
60 | throw new Exception('This is not a valid ownCloud installation in "'.$local_path.'".'); |
60 | throw new VNagException('This is not a valid ownCloud installation in "'.$local_path.'".'); |
61 | } |
61 | } |
62 | 62 | ||
63 | // We don't include version.php because it would be a security vulnerability |
63 | // We don't include version.php because it would be a security vulnerability |
64 | // code injection if somebody controls version.php |
64 | // code injection if somebody controls version.php |
65 | $cont = file_get_contents($local_path . '/version.php'); |
65 | $cont = @file_get_contents($local_path . '/version.php'); |
- | 66 | if ($cont === false) { |
|
- | 67 | throw new VNagException('This is not a valid ownCloud installation in "'.$local_path.'". Missing version.php file.'); |
|
- | 68 | } |
|
66 | if (preg_match('@\\$(OC_Version)\\s*=\\s*array\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)\\s*;@ismU', $cont, $m)) { |
69 | if (preg_match('@\\$(OC_Version)\\s*=\\s*array\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)\\s*;@ismU', $cont, $m)) { |
67 | $OC_Version = array($m[2],$m[3],$m[4],$m[5]); |
70 | $OC_Version = array($m[2],$m[3],$m[4],$m[5]); |
68 | } else { |
71 | } else { |
69 | throw new Exception('This is not a valid ownCloud installation in "'.$local_path.'". Missing "OC_Version".'); |
72 | throw new VNagException('This is not a valid ownCloud installation in "'.$local_path.'". Missing "OC_Version".'); |
70 | } |
73 | } |
71 | if (preg_match('@\\$(OC_VersionString)\\s*=\\s*([\'"])(.*)\\2\\s*;@ismU', $cont, $m)) { |
74 | if (preg_match('@\\$(OC_VersionString)\\s*=\\s*([\'"])(.*)\\2\\s*;@ismU', $cont, $m)) { |
72 | $OC_VersionString = $m[3]; |
75 | $OC_VersionString = $m[3]; |
73 | } else { |
76 | } else { |
74 | throw new Exception('This is not a valid ownCloud installation in "'.$local_path.'". Missing "OC_VersionString".'); |
77 | throw new VNagException('This is not a valid ownCloud installation in "'.$local_path.'". Missing "OC_VersionString".'); |
75 | } |
78 | } |
76 | if (preg_match('@\\$(OC_Edition)\\s*=\\s*([\'"])(.*)\\2\\s*;@ismU', $cont, $m)) { |
79 | if (preg_match('@\\$(OC_Edition)\\s*=\\s*([\'"])(.*)\\2\\s*;@ismU', $cont, $m)) { |
77 | $OC_Edition = $m[3]; |
80 | $OC_Edition = $m[3]; |
78 | } else { |
81 | } else { |
79 | throw new Exception('This is not a valid ownCloud installation in "'.$local_path.'". Missing "OC_Edition".'); |
82 | throw new VNagException('This is not a valid ownCloud installation in "'.$local_path.'". Missing "OC_Edition".'); |
80 | } |
83 | } |
81 | if (preg_match('@\\$(OC_Channel)\\s*=\\s*([\'"])(.*)\\2\\s*;@ismU', $cont, $m)) { |
84 | if (preg_match('@\\$(OC_Channel)\\s*=\\s*([\'"])(.*)\\2\\s*;@ismU', $cont, $m)) { |
82 | $OC_Channel = $m[3]; |
85 | $OC_Channel = $m[3]; |
83 | } else { |
86 | } else { |
84 | throw new Exception('This is not a valid ownCloud installation in "'.$local_path.'". Missing "OC_Channel".'); |
87 | throw new VNagException('This is not a valid ownCloud installation in "'.$local_path.'". Missing "OC_Channel".'); |
85 | } |
88 | } |
86 | if (preg_match('@\\$(OC_Build)\\s*=\\s*([\'"])(.*)\\2\\s*;@ismU', $cont, $m)) { |
89 | if (preg_match('@\\$(OC_Build)\\s*=\\s*([\'"])(.*)\\2\\s*;@ismU', $cont, $m)) { |
87 | $OC_Build = $m[3]; |
90 | $OC_Build = $m[3]; |
88 | } else { |
91 | } else { |
89 | throw new Exception('This is not a valid ownCloud installation in "'.$local_path.'". Missing "OC_Build".'); |
92 | throw new VNagException('This is not a valid ownCloud installation in "'.$local_path.'". Missing "OC_Build".'); |
90 | } |
93 | } |
91 | if (preg_match('@\\$(vendor)\\s*=\\s*([\'"])(.*)\\2\\s*;@ismU', $cont, $m)) { |
94 | if (preg_match('@\\$(vendor)\\s*=\\s*([\'"])(.*)\\2\\s*;@ismU', $cont, $m)) { |
92 | $vendor = $m[3]; |
95 | $vendor = $m[3]; |
93 | if ($vendor != 'owncloud') { |
96 | if ($vendor != 'owncloud') { |
94 | throw new Exception('This is not a valid ownCloud installation in "'.$local_path.'". It is "'.$vendor.'".'); |
97 | throw new VNagException('This is not a valid ownCloud installation in "'.$local_path.'". It is "'.$vendor.'".'); |
95 | } |
98 | } |
96 | } else { |
99 | } else { |
97 | throw new Exception('This is not a valid ownCloud installation in "'.$local_path.'". Missing "vendor".'); |
100 | throw new VNagException('This is not a valid ownCloud installation in "'.$local_path.'". Missing "vendor".'); |
98 | } |
101 | } |
99 | 102 | ||
100 | // Owncloud\Updater\Utils\Fetcher::DEFAULT_BASE_URL |
103 | // Owncloud\Updater\Utils\Fetcher::DEFAULT_BASE_URL |
101 | $baseUrl = 'https://updates.owncloud.com/server/'; |
104 | $baseUrl = 'https://updates.owncloud.com/server/'; |
102 | 105 | ||
Line 108... | Line 111... | ||
108 | $OC_Edition.'x'. |
111 | $OC_Edition.'x'. |
109 | urlencode($OC_Build); |
112 | urlencode($OC_Build); |
110 | 113 | ||
111 | $cont = $this->url_get_contents($update_url); |
114 | $cont = $this->url_get_contents($update_url); |
112 | if ($cont === false) { |
115 | if ($cont === false) { |
113 | throw new Exception('Could not determinate current ownCloud version in "'.$local_path.'". A'); |
116 | throw new VNagException('Could not determinate current ownCloud version in "'.$local_path.'". (Cannot access '.$update_url.')'); |
114 | } |
117 | } |
115 | 118 | ||
116 | if ($cont === '') { |
119 | if ($cont === '') { |
117 | return array($OC_VersionString, $OC_VersionString, $OC_Channel); |
120 | return array($OC_VersionString, $OC_VersionString, $OC_Channel); |
118 | } else { |
121 | } else { |
119 | $xml = simplexml_load_string($cont); |
122 | $xml = simplexml_load_string($cont); |
120 | if ($xml === false) { |
123 | if ($xml === false) { |
121 | throw new Exception('Could not determinate current ownCloud version in "'.$local_path.'". B'); |
124 | throw new VNagException('Could not determinate current ownCloud version in "'.$local_path.'". (Invalid XML downloaded from update-server)'); |
122 | } |
125 | } |
123 | $new_ver = (string)$xml->version; |
126 | $new_ver = (string)$xml->version; |
124 | return array($OC_VersionString, $new_ver, $OC_Channel); |
127 | return array($OC_VersionString, $new_ver, $OC_Channel); |
125 | } |
128 | } |
126 | } |
129 | } |
127 | 130 | ||
128 | protected function cbRun($optional_args=array()) { |
131 | protected function cbRun($optional_args=array()) { |
129 | $system_dir = $this->argSystemDir->getValue(); |
132 | $system_dir = $this->argSystemDir->getValue(); |
130 | if (empty($system_dir)) { |
133 | if (empty($system_dir)) { |
131 | throw new Exception("Please specify the directory of the ownCloud installation."); |
134 | throw new VNagException("Please specify the directory of the ownCloud installation."); |
132 | } |
135 | } |
133 | $system_dir = realpath($system_dir) === false ? $system_dir : realpath($system_dir); |
136 | $system_dir = realpath($system_dir) === false ? $system_dir : realpath($system_dir); |
134 | 137 | ||
135 | if (!is_dir($system_dir)) { |
138 | if (!is_dir($system_dir)) { |
136 | throw new Exception('Directory "'.$system_dir.'" not found.'); |
139 | throw new VNagException('Directory "'.$system_dir.'" not found.'); |
137 | } |
140 | } |
138 | 141 | ||
139 | list($cur_ver, $new_ver, $channel) = $this->get_versions($system_dir); |
142 | list($cur_ver, $new_ver, $channel) = $this->get_versions($system_dir); |
140 | 143 | ||
141 | if (version_compare($cur_ver,$new_ver) >= 0) { |
144 | if (version_compare($cur_ver,$new_ver) >= 0) { |