Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 1180 | Revision 1182 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1117 lars 1
<?php
2
 
3
    namespace App\Http\Controllers;
4
 
1176 lars 5
    use Illuminate\Support\Facades\DB;
6
 
1117 lars 7
    class ToolboxController extends Controller
8
    {
9
        public function create()
10
        {
11
            return view( "admin/toolbox/index" );
12
        }
1122 lars 13
 
14
        public function changeShopVersion()
15
        {
1159 lars 16
            $site = env( 'shop' );
1158 lars 17
            $site_full = "";
18
            $webs = array();
19
            $servers = array();
20
            set_time_limit( 0 );
21
            require_once "Config.php";
22
            $versions["php7"] = $this->getVersions( "php7" );
23
            $versions["php5"] = $this->getVersions( "php" );
24
 
1164 lars 25
            \View::share( "versions", $versions );
1158 lars 26
            unset( $out );
27
 
1162 lars 28
            $xmlDir = "/tmp/" . $site . "/webanos/svn/";
1158 lars 29
            @mkdir( $xmlDir, 0755, true );
30
 
31
            $sshPorts = array();
32
            $dokDomains = array();
1165 lars 33
            $shops = array();
1175 lars 34
            if ( $_SERVER["HTTP_HOST"] == "faltradxxs.lars-tiefland.de" )
1158 lars 35
            {
36
                $sql = "SELECT
37
                        domain,
38
                        dok_domain,
39
                        ssh_port
40
                    FROM
41
                        webs w
42
                    JOIN
1174 lars 43
                        web_properties wp
1158 lars 44
                    ON
1173 lars 45
                        wp.web_id=w.id
1158 lars 46
                    WHERE
1173 lars 47
                        wp.property_id=804
1158 lars 48
                    AND
49
                        domain!='weban.de'
50
                    ORDER BY
51
                        domain
52
                ";
1159 lars 53
                $rows = DB::connection( 'cms' )->select( $sql );
54
                foreach ( $rows as $row )
1158 lars 55
                {
1177 lars 56
                    $dokDomains[] = $row->dok_domain;
1178 lars 57
                    $servers[] = $row->domain;
1177 lars 58
                    $sshPorts[ $row->domain ] = $row->ssh_port;
1158 lars 59
                }
60
                foreach ( $servers as $i => $server )
61
                {
62
                    //trigger_error( $server );
63
 
64
                    unset( $out );
65
                    $port = $sshPorts[ $server ];
66
                    $dom = "webanos." . $server;
67
                    if ( $dokDomains[ $i ] )
68
                    {
69
                        $dom = $dokDomains[ $i ];
70
                    }
1169 lars 71
                    if ( $port > 22 )
1158 lars 72
                    {
73
                        $dom .= " -p" . $port;
74
                    }
75
                    $cmd = "ssh www-data@" . $dom . " sudo find -L /var/www/vhosts/" . $server . " -maxdepth 3 -name source";
1170 lars 76
                    /*if ( $site_full != $site )
1158 lars 77
                    {
78
                        $cmd = "find -L /var/www/vhosts/" . $server . " -maxdepth 3 -name source";
1170 lars 79
                    }*/
1158 lars 80
                    exec( $cmd, $out, $ret );
81
                    if ( $ret )
82
                    {
1179 lars 83
                        continue;
84
                        //trigger_error( $dom );
1158 lars 85
                    }
86
                    sort( $out );
87
                    //trigger_error( var_export( $ret, true ) );
88
                    foreach ( $out as $id => $line )
89
                    {
90
                        $ex = explode( "/", $line );
91
                        $ex2 = $ex;
92
                        unset( $ex2[ count( $ex ) - 1 ] );
93
                        $sLine = implode( "/", $ex2 );
94
                        $cmd = "ssh www-data@webanos." . $server . " file --mime-type " . $sLine . "|grep symlink -v";
95
                        if ( $site != $site_full )
96
                        {
1180 lars 97
                            //$cmd = "file --mime-type " . $sLine . "|grep symlink -v";
1158 lars 98
                        }
99
                        exec( $cmd, $out2, $ret2 );
100
                        unset( $out2 );
101
                        if ( $ret2 == 1 )
102
                        {
103
                            continue;
104
                        }
105
                        $name = $ex[4];
106
                        $dir = $ex[5];
107
                        $cmd2 = "ssh www-data@webanos." . $server . " readlink -n " . $line;
108
                        if ( $site_full != $site )
109
                        {
110
                            $cmd2 = "readlink -n " . $line;
111
                        }
112
                        exec( $cmd2, $out2, $ret2 );
113
                        $link = $out2[0];
114
                        $version = trim( $link, "/" );
115
                        $ex = explode( "/", $version );
116
                        trigger_error( count( $ex ) );
117
                        trigger_error( $link );
118
                        $shops[ $name ][ $dir ] = $this->getShopVer( $link, $ex, $server );
119
                        unset( $out2 );
120
                    }
121
                }
122
            }
123
            else
124
            {
125
                $cmd = "sudo find -L /var/www/vhosts/" . $site . " -maxdepth 3 -name source";
126
                exec( $cmd, $out, $ret );
127
                sort( $out );
128
                foreach ( $out as $id => $line )
129
                {
130
                    $ex = explode( "/", $line );
131
                    $ex2 = $ex;
132
                    unset( $ex2[ count( $ex ) - 1 ] );
133
                    $sLine = implode( "/", $ex2 );
134
                    if ( @is_link( $sLine ) && $site == $site_full )
135
                    {
136
                        continue;
137
                    }
138
                    $name = $ex[4];
139
                    $dir = $ex[5];
140
                    exec( "readlink " . $line, $ret );
141
                    $link = $ret[0];
142
                    unset( $ret );
143
                    $version = trim( $link, "/" );
144
                    $ex = explode( "/", $version );
145
                    $shops[ $name ][ $dir ] = $this->getShopVer( $link, $ex );
146
                }
147
            }
148
            ksort( $shops );
1159 lars 149
            \View::share( "shops", $shops );
150
            \View::share( "versions", $versions );
151
            \View::share( "file", "common/changeShopVersion.tpl" );
1158 lars 152
 
1161 lars 153
            return view( "admin/toolbox/changeShopVersion" );
1122 lars 154
        }
1158 lars 155
 
156
        private function getVersions( $phpVer ): array
157
        {
1163 lars 158
            global $site, $site_full;
1158 lars 159
            $versions = array();
160
            $path = "/usr/share/php/webanOS/";
161
            if ( $phpVer == "php7" )
162
            {
163
                $path = "/usr/share/php7/webanOS/";
164
                if ( $site != $site_full )
165
                {
166
                    $path = "/usr/share/php/php7/webanOS/";
167
                }
168
            }
169
            $cmd = "ls " . $path . "tags/";
170
            exec( $cmd, $out, $ret );
1163 lars 171
            $xmlDir = "/tmp/" . $site . "/webanos/svn/";
1158 lars 172
            @mkdir( $xmlDir, 0755, true );
173
            foreach ( $out as $version )
174
            {
175
                list( $datum, $zeit ) = explode( "_", $version );
176
                if ( strlen( $zeit ) == 2 )
177
                {
178
                    list( $datum, $zeit ) = explode( "-", $version );
179
                    $datum = str_replace( "_", "-", $datum );
180
                    $zeit = str_replace( "_", ":", $zeit );
181
                }
182
                else
183
                {
184
                    $zeit = str_replace( "-", ":", $zeit );
185
                }
186
                $datStr = $datum . " " . $zeit;
187
                $name = strftime( "%x %H:%M", strtotime( $datStr ) );
188
                $versions[ "tags/" . $phpVer . "_" . $version ] = $name;
189
                $xmlFile = $xmlDir . $phpVer . "_" . $version . ".xml";
190
                if ( !file_exists( $xmlFile ) )
191
                {
192
                    $cmd = "svn log --xml --stop-on-copy " . $path . "tags/" . $version . " > " . $xmlFile;
193
                    exec( $cmd, $svnOut, $ret );
194
                    unset( $svnOut );
195
                }
196
            }
197
            $versions[ $phpVer . "_trunk" ] = "trunk";
198
            $xmlFile = $xmlDir . $phpVer . "_trunk.xml";
199
            $cmd = "svn log --xml " . $path . "/trunk/ -rCOMMITTED > " . $xmlFile;
200
            exec( $cmd, $svnOut, $ret );
201
            unset( $svnOut );
202
            return $versions;
203
        }
204
 
205
        private function getShopVer( $link, $ex, $server = "localhost" ): array
206
        {
207
            global $xmlDir;
208
            $phpVer = "php";
209
            if ( stristr( $link, "php7" ) )
210
            {
211
                $phpVer = "php7";
212
            }
213
            if ( $ex[ count( $ex ) - 1 ] == "trunk" )
214
            {
215
                $version = $phpVer . "_trunk";
216
                $xmlFile = $xmlDir . $phpVer . "_trunk.xml";
217
            }
218
            else
219
            {
220
                $version = $ex[4] . "/" . $phpVer . "_" . $ex[5];
221
                $xmlFile = $xmlDir . $phpVer . "_" . $ex[5] . ".xml";
222
            }
223
            $logMessage = readSvnXmlFile( $xmlFile );
224
            return array(
225
                "version"    => $version,
226
                "server"     => $server,
227
                "logmessage" => $logMessage,
228
            );
229
        }
230
 
1117 lars 231
    }