Calibre OPDS (and HTML) PHP Server : web-based light alternative to Calibre content server / Calibre2OPDS to serve ebooks (epub, mobi, pdf, ...)

Overview

COPS

COPS stands for Calibre OPDS (and HTML) Php Server.

See : COPS's home for more details.

Don't forget to check the Wiki.

Scrutinizer Code Quality

Code Coverage

Build Status / Scrutinizer

Build Status

Selenium Test Status

Why ?

In my opinion Calibre is a marvelous tool but is too big and has too much dependencies to be used for its content server.

That's the main reason why I coded this OPDS server. I needed a simple tool to be installed on a small server (Seagate Dockstar in my case).

I initially thought of Calibre2OPDS but as it generate static file no search was possible.

Later I added an simple HTML catalog that should be usable on my Kobo.

So COPS's main advantages are :

  • No need for many dependencies.
  • No need for a lot of CPU or RAM.
  • Not much code.
  • Search is available.
  • It was fun to code.

If you want to use the OPDS feed don't forget to specify feed.php at the end of your URL.

You just have to sync your Calibre directory to your COPS server the way you prefer (Dropbox, Bt Sync, Syncthing, use a directory shared with Nextcloud, ...).

Prerequisites

  1. PHP 5.3, 5.4, 5.5, 5.6, 7.X or hhvm with GD image processing, Libxml, Intl, Json & SQLite3 support (PHP 5.6 or later recommended).
  2. A web server with PHP support. I tested with various version of Nginx and Apache. Other people reported it working with Apache and Cherokee. You can also use PHP embedded server (https://github.com/seblucas/cops/wiki/Howto---PhpEmbeddedServer)
  3. The path to a calibre library (metadata.db, format, & cover files).

On any Debian based Linux you can use : apt-get install php5-gd php5-sqlite php5-json php5-intl

If you use Debian Stretch : apt-get install php7.0-gd php7.0-sqlite3 php7.0-json php7.0-intl php7.0-xml php7.0-mbstring php7.0-zip

On Centos you may have to add : yum install php-xml

Install a release (Easiest way)

  1. Extract the zip file you got from the release page to a folder in web space (visible to the web server).
  2. If you're doing a first-time install, copy config_local.php.example to config_local.php
  3. Edit config_local.php to match your config.
  4. If needed add other configuration item from config_default.php

If you like Docker, you can also try this multiarch docker container from linuxserver.io It has builds for x64, armhf and arm64.

Install from sources

git clone https://github.com/seblucas/cops.git # or download lastest zip see below
cd cops
wget https://getcomposer.org/composer.phar
php composer.phar global require "fxp/composer-asset-plugin:~1.1"
php composer.phar install --no-dev --optimize-autoloader

After that you can use the previous how-to starting at the second step.

Note that instead of cloning you can also get latest master as zip

Note that if your PHP version is lower that 5.6, then you may have to remove composer.lock before starting the last line.

Where to put my Calibre directory ?

Long story short : ALWAYS outside of COPS's directory especially if COPS is installed on a VPS / Server. If you follow my advice then your data will be safe.

If you choose to put your Calibre directory inside your web directory and use Nginx then you will have to edit /etc/nginx/mime.types to add these lines :

application/epub+zip epub;
application/x-mobipocket-ebook mobi prc azw;

Known problems

Not a lot, except for the bad quality of the code (first PHP project ever) ;)

Please see https://github.com/seblucas/cops/issues for open issues

Need help

Please read https://github.com/seblucas/cops/wiki and check the FAQ.

Contributing

As you could see here, I appreciate every contributions and there were a lot over time. So don't be shy and submit your Pull Requests.

Note to translators : please prefer using Transifex instead of doing a PR.

I only have one limit (I may have more but that one is the worse) : COPS' goal is to provide an alternative to Calibre's content server and not to replace Calibre entirely. So I will refuse any PR making changes to the database content.

Credits

External libraries used :

Copyright & License

COPS - 2012-2019 (c) Sébastien Lucas

See COPYING and file headers for license info

Comments
  • Support for virtual libraries

    Support for virtual libraries

    This is not a finished solution, but just a first step! Calibre supports to create virtual libraries that contain only a subset of all books. I am interested and willing to add this feature to cops (see feature request #204). Since I am new to this project, I would like to get some feedback and see if someone else is already working on it. With this pull request, I want to start a dialog about how to add this feature.

    My current thoughts that I put here for discussion:

    • For the user, virtual libraries look like databases
    • Internally, the $database parameter has to be modified to hold two values (database and virtual library). If just one parameter is used, the database id doesn't directly relate to one database file.
    • To apply the filter of a virtual library, the filter has to be translated into SQL-Terms. To use this, the existing sql statements might have to be modified.

    And if that works: allow to add virtual libraries into the database name. E.g. like this:

    $config['calibre_directory'] = '/volume1/books/@Programming'
    

    In combination with user-specific config-files, this would restrict certain users to certain libraries (e.g. kids to child books)

    The current code only reads the virtual library names and shows them as independent databases. No filtering or adjusted counting is done, yet.

    opened by Broele 28
  • /vendor/autoload.php missing ?

    /vendor/autoload.php missing ?

    I'm getting this error on apache logs [Thu Jun 28 2018] [:error] [pid 3342] [client] PHP Warning: require_once(/var/www/html/sex.com/public_html/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/sex.com/public_html/config.php on line 9

    opened by andrepradotf 25
  • failed to open specific .epub files

    failed to open specific .epub files

    Hi. I'm trying to open some of the .epub files which are in my calibre library. When pressing the "eye" icon beside the .epub file instead of opening the book ready to read in the new tab (like it usually works) it opens new tab with next error:

    Warning: fopen(/volume1/books/Alistier Krouli/Lunnoie ditia (979)/Lunnoie ditia - Alistier Krouli.epub): failed to open stream: Permission denied in /volume1/web/cops/resources/php-epub-meta/tbszip.php on line 53 Fatal error: Uncaught exception 'Exception' with message 'Failed to read epub file' in /volume1/web/cops/resources/php-epub-meta/epub.php:37 Stack trace: #0 /volume1/web/cops/epubreader.php(23): EPub->__construct('/volume1/books/...') #1 {main} thrown in /volume1/web/cops/resources/php-epub-meta/epub.php on line 37
    

    This happens with some of my .epub files while other work as expected. Also it doesn't show the cover of these books (Although they persist in the file and show up in Calibre).

    What is the reason of such a strange behavior?

    opened by drew1kun 22
  • twitter bootstrap

    twitter bootstrap

    hi just wondering it there chance you can integrate twitter bootstrap in to the script this would allow users to easily customise the theme also it has good support for mobile. http://twitter.github.io/bootstrap/

    enhancement 
    opened by da1nonly 18
  • COPS is broken / PHP error

    COPS is broken / PHP error

    The current (december 22nd) github version of COPS is broken.

    On a Debian Jessie server with Apache 2.4 and PHP 5.6 (latest versions from the repositories) COPS does not start / react:

    • browser screen remains white
    • Apache PHP error log: PHP Fatal error: require_once(): Failed opening required '/var/www/html/cops-dec/vendor/autoload.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/cops-dec/config.php on line 9 --> directory ./vendor does not exist
    • removing the offending line in config.php leads to other errors, so that seems not to be a quick solution.

    An older version of COPS (git cloned november 9th) works without any error message.

    opened by marioscube 16
  • Code cleanup (WIP)

    Code cleanup (WIP)

    This is a working snapshot of a complete overhaul of the COPS codebase with your merges from today included.

    Most packages are now external libs and pulled in by Composer (and its Autoloader). Scrutinizer checks code formatting (Symfony style). No more multiple classes in one PHP file. And some code fixes/cleanups (more to come).

    No functional changes were made to the code.

    Builds fine in my Travis and Scrutinizer.

    After merging, you have to fix the links in the README to point to your badges again.

    opened by mbirth 16
  • Custom folder on Synology: com.synocommunity.packages.cops.ini defaults

    Custom folder on Synology: com.synocommunity.packages.cops.ini defaults

    When installing the package on a Synology NAS with the Calibre db in a custom folder the installer correctly detects and updates the path in config_local.php, but ignores the default value for opne_basedir in /etc/php/conf.d/com.synocommunity.packages.cops.ini

    The values in override the values in com.synocommunity.packages.cops.ini override the settings in "Control Panel -> Web Services -> Web Applications Customise PHP open_base_dir", so the procedure described in https://github.com/seblucas/cops/wiki/Howto---Synology doesn't fix the problem.

    My suggestion id either to automatically set the open_base_dir in com.synocommunity.packages.cops.ini, or to update the How To and the message in checkconfig.php

    Thanks a lot for this project!

    bug 
    opened by Iciliop 16
  • NGINX + url rewriting = error 404 (NGINX bug?)

    NGINX + url rewriting = error 404 (NGINX bug?)

    I use COPS + Apache with my kobo e-reader without any problems.

    I thought I'd try COPS on NGINX to see if it's any faster on my hardware. It works like a charm except with $config['cops_use_url_rewriting'] = '1'; And I added: location /download/ { rewrite ^/download/(\d+)/(\d+)/..(.)$ /fetch.php?data=$1&db=$2&type=$3 last; rewrite ^/download/(\d+)/..(.)$ /fetch.php?data=$1&type=$2 last; break; } to a working NGINX config file (and rebooting etc.) but I still get the 404 error.

    What am I doing wrong? What do I have to add to COPS config files and or NGINX config files to make url_rewriting work?

    Edit: NGINX version 1.6.2 PHP 5.6.30 OS Debian Jessie 8.8 on VirtualBox / WIndows 7 - 32 bits

    opened by marioscube 15
  • Can't get COPS for Calibre working on Ubuntu 16.04 with PHP 7.1

    Can't get COPS for Calibre working on Ubuntu 16.04 with PHP 7.1

    Hello,

    On my Unbuntu 16.04, I installed calibre, nginx, PHP and COPS to use calibre with COPS.

    If I call http://mydomain.eu:55555, i would like to get my calibre-infos.

    But I get errors:

    • Check if PHP version is correct => OK (7.1.12-3+ubuntu16.04.1+deb.sury.org+1)
    • Check if GD is properly installed and loaded => Please install the php5-gd extension and make sure it's enabled
    • Check if Sqlite is properly installed and loaded => Please install the php5-sqlite extension and make sure it's enabled
    • Check if intl is properly installed and loaded => Please install the php5-intl extension and make sure it's enabled
    • Check if Normalizer class is properly installed and loaded => Please make sure intl is enabled in your php.ini
    • Check if Calibre database file exists and is readable => File /home/ubuntu/disk1/Calbib1/metadata.db not found, Please check

    I have tried to install several versions of PHP. Maybe there is a mess.

    At the moment, i would prefer to get the whole thing running with PHP version 7.1.

    1. How can I fix the errors?
    • maybe installing the missing extensions
    • i tried several methods. non was working.
    • but maybe, the error is not the missing php5-gd but something different?
    1. why is the system ist asking for php5, when the PHP-Version is 7.1.12? is this normal? is this "correct"?

    with best regards, Irv

    my system

    • Ubuntu 16.04
    • nginx 1.10.3
    • COPS 1.1.1
    • PHP 7.1, 7.0, 5.6
    • calibre 3.14

    my files (~/disk1/Calbib1)

    ubuntu@ip-172-31-19-142:~/disk1/Calbib1$ ls -ld meta* -rwxrwxr-- 1 ubuntu ubuntu 64000000 Jan 1 18:43 metadata.db -rwxrwxr-- 1 ubuntu ubuntu 12948 Dec 31 09:18 metadata_db_prefs_backup.json

    ubuntu@ip-172-31-19-142:~/disk1/Calbib1$ ls -ld Westall*// -rwxrwx--- 1 ubuntu ubuntu 557019 Dec 27 13:43 Westall, Robert/Funf Faden tief (5754)/cover.jpg -rwxrwx--- 1 ubuntu ubuntu 801446 Dec 27 13:43 Westall, Robert/Funf Faden tief (5754)/Funf Faden tief - Westall, Robert.epub -rwxrwx--- 1 ubuntu ubuntu 5414 Dec 27 13:43 Westall, Robert/Funf Faden tief (5754)/metadata.opf

    ubuntu@ip-172-31-19-142:/etc/nginx/sites-available$ ls -ld * -rw-r--r-- 1 root root 587 Jan 4 06:01 cops -rw-r--r-- 1 root root 2080 Jan 4 05:47 default

    ubuntu@ip-172-31-19-142:/etc/nginx/sites-enabled$ ls -ld * lrwxrwxrwx 1 root root 31 Jan 4 05:58 cops -> /etc/nginx/sites-available/cops

    my nginx-file with name cops in /etc/nginx/sites-available

    server {
            listen 55555;
            server_name <myip>:55555;
            root /var/www/cops;
            index index.php;
    
            fastcgi_pass_header Authorization;
    
            location / {
                    try_files $uri $uri/ =404;
            }
    
            location ~ \.php$ {
                fastcgi_pass unix:/run/php/php7.1-fpm.sock;
                include snippets/fastcgi-php.conf;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            }
    
            location ~ /\.ht {
                    deny all;
            }
    
            location /Calbib1 {
                  root /home/ubuntu/disk1;
                   internal;
            }
    }
    

    my config_local.php in /var/www/cops

    <?php
        if (!isset($config))
            $config = array();
    
        /*
         * The directory containing calibre's metadata.db file, with sub-directories
         * containing all the formats.
         * BEWARE : it has to end with a /
         */
        $config['calibre_directory'] = '/home/ubuntu/disk1/Calbib1/';
    
    
    
       /*
         * The URL to the calibre internal directory you specified in your nginx site
         * config file.
         */
        $config['calibre_internal_directory'] = '/Calbib1/';
    
    
    
        /*
         * Catalog's title
         */
        $config['cops_title_default'] = "COPS";
    
        /*
         * use URL rewriting for downloading of ebook in HTML catalog
         * See README for more information
         *  1 : enable
         *  0 : disable
         */
        $config['cops_use_url_rewriting'] = "0";
    
    
         /*
         * Wich header to use when downloading books outside the web directory
         * Possible values are :
         *   X-Accel-Redirect   : For Nginx
         *   X-Sendfile         : For Lightttpd or Apache (with mod_xsendfile)
         *   No value (default) : Let PHP handle the download
         */
        $config['cops_x_accel_redirect'] = "X-Accel-Redirect";
    
    
        /*
         * URL to access the COPS page
         */
        $config['cops_full_url'] = '<mydomain>.eu:55555';
    
        /*
         * Default timezone
         * Check following link for other timezones :
         * http://www.php.net/manual/en/timezones.php
         */
        $config['default_timezone'] = "America/Denver";
    
    
        $config['cops_basic_authentication'] = array('username' => 'xxx', 'password' => 'xxx');
    ubuntu@ip-172-31-19-142:~$
    

    status nginx.service

    ubuntu@ip-172-31-19-142:/etc/systemd/system/nginx.service.d$ sudo systemctl status nginx.service
    ? nginx.service - A high performance web server and a reverse proxy server
       Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
      Drop-In: /etc/systemd/system/nginx.service.d
               +-override.conf
       Active: active (running) since Thu 2018-01-04 07:30:42 CET; 3min 34s ago
      Process: 1324 ExecStartPost=/bin/sleep 0.1 (code=exited, status=0/SUCCESS)
      Process: 1318 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
      Process: 1296 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
     Main PID: 1323 (nginx)
        Tasks: 2
       Memory: 7.3M
          CPU: 22ms
       CGroup: /system.slice/nginx.service
               +-1323 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
               +-1326 nginx: worker process
    
    Jan 04 07:30:41 ip-172-31-19-142 systemd[1]: Starting A high performance web server and a reverse proxy server...
    Jan 04 07:30:42 ip-172-31-19-142 systemd[1]: Started A high performance web server and a reverse proxy server.
    ubuntu@ip-172-31-19-142:/etc/systemd/system/nginx.service.d$
    

    status PHP

    ubuntu@ip-172-31-19-142:/etc/systemd/system/nginx.service.d$ sudo systemctl status php7.1-fpm.service
    ? php7.1-fpm.service - The PHP 7.1 FastCGI Process Manager
       Loaded: loaded (/lib/systemd/system/php7.1-fpm.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2018-01-04 07:30:42 CET; 3min 11s ago
         Docs: man:php-fpm7.1(8)
     Main PID: 1298 (php-fpm7.1)
       Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
        Tasks: 3
       Memory: 37.9M
          CPU: 45ms
       CGroup: /system.slice/php7.1-fpm.service
               +-1298 php-fpm: master process (/etc/php/7.1/fpm/php-fpm.conf)
               +-1330 php-fpm: pool www
               +-1331 php-fpm: pool www
    
    Jan 04 07:30:41 ip-172-31-19-142 systemd[1]: Starting The PHP 7.1 FastCGI Process Manager...
    Jan 04 07:30:42 ip-172-31-19-142 systemd[1]: Started The PHP 7.1 FastCGI Process Manager.
    ubuntu@ip-172-31-19-142:/etc/systemd/system/nginx.service.d$
    

    netstat

    ubuntu@ip-172-31-19-142:~$ sudo netstat -ntlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      1291/calibre-server
    tcp        0      0 127.0.0.1:3350          0.0.0.0:*               LISTEN      1460/xrdp-sesman
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1337/sshd
    tcp        0      0 0.0.0.0:3389            0.0.0.0:*               LISTEN      1452/xrdp
    tcp        0      0 0.0.0.0:55555           0.0.0.0:*               LISTEN      1323/nginx -g daemo
    tcp6       0      0 :::80                   :::*                    LISTEN      1488/apache2
    tcp6       0      0 :::22                   :::*                    LISTEN      1337/sshd
    ubuntu@ip-172-31-19-142:~$
    

    /var/log/nginx/error.log

      thrown in /var/www/cops/base.php on line 1257" while reading response header from upstream, client: 5.159.0.139, server: myip:55555, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php5.6-fpm.sock:", host: "mydomain.eu:55555"
    2018/01/04 12:12:42 [error] 7097#7097: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Exception: Database <> not found. in /var/www/cops/base.php:1257
    Stack trace:
    #0 /var/www/cops/base.php(1272): Base::error(NULL)
    #1 /var/www/cops/base.php(1285): Base::getDb()
    #2 /var/www/cops/index.php(37): Base::checkDatabaseAvailability()
    #3 {main}
      thrown in /var/www/cops/base.php on line 1257" while reading response header from upstream, client: 5.159.0.139, server: myip:55555, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "mydomain.eu:55555"
    2018/01/04 12:12:42 [error] 7097#7097: *1 FastCGI sent in stderr: "PHP message: PHP Notice:  Undefined index: cops_server_side_render in /var/www/cops/base.php on line 18" while reading response header from upstream, client: 5.159.0.139, server: myip:55555, request: "GET /checkconfig.php?err=1 HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "mydomain.eu:55555"
    2018/01/04 12:12:43 [error] 7097#7097: *3 FastCGI sent in stderr: "PHP message: PHP Notice:  Undefined index: cops_server_side_render in /var/www/cops/base.php on line 18" while reading response header from upstream, client: 5.159.0.139, server: myip:55555, request: "GET /checkconfig.php?err=1 HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "mydomain.eu:55555"
    2018/01/04 12:23:15 [error] 7420#7420: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Exception: Database <> not found. in /var/www/cops/lib/Base.php:109
    Stack trace:
    #0 /var/www/cops/lib/Base.php(124): Base::error(NULL)
    #1 /var/www/cops/lib/Base.php(137): Base::getDb()
    #2 /var/www/cops/index.php(28): Base::checkDatabaseAvailability()
    #3 {main}
      thrown in /var/www/cops/lib/Base.php on line 109" while reading response header from upstream, client: 5.159.0.139, server: myip:55555, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "mydomain.eu:55555"
    2018/01/04 12:38:11 [error] 7420#7420: *12 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Exception: Database <> not found. in /var/www/cops/lib/Base.php:109
    Stack trace:
    #0 /var/www/cops/lib/Base.php(124): Base::error(NULL)
    #1 /var/www/cops/lib/Base.php(137): Base::getDb()
    #2 /var/www/cops/index.php(28): Base::checkDatabaseAvailability()
    #3 {main}
      thrown in /var/www/cops/lib/Base.php on line 109" while reading response header from upstream, client: 5.159.0.139, server: myip:55555, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "mydomain.eu:55555"
    ubuntu@ip-172-31-19-142:~$
    
    

    Screenshot of Error messages:

    screenshot

    opened by Irv007 13
  • Everythings works, but no covers showed

    Everythings works, but no covers showed

    Installed cops and it worked fine. Only one thing: there are no covers, at least no thumbnails. Clicking on the broken-link for the thumbnails shows the correct cover. How come?

    invalid 
    opened by lieuwe17 13
  • Authentication using config_local.username.php

    Authentication using config_local.username.php

    Since upgrading to 1.0.2 (from 1.0.0), I don't seem to be able to do user authentication using cops_basic_authentication

    What appears to be happening it seems to be reading the config_local.user.php file once, but then a second time not doing so, because it doesn't carry the PHP_AUTH_USER when it loads config a second time, and pulls in the blank cops_basic_authentication config array. I tested this by putting a default array in with bogus username and password, and then just above the check for username and password, dumping the contents of cops_basic_authentication. It shows in succession, the contents of the array in my custom user config file, and then the contents of the default one.

    Any idea what might have changed since 1.0.0? I don't see anything unusual in config.php

    Thanks,

    opened by WillowMist 12
  • FBReader download with wrong filename

    FBReader download with wrong filename

    Hello and a Happy Christmas !

    I am using COPS in combination with FBReader. $config['cops_use_url_rewriting'] = "1" is set and when I download a book on my PC or Chrome on my Android mobile, it is downloaded with the correct filename. When I download the same book in FBReader it is downloaded as "fetch.php?....".

    What am I doing wrong ?

    YOS, Kuzorra

    opened by Kuzorra22 5
  • Disable PHP output buffering when reading file contents (fixes #389)

    Disable PHP output buffering when reading file contents (fixes #389)

    Basically I was facing the same issue as in #389 and there was always the option of playing with the PHP options but I wonder if the buffering shouldn't be disabled altogether in this kind of process.

    So here the idea was to simply flush the output buffer and stop using it and then read the file contents.

    Two notes:

    1. In terms of performance I'm not a guru enough to be able to assess whether buffering adds a lot of value here. But there may be cases where it has so this could be the wrong path
    2. When opening the file in read mode a "read lock" was put on the file before reading the file size. By reading the file contents brutally without opening the file handle there is a risk for having inconsistent data (if file is changed basically between the reading of the file size and the reading of its contents). But that seemed farfetched to me.

    But I also may be missing something here :)

    opened by smaarn 0
  • Update fetch.php to lower memory consumption

    Update fetch.php to lower memory consumption

    On big eBooks like comic books you can hit the PHP memory limit. With this changes there is no need to raise the memory limit in php.ini. Also readfile is recommended in the php documentation instead of fpassthru for most cases so I changed it. Also if you download binary data make sure that there is no output after that therefore an explicit exit() at the end.

    opened by allandanton 0
  • Synology NAS with arm64

    Synology NAS with arm64

    Hello, I'm just starting to play around with my Synology, I managed to install docker and portainer, I have calibre-web running, but after installing cops I receive the error nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) I can't set ports with -p because I have to use docker in "host" mode, due to arm64 version limits, if I understood correctly. So, can someone help me to set the right ports for cops? I tried to change ports in container settings but whitout success 🙄 Thank you! 🤗 Valeria

    opened by Valek626 15
  • Can't download books with COPS, yet reading online is possible

    Can't download books with COPS, yet reading online is possible

    Hi, I installed COPS as a subdirectory of the folder web, and it starts alright, displaying all my books. Path of calibre-library is /volume1/books/calibre. Yet something must be wrong still as I cannot download a single book I have. But if I choose to read the book online in the browser it works alright - so where is my mistake?

    You can try out here for yourselves: mwcem.synology.me/cops

    Don't know what I'm doing wrong.

    opened by mwcem 13
  • Debugging and Customization

    Debugging and Customization

    I truly like this project, and as somewhat of an old programmer, am working to customize this to fit my needs.

    But I need to know what all the variables, and properties are.

    Here are some of the things I have added to my version:

    1. Added Authors, Series, Publishers and Tags with glyphicons to the top navigation.
    2. Added Home Glyphicon to the right of search box.
    3. Changed Home Link into breadcrumbs
    4. Tags, Series and Publisher Home Page now shows a tag cloud

    Things I would like to do:

    1. Being able to add and switch more themes
    2. Change the look and feel and what data to show on certain pages.
    3. Have the book div have links to tags and author
    4. have a built-in customizable ebook reader, that displays the book and allows me to go page by page.

    But to do that, I need to have a list of variables, properties, etc.

    Othewise I am just guessing based on code I read in the files.

    Thanks.

    opened by crosenblum 2
Releases(1.1.3)
  • 1.1.3(Jun 24, 2019)

    • Fixed an error with PHP > 7.2.X where create_function is deprecated, also fixed another error with PHP 7.3.X. Thanks to Turkish for the report.
    • Fixed the view button when URL Rewriting is enabled.
    • Fixed an error in epubreader with headers. thanks to worstje for the report.
    • Added a real logo for COPS. Thanks to horus68 for doing all the work ;).
    • Added a proper translation for _CLEAR_ text. Was reported for many year :(.
    • Added Galician translation. Thanks to Sadrarin Highland.
    • Added Afrikaan translation. Thanks to PetrusVermaak.
    • Updated Spanish, Basque, Italian, Dutch, French, Portuguese, Romanian, Russian, Swedish, Turkish. Thanks to the translators and horus68.
    Source code(tar.gz)
    Source code(zip)
    cops-1.1.3.zip(2.07 MB)
  • 1.1.2(Jun 26, 2018)

    • Fixed the download of Kepub with recent firmware from Kobo. Thanks to ospring for the report.
    • Fixed the cache headers. Thanks to CgX for the fix.
    • Added Bulgarian, Indonesian, Chinese (China and Taywan) translation. Check Transifex for the authors.
    • Added an open button to use automatically your prefered reader. Thanks to ttan.
    • Updated Hungarian, Ukranian, Polish, Spanish and Swedish translations. Check Transifex for the authors.
    • Updated a lot of documentation and checkconfig.php to better help users.
    • Upgraded to latest jQuery 1.12.X, Normalise 7.0, PHP Mailer 5.2.26, Font Awesome Free 5.0.13.
    Source code(tar.gz)
    Source code(zip)
    cops-1.1.2.zip(2.05 MB)
  • 1.1.1(May 3, 2017)

    • Fixed the handling of user specific configuration files. Thanks to marioscube, chadberg for the diagnostic / fix and Neil for the PR.
    • Changed the cog on the upper right to a magnifying glass icon. Thanks to horus68.
    • Added test on travis on PHP 5.4.
    • Added a way to specify the secure SMTP port. Thanks to ubupl.
    Source code(tar.gz)
    Source code(zip)
    cops-1.1.1.zip(1.86 MB)
  • 1.1.0(Apr 2, 2017)

    • Upgraded to PHPMailer 5.2.21.
    • Merged a huge PR that clean most of COPS source code. Thanks to Markus Birth for his work and his patience.
    • Updated German, Greek, Italian, Polish, Romanian, Russian, Turkish translations. Check Transifex for the authors.
    • Fixed a bad external dependency in login.html causing problem with HTTPS. Thanks to polytan02.
    • Fixed minor gui nitpick.
    • Added automatic redirection to the OPDS feed for many new Android apps (see #309). Thanks to horus68.
    • Added a configuration item to set the mail subject.
    Source code(tar.gz)
    Source code(zip)
    cops-1.1.0.zip(1.88 MB)
  • 1.0.1(Oct 15, 2016)

    • Fixed some type of custom column showing id instead of text - Thanks to Mike Schwörer.
    • Fixed the redirection to the OPDS catalog for Moon+ Reader.
    • Fixed the mail character encoding, now in UTF-8.
    • Fixed checkconfig.php to avoid sending content before headers. Thanks to Luke Stevenson.
    • Fixed server side rendering with custom columns.
    • Moved /icons to /images (Apache issues). Thanks to CgX.
    Source code(tar.gz)
    Source code(zip)
    cops-1.0.1.zip(932.58 KB)
  • 1.0.0(Jul 8, 2016)

    • Updated the OPDS icons to better looking ones. Thanks to Horus68.
    • Updated the README.md.
    • Updated Brazillian, French, Hungarian, Portuguese, Russian translations.
    • Added support of language and country code. This allow to have proper Brazil Portuguese and Portugal Portuguese.
    • Added Korean translation. Thanks to Jin, Heonkyu.
    • Added Romanian translation. Thanks to mtzro2003.
    • Added Greek translation. Thanks to George Litos.
    • Added Turkish Translation. Thanks to Yunus Emre Deligöz.
    • Added Serbian Translation. Thanks to Dalibor Vinkić.
    • Added the transliteration of search text. You can enable it with $config ['cops_normalized_search']. Thanks to George Litos.
    • Added Ebookdroid, Chunky and AlReader in the know OPDS clients. Thanks to Mike Ferenduros and Horus68.
    • Added some mime types for audio books.
    • Added the rewrite rule for IIS.
    • Added a now parameter to set the style ($config['cops_style']). Thanks to Pablo Santiago Blum de Aguiar.
    • Added a directory cache ($config['cops_thumbnail_cache_directory']) to store the resized thumbnails (should help on slow NAS). Thanks to O2 Graphics.
    • Added support of all kind of custom columns (see configuration file). Thanks to Mike Schwörer.
    • Fixed COPS so that it's completely embedded (no external resources to download needed anymore).
    • Fixed a Reflected XSS vulnerability.
    • Fixed the tag filters with Bootstrap. Thanks to Klaus Broelemann.
    • Fixed some COPS path errors with reverse proxy. Thanks to Benjamin Kitt.
    • Fixed the publication date (wasn't working for date before 1901).
    • Fixed the download file name (replace + by %20 to be RFC compliant).
    Source code(tar.gz)
    Source code(zip)
    cops-1.0.0.zip(932.34 KB)
  • 1.0.0RC3(Dec 29, 2014)

    • Fixed server side render with Bootstrap template (a proper unit test was also added).
    • Upgraded to latest doT-php, Typeahead 0.10.5, jquery-cookie 1.4.1, JQuery 1.11.1
    • Fixed book count with custom columns.
    • Updated Catalan, Dutch, French and Russian translations.
    • Added AZW3 to the format that can be sent to Kindle (by mail).
    • Fixed $config['cops_thumbnail_handling'] with bootstrap template.
    • Added Hungarian translation. Thanks to harunibn.
    • Added Ukrainian translation. Thanks to Anatoliy Zavalinich
    • Added full PHP password check (without any need from specific webserver configuration). Thanks to Mark Bond.
    • Added new IOS7 style with default template. Thanks to an anonymous source ;).
    • Fixed display of authors names for books with more than one author.
    • Added PHP version to checkconfig.php (will help debugging for me).
    • Added a configuration item ($config['cops_template']) to change the default template. Thanks to Shin.
    • Added a configuration item ($config['cops_language']) to force COPS language. Thanks to Sandy Pleyte.
    • Added a trick to have user based configuration, check https://github.com/seblucas/cops/wiki/User-based-config for more information. Thanks to Sandy Pleyte.
    • Changed the default sort order on books by author page to show books in a series before all other books.
    Source code(tar.gz)
    Source code(zip)
    cops-1.0.0RC3.zip(615.44 KB)
  • 1.0.0RC2(Jul 31, 2014)

    • Updated Italian, Spanish, Portuguese, Norwegian translations.
    • Added Polish translation. Thanks to macak_pl.
    • Added Haitian Creole translation. Thanks to Ian Macdonald & Jacinta.
    • Added Basque translation. Thanks to Turutarena.
    • Upgraded to JQuery 1.11.0, Magnific Popup 0.9.9, Normalize 3.0.1, Typeahead 0.10.2
    • Fixed search with accentuated characters on Internet Explorer.
    • Author can now be searched by sort or by name (Carroll, Lewis or Lewis Carroll will work).
    • Added a new bootstrap user interface.
    • Added correct mimetype for *.ibooks. Reported by Flowney.
    • Added an empty line at the end of .htaccess to make it easier to modify. Reported by Mariosipad.
    • Modified the README and checkconfig.php to check for php5-json. Reported by Mariosipad.
    • Handled properly the cancelling of a mail. Reported by coach0742.
    • Added an ugly hack to try to fix bad rendering with Kindle. Please report if it's better or not.
    Source code(tar.gz)
    Source code(zip)
    cops-1.0.0RC2.zip(607.09 KB)
  • 1.0.0RC1(Apr 3, 2014)

    • Updated English, Spanish, German, Italian, Portuguese, Dutch translation files. Huge thanks to all to the translators.
    • Added Swedish translation. Thanks to Bo Rosén.
    • Added Czech translation. Thanks to Zdenek Hadrava.
    • Added a lot of refactoring to simplify the code.
    • Added a lot of new unit tests.
    • Fixed a caching bug causing problems with IE.
    • Added an embedded Epub Reader based on Monocle. Thanks to all the beta testers.
    • Cleaned up a lot of stuff to prepare for bootstrap template. Note to all CSS hackers, the stylesheets are now in templates/default/styles.
    • Fixed the charset of most of the pages. Thanks to edent.
    • Added a new category : ratings. Thanks to Michael.
    • Fixed the URL rewriting in the OPDS stream, should fix file naming with FBReader. Reported by Rassie.
    • Fixed a confusion between author's name and author's sort. Reported by At_Libitum.
    • Fixed the style of the tag filters to show that they're clickable. Thanks to cycojesus.
    • Replaced | by space in author name.

    WARNING : The Synology package available here is still a work in progress hoping to be compatible with DSM 5. Please test it and report success or failure by creating an issue.

    Source code(tar.gz)
    Source code(zip)
    cops-1.0.0RC1.zip(595.15 KB)
    cops_noarch_1.0.0RC1-1.spk(620.00 KB)
  • 0.9.0(Jan 28, 2014)

    • Add a lot of unit testing. I hope it will limit the risks of regression.
    • Added a "smart / autocomplete" search.
    • Updated the way locales are handled. Should be easier to add new languages.
    • Fixed display of Cyrillic characters.
    • Upgraded doT to version 1.0.1, Magnific-Popup to 0.9.8, Normalize.css to 2.1.3, Jquery-cookie to 1.4.0.
    • Fixed OPDS stream validity. Reported by Didier.
    • Added a new check in checkconfig.php to detect case problem between the actual path and the path stored in Calibre database. Try checkconfig.php?full=1. Reported by Ruud.
    • Fixed the display of the rating stars with Chrome. Thanks to At_Libitum.
    • Added a new parameter ($config['cops_titles_split_first_letter']) to avoid splitting the books by first letter. Thanks to At_Libitum.
    • Fixed non compliant OPDS search (for Stanza, Moon+ Reader, ...). Reported by At_Libitum.
    • Fixed the redirection in case the Calibre database is not found. Reported by At_Libitum
    • Changed .htaccess to allow the use of password protected catalogs with Sony's eReader (PRS-TX). Thanks to Ruud for the beta testing.
    • Updated Chinese, German, Norwegian, Portuguese, Russian translations. Huge thanks to all the translators.
    • Fixed a small problem : If a book had no summary the cover could be cut.
    • Fix COPS on Internet Explorer 9. Reported by At_Libitum.
    • Added publishers in home categories / search / autocomplete search.
    • Added a new configuration item ($config ['cops_ignored_categories']) to ignore some categories (author, tag, publisher, ...) in home screen and searches. It's also available in the "Customize UI" page.
    • Updated .htaccess to allow downloading books with a password protected COPS on a Sony PRS-TX. Reported by Ruud.
    • Changed the default search to search by categories also (should help with OPDS). Thanks to At_Libitum.
    • Fixed the tag filtering in the HTML catalog when two tags starts by the same word. Reported by Tyler.
    Source code(tar.gz)
    Source code(zip)
    cops-0.9.0.zip(522.19 KB)
  • 0.6.2(Jan 28, 2014)

    • Added server side rendering for devices like PRS-TX / Kindle / Cybook. Thanks to all the testers.
    • Added a configuration item to tweak how thumbnail are handled.
    • Fixed the click on cog on IOS. Thanks to sb domo.
    • Added dashboard icons / standalone mode for IOS. Thanks to sb domo.
    • Fixed a regression about custom favicon.ico. Thanks to Tyler.
    • Fixed another regression about COPS's version in the about box. Reported by Ian.
    • Upgraded Magnific Popup to v0.9.5.
    • Added a style for IPhone. Thanks to sb domo.
    • Added Portuguese translation. Thanks to Pablo Aguiar.
    • Fixed rendering on Internet Explorer < 9.0.
    Source code(tar.gz)
    Source code(zip)
    cops-0.6.2.zip(499.08 KB)
  • 0.6.1(Jan 28, 2014)

    • Properly close the lightbox when clicking in a link. Reported by le_.
    • Fix the book by languages list when the language is not found in the resources. Reported by le_.
    • Fix the string for Portuguese. Reported by le_.
    • Add again the series Index in the book list. Reported by fatzgenfatz.
    Source code(tar.gz)
    Source code(zip)
    cops-0.6.1.zip(424.15 KB)
  • 0.6.0(Jan 28, 2014)

    • COPS HTML catalog now use templated client side rendering. You can build your own template if you want. Should be a lot faster.
    • Fancybox has been replaced by Magnific Popup, it seems faster.
    • Added a way to send book by mail (to send to Kindle or to send to your friends).
    • Added expires instruction in .htaccess (won't crash if you haven't enabled mod_expires).
    • Upgrade to JQuery 1.10.2.
    • Changed the way thumbnails are handled to offer greater visual quality (especially on high pixel density devices : Retina, Nexus, ...).
    • Changed all icon by a vectorial font (again better visual quality).
    • Added a way to filter books by tags.
    • Added a login page (login.html) to allow access to a password protected COPS on a Kobo ereader (that does not support basic auth).
    • Fixed cookie expiry date.
    • Added a default web.config for IIS installation.
    • The eink style doesn't use shadow anymore.
    • Fixed the link to the series in book detail.
    Source code(tar.gz)
    Source code(zip)
    cops-0.6.0.zip(423.96 KB)
  • 0.5.0(Feb 20, 2014)

    • Upgrade COPS UI to HTML5 / CSS3 to hopefully make it prettier. Most of the code was contributed by Thomas Severinsen.
    • Add the number of books in each databases (when multiple database is enabled).
    • Add Norwegian Bokmål strings. Thanks to Rune Mathisen for the pull request.
    • Add a split by language of catalog. Thanks to Puiu Ionut for the pull request.
    • You can now change the theme and fancybox use on all your devices (You have to enable cookies).
    • Add an eink theme. Thanks to Gregory Bodin for the code.
    Source code(tar.gz)
    Source code(zip)
    cops-0.5.0.zip(213.94 KB)
  • 0.4.0(Feb 20, 2014)

    • Add multiple database support. Check the documentation of $config['calibre_directory'] in config-default.php to see how to enable it.
    • Include jquery library in COPS's repository to be sure that COPS will work on LAN (without Internet access).
    • Prepare the switch to HTML5. Thanks to Thomas Severinsen for most of the code.
    • Update the locale strings to be more strict with plurals. Thanks to Tobias Ausländer for the code.
    • If Fancybox is not enabled ($config['cops_use_fancyapps'] = "0") then it's not used at all (even in the about box).
    • Fix book comments if it contains UTF8 characters. Reported by Alain.
    • Link to the book permalink was not working correctly in some cases. Reported by celta.
    • Moved some external resources to a resources directory.
    • Add chinese translation. Thanks to wogong for the pull request.
    Source code(tar.gz)
    Source code(zip)
    cops-0.4.0.zip(154.53 KB)
  • 0.3.4(Feb 20, 2014)

  • 0.3.3(Feb 20, 2014)

    • Fix catalog if book summary contains bad HTML again :(.
    • Upgrade to Fancybox 2.4.0 and JQuery 1.9.1.
    • Search is now dependant on the page you're in. For now if you're on author page it'll look for author name.
    • Update checkconfig to check if the database provided comes from Calibre.
    • Update to latest php-epub-meta should fix the metadata update with Epub.
    • Fix OPDS catalog with Ibis Reader. It didn't like empty language.
    Source code(tar.gz)
    Source code(zip)
    cops-0.3.3.zip(119.10 KB)
  • 0.3.2(Feb 20, 2014)

    • Add dutch translation. Provided by Northguy.
    • Fix an ugly bug introduced in 0.3.1. Reported by mariosipad.
    • Small fixes/enhancement to the update metadata tools :
      • The book's name is Author - Title.epub
      • Add the Calibre uuid so that the book is automatically recognised by Calibre.
      • Update the cover
    • Fix display of the HTML catalog on Kobo's browser.
    • Enable kepub.epub download with cover fix (enable with $config['cops_provide_kepub']).
    • Hopefully fix browsing with PRS-T1. Thanks to Northguy.
    • Hopefully fix the OPDS catalog when the summary is full of HTML crap.
    • Merged 3 patches from Tyler J. Wagner :
      • Detect empty publication date set in Calibre to avoid having (0101) as publication year.
      • Don't print "Languages" if there are none defined.
      • Don't print the tag string if there's no tags.
    • If an OPDS client try to access index.php it will be automatically redirected to feed.php.
    • Move the search & sort tool box to a new line (also fix a w3c error).
    Source code(tar.gz)
    Source code(zip)
    cops-0.3.2.zip(118.25 KB)
  • 0.3.1(Feb 20, 2014)

    • Add Facets to the OPDS catalog (check config item cops_books_filter). So far the only OPDS client that support facets are Mantano Reader and Bluefire
    • Fix book sort in some list. Patch provided by Tyler J. Wagner.
    • Update .htaccess to check if Xsendfile is available. Thanks to Gaspine for the patch.
    • Add basic support of custom columns. Check the following config item : cops_calibre_custom_column
    • Usage of X-Accel-Redirect / X-Sendfile is not necessary anymore. Warning all Nginx users who wants to still use X-Accel-Redirect must add $config['cops_x_accel_redirect'] = "X-Accel-Redirect" in their config_local.php
    • Fix COPS on IIS / Windows. Reported by Kevnancy.
    • Simplified config_default.php
    • Add a new config_local.php.example with the minimal configuration item to change.
    Source code(tar.gz)
    Source code(zip)
    cops-0.3.1.zip(223.36 KB)
  • 0.3.0(Feb 20, 2014)

    • Add a config item to avoid using Fancyapps (pop-ups). Reported by mcister and Northguy.
    • Update documentation of .htaccess. Thanks to Stephane.
    • Add a config item to specify a custom icon. Based on a patch by Tyler J. Wagner.
    • Better handling of content type for book. Reported by Morg.
    • Upped the size of thumbnails for OPDS. They look way better with Mantano.
    • Add language in OPDS feed (shown in Mantano for example).
    • Update metadata on downloaded epub. Disabled by default (check config item cops_update_epub-metadata).
    • New Catalan translation provided by David Ciscar Presas.
    • Add a permalink to books, that way direct link to books can be shared. Reported by mcister and Tyler J. Wagner.
    • Add checkconfig.php that should allow to better detect the configuration problem (page in english only for now).
    • Fix some plural strings / some missing title. Reported by David Ciscar Presas.
    • Add an hint about the OPDS catalog in the HTML catalog.
    Source code(tar.gz)
    Source code(zip)
    cops-0.3.0.zip(110.30 KB)
  • 0.2.3(Feb 20, 2014)

    • Add a .htaccess to make it easier to use with Apache
    • Fix a typo in book download. Reported by jillmess
    • Update localization (thanks to Calibre2Opds)
    • Add some missing information from Calibre (language, rating for now). Reported by mcister
    • Upgrade Fancybox to 2.1.3
    Source code(tar.gz)
    Source code(zip)
    cops-0.2.3.zip(91.90 KB)
  • 0.2.2(Feb 20, 2014)

    • Changed JQuery URL to https (thanks to Dan Greve for the patch)
    • Added paging to both OPDS and HTML catalog (use new config item cops_max_item_per_page)
    • lots of code refactoring
    • Authors are now splitted by first letter, this is the new default. You can go back to the old way with the config item cops_author_split_first_letter (reported by Northguy)
    • Fix the link to books starting by special characters (reported by vinpel)
    • Upgrade to Fancyapps 2.1.0. I had to adapt the CSS so maybe it'll display better in PRS-T1
    • Add an about box on the HTML catalog which show the current version
    Source code(tar.gz)
    Source code(zip)
    cops-0.2.2.zip(89.85 KB)
  • 0.2.1(Feb 20, 2014)

    • Fix one last error (hopefully) in link generation (thanks to gaspine)
    • Add Sony PRS-T1 to the list of E-Ink device (thanks to Northguy)
    • Fix another HTML special characters problem (thanks to NeilBryant)
    • Add an ugly config parameter to allow search in non-compliant OPDS reader (thanks to Don Caruana and David Lee)
    Source code(tar.gz)
    Source code(zip)
    cops-0.2.1.zip(92.36 KB)
  • 0.2.0(Feb 20, 2014)

    • Fix all rewriting rule I forgot to change it in last release
    • Fix <hr> in book comment (thanks to jillmess)
    • Fix cover zoom in HTML catalog (you can also navigate through cover with keyboard)
    • Simplify Fancybox transition for e-Ink devices (for now Kobo and Kindle)
    Source code(tar.gz)
    Source code(zip)
    cops-0.2.0.zip(90.52 KB)
  • 0.1.1(Feb 20, 2014)

    • A lot of bug fixes in HTML catalog
    • Fixed the book comment in OPDS (broken in some rare case)
    • Fixed handling of HTML reserved characters
    • Changed book OPDS id to use an UUID (thanks to ilovejedd for the bug report)
    • Add new config item for the default timezone (thanks to gaspine)
    • Better handling of missing covers
    • Should support every book format supported by Calibre (thanks to Artem)
    • URL rewriting is off by default for the HTML catalog
    • Add some documentation about URL rewriting (thanks to gaspine and Christophe)
    • Tested and ready to use with PHP5.4
    Source code(tar.gz)
    Source code(zip)
    cops-0.1.1.zip(91.38 KB)
  • 0.1.0(Feb 20, 2014)

  • 0.0.4(Feb 20, 2014)

    • More code refactoring to simplify code.
    • Changed OPDS Page id to match Calibre2Opds
    • Add icons to author, serie, tags and recent items (there is config item to disable it)
    • Fixed author URL
    • Added publishing date (works on Mantano)
    • Added Tags support
    Source code(tar.gz)
    Source code(zip)
    cops-0.0.4.zip(37.44 KB)
  • 0.0.3(Feb 20, 2014)

    • Fixed many things blocking opensearch from working
      • There was a bug introduced in 0.0.2
      • The URL can't be relative for Mantano reader, so I added a configuration item.
    • I continued the refactoring to bring HTML to COPS
    • Thumbnails have bigger size (I'll add a configuration item later)
    • Add headers to help caching image and thumbnail to the browser
    Source code(tar.gz)
    Source code(zip)
    cops-0.0.3.zip(26.08 KB)
EBook-Apps - The eBook Apps is a web application that helps you browse ebooks from anywhere using your smartphone and laptop.

⚡️ eBook Apps The eBook Apps is a web application that helps you browse ebooks from anywhere using your smartphone and laptop. ?? Getting Started To s

Ahmad Fauzy 32 Nov 14, 2022
X1 - A very simple web based note solution that's designed to serve as my second brain.

X1 A very simple web based note solution that's designed to serve as my second brain. Starting Server To start the tool simply clone the repo and then

Joel Dare 118 Dec 28, 2022
The light version of NexoPOS 4.x, which is a web-Based Point Of Sale (POS) System build with Laravel, TailwindCSS, and Vue.Js.

About NexoPOS 4.x NexoPOS 4 is a free point of sale system build using Laravel, TailwindCSS, Vue and other open-source resources. This POS System focu

Blair Jersyer 402 Jan 7, 2023
Small Library to Serve Images in PHP in a Better Way (Resize, Compress) with Caching Support

A library for serving images and optimizing, changing their sizes, this library uses the caching feature, and in addition, it is very fast and small in size. In addition to these features, this library also optimizes images.

Developix 9 Oct 18, 2022
This packages enables the ability to serve file streams in a smart way

A blade component for easy image manipulation Want to serve private hosted images without the need to code your own logic ? Want to resize your images

Dieter Coopman 205 Dec 19, 2022
An alternative Redis session handler for PHP featuring per-session locking and session fixation protection

RedisSessionHandler An alternative Redis session handler featuring session locking and session fixation protection. News phpredis v4.1.0 (released on

Marcel Hernandez 117 Oct 19, 2022
BreadBooru is a light, quick, and easy to setup imageboard with themes, images, and video support

BreadBooru a bad imageboard, that has nothing to do with (dan/gel)booru, and yet still has booru in the name BreadBooru is a light, quick, and easy to

bread 2 Jan 22, 2022
Highly customizable alternative to var_export for PHP code generation

PHP Variable Exporter PHPEncoder is a PHP library for exporting variables and generating PHP code representations for said variables similar to the bu

Riikka Kalliomäki 71 Dec 30, 2022
html-sanitizer is a library aiming at handling, cleaning and sanitizing HTML sent by external users

html-sanitizer html-sanitizer is a library aiming at handling, cleaning and sanitizing HTML sent by external users (who you cannot trust), allowing yo

Titouan Galopin 381 Dec 12, 2022
A self-hosted alternative to putting your code snippets on Gist.

WP-Gistpen Contributors: JamesDiGioia Donate link: http://jamesdigioia.com/ Tags: gist, code snippets, codepen Requires at least: 5.2 Requires PHP: 5.

Intraxia 71 Nov 15, 2022
Alternative to tmpfile() function

TmpFile Alternative to tmpfile() function. Installation You can install the latest version via Composer: composer require denisyukphp/tmpfile This pa

Aleksandr Denisyuk 22 Sep 7, 2022
An article about alternative solution for convert object into a JSON Object for your api.

Do we really need a serializer for our JSON API? The last years I did build a lot of JSON APIs but personally was never happy about the magic of using

Alexander Schranz 1 Feb 1, 2022
An alternative to run cron jobs that uses simple HTTP requests

SilverStripe Simple Jobs An alternative to run cron jobs that uses simple HTTP requests. This module require SilverStripe CronTask. Why? Configuring c

Thomas Portelange 1 Jul 4, 2022
Ethereal Billing System is meant to be used as a personal alternative to WHMCS.

Ethereal Billing System is meant to be used as a personal alternative to WHMCS. In no way is this as good or even better than WHMCS apart from the fact that is free and open source to the public.

Qrow 8 Dec 31, 2022
This project processes a small database with php all on a web server. This project uses XAMPP to run the web server and the database.

PHP-introduction This project processes a small database with php all on a web server. This project uses XAMPP to run the web server and the database.

Tyler Jacques 1 Jan 6, 2022
iOrder is a light weight prototype for a order processing MIS.

Order Processing MIS. iOrder is a light weight prototype for a order processing MIS. Features Centralized order management Merchants definitely benefi

MartDevelopers Inc 4 Feb 8, 2022
Inventory manager - Light Bootstrap Dashboard

Light Bootstrap Dashboard is an admin dashboard template designed to be beautiful and simple. It is built on top of Bootstra

Ranaivonampoizina Mikajy 1 Nov 17, 2021
A light-weight RPC implement of google protobuf RPC framework.

sofa-pbrpc A light-weight RPC implementation of Google's protobuf RPC framework. Wiki: https://github.com/baidu/sofa-pbrpc/wiki Features High performa

Baidu 2.1k Dec 10, 2022
light weight (maybe) phpmicro build system

lwmbs 一个 ^ 名字很奇怪的micro/cli构建系统,理论上不会有很多人看到这个项目所以无所谓了 用法 # prepare # arch (glibc/musl dev only) pacman -S base-devel cmake \ vim \ brotli \

Yun Dou 51 Jan 9, 2023