Andrea Pollastri 5 rokov pred
rodič
commit
0051858739

+ 106 - 0
app/Http/Controllers/AliasesController.php

@@ -0,0 +1,106 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Support\Str;
+use Illuminate\Http\Request;
+use App\Application;
+use App\Server;
+use App\Alias;
+use phpseclib\Net\SSH2 as SSH;
+use PDF;
+
+class ApplicationsController extends Controller {
+
+    public function index() {
+        $aliases = Alias::with('server')->with('application')->get();
+        return view('aliases', compact('aliases'));
+    }
+
+    public function create(Request $request) {
+        $this->validate($request, [
+            'domain' => 'required',
+            'application_id' => 'required'
+        ]);
+        $application = Application::find($request->application_id);
+        if(!$application) {
+            abort(403);
+        }
+        if(Application::where('server_id', $request->server)->where('domain', $request->domain)->first()) {
+            $request->session()->flash('alert-error', 'This domain is already taken on this server');
+            return redirect('/aliases');
+        }
+        $checks = Alias::where('domain', $request->domain)->with('application')->get();
+        foreach($checks as $check) {
+            if($check->application->server_id = $application->server_id) {
+                $request->session()->flash('alert-error', 'This domain is already taken on this server');
+                return redirect('/aliases');
+            }
+        }
+        $application = Alias::create([
+            'domain'        => $request->domain,
+            'application_id'=> $request->server_id
+        ]);
+        $ssh = New SSH($application->server->ip, $application->server->port);
+        if(!$ssh->login($application->server->username, $application->server->password)) {
+            $request->session()->flash('alert-error', 'There was a problem with server connection.');
+            return redirect('/aliases');
+        }
+        $ssh->setTimeout(360);
+        $response = $ssh->exec('echo '.$application->password.' | sudo -S sudo sh /cipi/alias-add.sh -d '.$request->domain.' -a '.$application->appcode);
+        $response = explode('###CIPI###', $response);
+        if(strpos($response[1], 'Ok') === false) {
+            $request->session()->flash('alert-error', 'There was a problem with server scripts.');
+            return redirect('/applications');
+        }
+        $request->session()->flash('alert-success', 'Alias '.$request->domain.' has been added!');
+        return redirect('/aliases');
+    }
+
+    public function destroy(Request $request) {
+        $this->validate($request, [
+            'id' => 'required',
+        ]);
+        $alias = Alias::find($request->id);
+        if(!$alias) {
+            return abort(403);
+        }
+        $ssh = New SSH($alias->application->server->ip, $alias->application->server->port);
+        if(!$ssh->login($alias->application->server->username, $alias->application->server->password)) {
+            $request->session()->flash('alert-error', 'There was a problem with server connection.');
+            return redirect('/aliases');
+        }
+        $ssh->setTimeout(360);
+        $ssh->exec('echo '.$alias->application->server->password.' | sudo -S sudo sh /cipi/alias-del.sh -d '.$alias->domain);
+        $alias->delete();
+        $request->session()->flash('alert-success', 'Alias has been removed!');
+        return redirect('/aliases');
+    }
+
+    public static function sslcheck($domain) {
+        $ssl_check = @fsockopen('ssl://' . $domain, 443, $errno, $errstr, 30);
+        $res = !! $ssl_check;
+        if($ssl_check) { fclose($ssl_check); }
+        return $res;
+    }
+
+    public function ssl($id) {
+        $alias = Alias::find($id);
+        if(!$alias) {
+            return abort(403);
+        }
+        $ssh = New SSH($alias->application->server->ip, $alias->application->server->port);
+        if(!$ssh->login($alias->application->server->username, $alias->application->server->password)) {
+            return abort(403);
+        }
+        $ssh->setTimeout(360);
+        $response = $ssh->exec('echo '.$alias->application->server->password.' | sudo -S sudo sh /cipi/ssl.sh -d '.$alias->domain);
+        $response = explode('###CIPI###', $response);
+        if($response[1] == "Ok\n" && $this->sslcheck($alias->domain)) {
+            return 'OK';
+        } else {
+            return abort(500);
+        }
+    }
+
+}

+ 3 - 3
app/Http/Controllers/ApplicationsController.php

@@ -93,7 +93,7 @@ class ApplicationsController extends Controller {
         $this->validate($request, [
             'appcode' => 'required',
         ]);
-        $application = Application::where('appcode', $request->appcode)->get()->first();
+        $application = Application::where('appcode', $request->appcode)->first();
         if(!$application) {
             return abort(403);
         }
@@ -102,7 +102,7 @@ class ApplicationsController extends Controller {
             $request->session()->flash('alert-error', 'There was a problem with server connection.');
             return redirect('/applications');
         }
-        $ssh->setTimeout(60);
+        $ssh->setTimeout(360);
         foreach ($application->aliases as $alias) {
             $ssh->exec('echo '.$application->server->password.' | sudo -S unlink /etc/nginx/sites-enabled/'.$alias->domain.'.conf');
             $ssh->exec('echo '.$application->server->password.' | sudo -S unlink /etc/nginx/sites-available/'.$alias->domain.'.conf');
@@ -146,7 +146,7 @@ class ApplicationsController extends Controller {
             return abort(403);
         }
         $ssh->setTimeout(360);
-        $response = $ssh->exec('echo '.$application->server->password.' | sudo -S sudo sh /cipi/host-ssl.sh -d '.$application->domain);
+        $response = $ssh->exec('echo '.$application->server->password.' | sudo -S sudo sh /cipi/ssl.sh -d '.$application->domain);
         $response = explode('###CIPI###', $response);
         if($response[1] == "Ok\n" && $this->sslcheck($application->domain)) {
             return 'OK';

+ 2 - 2
storage/app/scripts/install.sh

@@ -80,7 +80,7 @@ wget $REMOTE/sh/ad/$SERVERCODE/ -O /cipi/alias-del.sh
 wget $REMOTE/sh/pw/$SERVERCODE/ -O /cipi/passwd.sh
 wget $REMOTE/sh/st/ -O /cipi/status.sh
 wget $REMOTE/sh/dy/ -O /cipi/deploy.sh
-wget $REMOTE/sh/sc/ -O /cipi/host-ssl.sh
+wget $REMOTE/sh/sc/ -O /cipi/ssl.sh
 sudo chmod o-r /cipi
 
 clear
@@ -134,7 +134,7 @@ sudo chmod o-r /cipi
 sudo dos2unix /cipi/deploy.sh
 sudo dos2unix /cipi/passwd.sh
 sudo dos2unix /cipi/status.sh
-sudo dos2unix /cipi/host-ssl.sh
+sudo dos2unix /cipi/ssl.sh
 sudo dos2unix /cipi/host-add.sh
 sudo dos2unix /cipi/host-del.sh
 sudo dos2unix /cipi/alias-add.sh