Subversion-Projekte lars-tiefland.laravel_shop

Revision

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