Example #1
0
DesktopDevice::DesktopDevice() : IDevice(Core::Id(DESKTOP_DEVICE_TYPE),
                                         IDevice::AutoDetected,
                                         IDevice::Hardware,
                                         Core::Id(DESKTOP_DEVICE_ID))
{
    setDisplayName(QCoreApplication::translate("ProjectExplorer::DesktopDevice", "Local PC"));
    setDeviceState(IDevice::DeviceStateUnknown);
    const QString portRange =
            QString::fromLatin1("%1-%2").arg(DESKTOP_PORT_START).arg(DESKTOP_PORT_END);
    setFreePorts(Utils::PortList::fromString(portRange));
}
Example #2
0
int main(int argc, char **argv) 
{
    wiringPiSetup();

    pinMode(PIN, OUTPUT);
    digitalWrite(PIN, LOW);

    printf("Pale yellow-green gas.\n\n[*] Listening on port %i.\n", PORT);

    int sockfd = socket(AF_INET, SOCK_STREAM, 0);

    if (sockfd < 0)
    {
        fprintf(stderr, "[!] Cannot open socket.\n");
        exit(1);
    }

    struct sockaddr_in serv_addr;
    memset(&serv_addr, 0, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = INADDR_ANY;
    serv_addr.sin_port = htons(PORT);

    if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
    {
        fprintf(stderr, "[!] Cannot bind socket.\n");
        exit(1);
    }

    listen(sockfd, 5);

    while (true)
    {
        struct sockaddr_in client_addr;
        socklen_t client_addr_len = sizeof(client_addr);

        int clientfd = accept(sockfd, (struct sockaddr *)&client_addr, &client_addr_len);

        if (clientfd >= 0)
        {
            char buffer[255];
            memset(buffer, 0, sizeof(buffer));
            
            int len = read(clientfd, buffer, sizeof(buffer));

            if (len >= (7+1))
            {
                if (buffer[6] == '/')
                {
                    char letter = toupper(buffer[5]);
                    bool state = (buffer[7] == '1');

                    printf("[:] Turned device %c %s.\n", letter, ((state) ? "on" : "off"));
                    setDeviceState(letter, state);

                    // respond to avoid error
                    write(clientfd, MESSAGE, strlen(MESSAGE));
                }
            }

            else
            {
                printf("[*] Something went wrong reading from the client.\n");
            }

            close(clientfd);
        }

        else
        {
            printf("[*] Something went wrong accepting a client.\n");
        }
    }
}