mirror of https://github.com/JustKato/FreePad.git
				
				
				
			Bunch more updates
This commit is contained in:
		
							parent
							
								
									1024c4abee
								
							
						
					
					
						commit
						e6cc8a4bce
					
				
							
								
								
									
										3
									
								
								build.sh
								
								
								
								
							
							
						
						
									
										3
									
								
								build.sh
								
								
								
								
							| 
						 | 
				
			
			@ -10,7 +10,6 @@ MYDIR=`pwd`;
 | 
			
		|||
cd src;
 | 
			
		||||
# Build
 | 
			
		||||
echo "Building..."
 | 
			
		||||
export RELEASE_MODE=1;
 | 
			
		||||
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o ../dist/freepad .
 | 
			
		||||
GIN_MODE=release CGO_ENABLED=0 GOOS=linux GIN_MODE=release go build -a -installsuffix cgo -o ../dist/freepad .
 | 
			
		||||
# Go back!
 | 
			
		||||
cd $MYDIR;
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -80,3 +80,27 @@ function goToPost() {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getQr(link = `https://justkato.me/`) {
 | 
			
		||||
    return new Promise((_r, _e) => {
 | 
			
		||||
        let formData = new FormData();
 | 
			
		||||
        formData.append('link', link);
 | 
			
		||||
        
 | 
			
		||||
        // Send out a fetch request
 | 
			
		||||
        fetch("/api/qr", {
 | 
			
		||||
            method: "post",
 | 
			
		||||
            body: formData,
 | 
			
		||||
        })
 | 
			
		||||
        .then( result => {
 | 
			
		||||
            result.json()
 | 
			
		||||
            .then( rez => {
 | 
			
		||||
                return _r(rez);
 | 
			
		||||
            })
 | 
			
		||||
        })
 | 
			
		||||
        .catch( error => {
 | 
			
		||||
            console.error(error);
 | 
			
		||||
            alert(error);
 | 
			
		||||
            return _e(error);
 | 
			
		||||
        })
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +1,16 @@
 | 
			
		|||
{{ template "inc/header.html" .}}
 | 
			
		||||
 | 
			
		||||
<style>
 | 
			
		||||
    .qrImage[src=""] {
 | 
			
		||||
        display: none;
 | 
			
		||||
    }
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
    <div class="container is-fullhd p-4 mb-6" style="min-height: 35rem; height: calc(100vh - 18rem)">
 | 
			
		||||
        <h1 class="title">FreePad</h1>
 | 
			
		||||
        <img class="qrImage" src="" alt="" style="position: fixed;top: 1rem;left: 1rem;max-width: 13vw;">
 | 
			
		||||
        <h2 class="subtitle">Reading from <code>{{.domain_base}}/{{.title}}</code></h2>
 | 
			
		||||
 | 
			
		||||
        <hr>
 | 
			
		||||
| 
						 | 
				
			
			@ -11,7 +18,8 @@
 | 
			
		|||
        <div class="content">
 | 
			
		||||
            <div class="block">
 | 
			
		||||
                <a href="/" class="button is-light">Back Home</a>
 | 
			
		||||
                <a href="javascript:updateSelf()" class="button is-primary">Save</a>
 | 
			
		||||
                <a href="javascript:fetchMyQr()" class="button is-primary">QR</a>
 | 
			
		||||
                <a href="javascript:updateSelf()" class="button is-success">Save</a>
 | 
			
		||||
                <p class="mt-3">Status: <code class="has-text-primary" id="status-indicator">Loaded</code></p>
 | 
			
		||||
            </div>
 | 
			
		||||
            <textarea class="input" name="post_content" id="post_content" onchange="updateSelf()">{{.post_content}}</textarea>
 | 
			
		||||
| 
						 | 
				
			
			@ -19,10 +27,29 @@
 | 
			
		|||
    </div>
 | 
			
		||||
 | 
			
		||||
    <script>
 | 
			
		||||
 | 
			
		||||
        async function fetchMyQr() {
 | 
			
		||||
            let qrCode = await getQr(window.location.href)
 | 
			
		||||
            .catch( err => {
 | 
			
		||||
                console.error(err);
 | 
			
		||||
            })
 | 
			
		||||
            console.log(qrCode);
 | 
			
		||||
            if ( !!qrCode.qr ) {
 | 
			
		||||
                document.querySelectorAll(`.qrImage`).forEach( img => {
 | 
			
		||||
                    console.log(img);
 | 
			
		||||
                    console.log(qrCode.qr);
 | 
			
		||||
                    img.src = qrCode.qr;
 | 
			
		||||
                })
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        function updateSelf() {
 | 
			
		||||
            updatePost({{.title}})
 | 
			
		||||
        }
 | 
			
		||||
    </script>
 | 
			
		||||
 | 
			
		||||
    {{ template "inc/footer.html" .}}
 | 
			
		||||
</body>
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
<script src="https://raw.githubusercontent.com/scotch-io/javascript-modal/master/Modal.js"></script>
 | 
			
		||||
							
								
								
									
										10
									
								
								rundev.sh
								
								
								
								
							
							
						
						
									
										10
									
								
								rundev.sh
								
								
								
								
							| 
						 | 
				
			
			@ -3,8 +3,9 @@
 | 
			
		|||
echo "Removing old";
 | 
			
		||||
rm dist/freepad;
 | 
			
		||||
 | 
			
		||||
source ../.env
 | 
			
		||||
# Yeah, this is my solution
 | 
			
		||||
export DOMAIN_BASE CACHE_MAP_LIMIT API_BAN_LIMIT DATABASE_DRIVER MYSQL_ROOT_PASSWORD MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD MYSQL_URL MYSQL_PORT
 | 
			
		||||
export DOMAIN_BASE CACHE_MAP_LIMIT API_BAN_LIMIT DATABASE_DRIVER MYSQL_ROOT_PASSWORD MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD MYSQL_URL MYSQL_PORT IS_DEV
 | 
			
		||||
 | 
			
		||||
# Remember current path
 | 
			
		||||
MYDIR=`pwd`;
 | 
			
		||||
| 
						 | 
				
			
			@ -12,14 +13,11 @@ MYDIR=`pwd`;
 | 
			
		|||
cd src;
 | 
			
		||||
# Build
 | 
			
		||||
echo "Building..."
 | 
			
		||||
unset RELEASE_MODE;
 | 
			
		||||
 | 
			
		||||
go build -o ../dist/freepad .
 | 
			
		||||
# Go back!
 | 
			
		||||
cd $MYDIR;
 | 
			
		||||
 | 
			
		||||
MYPATH=`pwd`;
 | 
			
		||||
 | 
			
		||||
cd dist
 | 
			
		||||
 | 
			
		||||
source ../.env
 | 
			
		||||
./freepad && cd $MYPATH;
 | 
			
		||||
./freepad && cd $MYDIR;
 | 
			
		||||
| 
						 | 
				
			
			@ -7,5 +7,6 @@ require (
 | 
			
		|||
	github.com/go-sql-driver/mysql v1.6.0
 | 
			
		||||
	github.com/golang-migrate/migrate/v4 v4.15.2
 | 
			
		||||
	github.com/mattn/go-sqlite3 v1.14.13
 | 
			
		||||
	github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect
 | 
			
		||||
	github.com/ulule/limiter/v3 v3.10.0
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1014,6 +1014,8 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf
 | 
			
		|||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
 | 
			
		||||
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
 | 
			
		||||
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
 | 
			
		||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
 | 
			
		||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
 | 
			
		||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 | 
			
		||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 | 
			
		||||
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,8 +10,8 @@ import (
 | 
			
		|||
 | 
			
		||||
func main() {
 | 
			
		||||
 | 
			
		||||
	_, isRelease := os.LookupEnv("RELEASE_MODE")
 | 
			
		||||
	if isRelease {
 | 
			
		||||
	_, isDevelopment := os.LookupEnv("IS_DEV")
 | 
			
		||||
	if isDevelopment {
 | 
			
		||||
		gin.SetMode(gin.ReleaseMode)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
package routes
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/base64"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/url"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -8,6 +9,7 @@ import (
 | 
			
		|||
	"github.com/JustKato/FreePad/helper"
 | 
			
		||||
	"github.com/JustKato/FreePad/types"
 | 
			
		||||
	"github.com/gin-gonic/gin"
 | 
			
		||||
	"github.com/skip2/go-qrcode"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func ApiRoutes(route *gin.RouterGroup) {
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +68,31 @@ func ApiRoutes(route *gin.RouterGroup) {
 | 
			
		|||
	// Add in health checks
 | 
			
		||||
	route.GET("/health", healthCheck)
 | 
			
		||||
 | 
			
		||||
	route.POST("/qr", func(ctx *gin.Context) {
 | 
			
		||||
 | 
			
		||||
		// Get the name of the post
 | 
			
		||||
		link := ctx.PostForm("link")
 | 
			
		||||
 | 
			
		||||
		// store the png somewhere
 | 
			
		||||
		var png []byte
 | 
			
		||||
 | 
			
		||||
		// Encode the link into a qr code
 | 
			
		||||
		png, err := qrcode.Encode(link, qrcode.High, 512)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			ctx.JSON(200, types.FreeError{
 | 
			
		||||
				Error:   fmt.Sprint(err),
 | 
			
		||||
				Message: "Failed to convert qr Code",
 | 
			
		||||
			})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Write the png to the response
 | 
			
		||||
		ctx.JSON(200, gin.H{
 | 
			
		||||
			"message": "Succesfully generated the QR",
 | 
			
		||||
			"qr":      "data:image/jpeg;base64," + base64.StdEncoding.EncodeToString(png),
 | 
			
		||||
		})
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func healthCheck(ctx *gin.Context) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue