Kroko Just another WordPress weblog

March 7, 2014

Linux usbreset

Filed under: Linux — admin @ 10:35 am
Force Linux's USB stack to perform a port reset and re-enumerate a device using
 usbfs.
Note however, that reset followed by re-enumeration is _not_ the same thing as
 power-cycle followed by reconnect and re-enumeration.

Run the following commands in terminal:

  1. Compile the program:
    $ cc usbreset.c -o usbreset
    
  2. Get the Bus and Device ID of the USB device you want to reset:
    $ lsusb
    Bus 004 Device 002: ID 19d2:0016 ZTE WCDMA Technologies MSM
    Make our compiled program executable:
    
  3. $ chmod +x usbreset
    
  4. Execute the program with sudo privilege; make necessary substitution for <Bus>
  5.  and <Device> ids as found by running the lsusb command:
    $ sudo ./usbreset /dev/bus/usb/004/002  

code:

/* usbreset -- send a USB port reset to a USB device */

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>

#include <linux/usbdevice_fs.h>

int main(int argc, char **argv)
{
    const char *filename;
    int fd;
    int rc;

    if (argc != 2) {
        fprintf(stderr, "Usage: usbreset device-filename\n");
        return 1;
    }
    filename = argv[1];

    fd = open(filename, O_WRONLY);
    if (fd < 0) {
        perror("Error opening output file");
        return 1;
    }

    printf("Resetting USB device %s\n", filename);
    rc = ioctl(fd, USBDEVFS_RESET, 0);
    if (rc < 0) {
        perror("Error in ioctl");
        return 1;
    }
    printf("Reset successful\n");

    close(fd);
    return 0;
}

March 5, 2014

.htaccess file to block IP’s coming from Nginx reverse proxy

Filed under: Cpanel — admin @ 9:16 pm

If you have a Nginx reverse proxy in front of your Apache webserver the .htaccess format is:

# ALLOW USER BY IP
order deny,allow
SetEnvIF X-Forwarded-For "1.2.3.4" DenyIP
SetEnvIF X-Forwarded-For "10." DenyIP
Deny from env=DenyIP
 

You must use X-Forward or it will not work unless the reverse proxy is setup in a certain way. As you can see, just update the IP’s you want blacklisted and they will be blocked. Yes, you can do the same thing with a firewall, but webmasters don’t have control of those.

Why?
The reason I did this recently is because of a Nginx + cPanel server setup running shared hosting. When a domain gets caught spamming due to insecure scripts or it’s getting hammered by an exploit, it is best to suspend the domain. Yes, but then when the client wants to work on it, they can’t.

Powered by WordPress